ProProfs Quiz Maker Rest API Guide
ProProfs lets you use the REST API to register, authenticate, and track learners for your courses and quizzes.
This API application facilitates three distinct processes:
1. Registering new users in a classroom
2. Tracking user progress for each assignment, and
3. Enabling classroom user authentication
Advantages of REST API:
-
Developers enjoy flexibility as REST can handle multiple call types.
-
It uses less bandwidth and provides fast execution.
-
It facilitates autonomous development across various parts of the project.
In this article, you’ll learn,
1. How to register new users in a classroom
2. How to track user progress for each assignment
3. Hot to enable classroom user authentication
Register New User In Classroom
NEW VERSION
Endpoint URL:
The endpoint URL given below is used to call the Rest API. POST will be used as the request method. JSON will be your request format.
Request Parameters
Name | Required | Type | Description |
---|---|---|---|
token | Yes | String | Your private API key for the FAQ. The API key is available at: Settings > In-App Help > API key |
username | Yes | String | ProProfs username |
Yes (Either Email or ID is required) | String | User’s unique Email | |
id | Yes (Either Email or ID is required | String | User’s unique ID |
fname | No | String | First name of the user |
lname | No | String | Last name of the user |
password | No | String | Password for the user to log in under a classroom. If missing, an auto-generated password will be assigned. |
phone | No | String | Phone No. of user |
address | No | String | User’s address |
city | No | String | City |
state | No | String | State |
country | No | String | Country |
zip | No | String | Zip |
status | No | String | Status ("active" / "inactive" / "delete") |
expire | No | String | Date when the user's access will expire. Date format should be mm/dd/yyyy |
assignments | No | Object |
URL encoded link of the assignment.
Sample quiz assignment link: https://www.proprofs.com/quiz-school/ugc/story.php?title=customer-service-training-quiz-template-3334wt
URL encoded version: https%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fugc%2Fstory.php%3Ftitle%3Dcustomer-service-training-quiz-template-3334wt
Sample course assignment link: https://www.proprofs.com/training/course/?title=business-training
URL encoded version: https%3A%2F%2Fwww.proprofs.com%2Ftraining%2Fcourse%2F%3Ftitle%3Dbusiness-training
Sample Learning Path Private Code: 162XX9XX
|
group | No | Object | You can include up to 5 groups while registering the user. |
Sample Code | JSON
Accept: application/json
Content-Type: application/json
{
"token":"*****7edf67d0a*****aca630b0*****",
"username":"YourProProfsUserName",
"email":"john@proprofs.com",
"id":"johndlabs100",
"password":"YourPassword",
"fname":"John",
"lname":"Smith",
"phone":"1111111111",
"address":"32E, John Corps, Main ST",
"city":"Phoenix",
"State":"Arizona",
"country":"USA",
"zip":"85705",
"expire":"12/31/2025",
"status":"active",
"assignments":{
"assignment1":"https%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fugc%2Fstory.php%3Ftitle%3Dcustomer-service-training-quiz-template-3334wt",
"assignment2":"http%3A%2F%2Fwww.proprofs.com%2Ftraining%2Fcourse%2F%3Ftitle%3Dethics-training-in-the-workplace_41",
"assignment3":"162XX9XX"
},
"group":{
"group1":{
"group_name":"gr-dlabs001",
"group_status":"active",
"assignments":{
"assignment1":"https%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fugc%2Fstory.php%3Ftitle%3Dcustomer-service-training-quiz-template-3334wt",
"assignment2":"http%3A%2F%2Fwww.proprofs.com%2Ftraining%2Fcourse%2F%3Ftitle%3Dethics-training-in-the-workplace_41",
"assignment3":"162XX9XX"
},
"is_group_admin":1,
"can_add_new_user":1,
"can_assign_user_to_group":1,
"can_assign_assignments":1,
"can_grade_reports":1,
"can_remove_user_from_group":1,
"can_delete_user":1,
"is_part_of":1,
"subgroup":{
"subgroup1":{
"subgroup_name":"subgr-dlabs001",
"subgroup_status":"active",
"assignments":{
"assignment1":"https%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fugc%2Fstory.php%3Ftitle%3Dcustomer-service-training-quiz-template-3334wt",
"assignment2":"http%3A%2F%2Fwww.proprofs.com%2Ftraining%2Fcourse%2F%3Ftitle%3Dethics-training-in-the-workplace_41",
"assignment3":"162XX9XX"
},
"is_group_admin":1,
"can_add_new_user":1,
"can_assign_user_to_group":1,
"can_assign_assignments":1,
"can_grade_reports":1,
"can_remove_user_from_group":1,
"can_delete_user":1,
"is_part_of":1
},
"subgroup2":{
"subgroup_name":"subgr-dlabs002",
"subgroup_status":"inactive",
"assignments":{
"assignment1":"https%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fugc%2Fstory.php%3Ftitle%3Dcustomer-service-training-quiz-template-3334wt",
"assignment2":"http%3A%2F%2Fwww.proprofs.com%2Ftraining%2Fcourse%2F%3Ftitle%3Dethics-training-in-the-workplace_41",
"assignment3":"162XX9XX"
},
"is_group_admin":1,
"can_add_new_user":1,
"can_assign_user_to_group":1,
"can_assign_assignments":1,
"can_grade_reports":0,
"can_remove_user_from_group":1,
"can_delete_user":0,
"is_part_of":1
}
}
},
"group2":{
"group_name":"gr-dlabs002",
"group_status":"inactive",
"assignments":{
"assignment1":"https%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fugc%2Fstory.php%3Ftitle%3Dcustomer-service-training-quiz-template-3334wt",
"assignment2":"http%3A%2F%2Fwww.proprofs.com%2Ftraining%2Fcourse%2F%3Ftitle%3Dethics-training-in-the-workplace_41",
"assignment3":"162XX9XX"
},
"is_group_admin":0,
"can_add_new_user":0,
"can_assign_user_to_group":0,
"can_assign_assignments":0,
"can_grade_reports":0,
"can_remove_user_from_group":0,
"can_delete_user":0,
"is_part_of":0
}
}
}
The request JSON object contains information about the user, group, subgroup and the courses that are to be assigned. Since a JSON string is big, it’s better we divide it into different chunks for better understanding.
Request Parameters for user information
Request Parameters for the group information
Name | Required | Type | Description |
---|---|---|---|
group_name | No | String | The name of the group. If the group already exists, the user will get assigned to the group. Otherwise, a new group will be created and then the user will assign it. |
group_status | No (default: active) | Boolean | The value should be active or inactive. The group with inactive status will not allow classroom access to their members (users). |
assignments | No | Object |
The list of quizzes and course links that you want to assign to the group. The link should be URL encoded and the total number of assignments shouldn't exceed more than 50. The assignment limit of 50 is applicable globally on the request. So, no matter whether we have consumed all 50 assignments to a group or divided them among multiple groups/subgroups/users. |
is_group_admin | No (default: 0) | Boolean | The value should be 0 or 1. Status 1 will make this user a group administrator for the group. |
can_add_new_user | No (default: 0) | Boolean | The value should be 0 or 1. If the status is set to 1, the user (group administrator) will have permission to add a new user from the web portal and assign that user to the group. |
can_assign_user_to_group | No (default: 0) | Boolean | The value should be 0 or 1. If the status is set to 1, the user (group administrator) can see the list of users available in the classroom and assign them to the group. |
can_assign_assignments | No (default: 0) | Boolean | The value should be 0 or 1. With status 1, the user (group administrator) can add assignments to the group. |
can_grade_reports | No (default: 0) | Boolean | The value should be 0 or 1. With status 1, the user (group administrator) can grade reports. |
can_remove_user_from_group | No (default: 0) | Boolean | The value should be 0 or 1. If the status is set to 1, the user (group administrator) can remove members from the group. |
can_delete_user | No (default: 0) | Boolean |
The value should be 0 or 1. The user (group administrator) with status 1 will have permission to delete the user from the classroom. Note: Delete is permanent and you'll not be able to get it back once deleted. |
is_part_of | No (default: 0) | Boolean | The value should be 0 or 1. Status 1 will make this user a member of the group. |
subgroup | No (default: 0) | Object | You can include up to 25 subgroups while registering the user. The subgroup limit of 25 is applicable globally on the request. So, no matter whether you have consumed all subgroups within a group or divided among the multiple groups. |
Request Parameters for the subgroup information
Name | Required | Type | Description |
---|---|---|---|
subgroup_name | No (default: 0) | String | The name of the subgroup. If the subgroup exists, the user will be assigned to the subgroup. Otherwise, a new subgroup will be created and then the user will get assigned to it. |
subgroup_status | No (default: active) | String | The value should be active or inactive. The subgroup with inactive status will not allow classroom access to their members (users). |
assignments | No | Object |
The list of quizzes and course links that you want to assign to the subgroup. The link should be URL encoded and the total number of assignments shouldn't exceed more than 50. The assignment limit of 50 is applicable globally on the request. So, no matter whether we have consumed all 50 assignments to a group or divided them among multiple groups/subgroups/users. |
is_group_admin | No (default: 0) | Boolean | The value should be 0 or 1. Status 1 will make this user a group administrator for the subgroup. |
can_add_new_user | No (default: 0) | Boolean | The value should be 0 or 1. If the status is set to 1, the user (group administrator) will have permission to add a new user from the web portal and assign that user to the subgroup. |
can_grade_reports | No (default: 0) | Boolean | The value should be 0 or 1. With status 1, the user (group administrator) can grade reports. |
can_remove_user_from_group | No (default: 0) | Boolean | The value should be 0 or 1. If the status is set to 1, the user (group administrator) can remove members from the subgroup. |
can_delete_user | No (default: 0) | Boolean |
The value should be 0 or 1. The user (group administrator) with status 1 will have permission to delete the user from the classroom. Note: Delete is permanent and you'll not be able to get it back once deleted. |
can_assign_user_to_group | No (default: 0) | Boolean | The value should be 0 or 1. If the status is set to 1, the user (group administrator) can see the list of users available in the classroom and assign them to the subgroup. |
can_assign_assignments | No (default: 0) | Boolean |
The value should be 0 or 1. With status 1, the user (group administrator) can add assignments to the subgroup. |
is_part_of | No (default: 0) | Boolean | The value should be 0 or 1. Status 1 will make this user a member of the group. |
Response Format
JSON
Example Response [Success]
Content-Type: application/json
{
"status":"success",
"uid":"20114120",
"email":"john@proprofs.com",
"id":"johndlabs100",
"action":"created"
}
Response Fields | Description |
---|---|
status | success when the user added or updated successfully. |
uid | The unique reference ID of the user post-registration. |
The user email who just added/updated. |
|
id | The user ID who just added/updated. |
action | created or updated based on the action performed. |
Example Response [Failed]
Content-Type: application/json
{
"status":"error",
"description":"Maximum 5 groups are allowed"
}
Response Fields | Description |
---|---|
status | error when the operation failed. |
description |
The error text describes the error. |
OLD VERSION
Endpoint URL:
The endpoint URL given below is used to call the Rest API. POST will be used as the request method. JSON will be your request format.
Request Parameters
Name | Required | Type | Description |
---|---|---|---|
token | Yes | String | Your private API key for the FAQ. The API key is available at: Settings > In-App Help > API key |
username | Yes | String | ProProfs username |
Yes (Either Email or ID is required) | String | User’s unique Email | |
id | Yes (Either Email or ID is required | String | User’s unique ID |
fname | No | String | First name of the user |
lname | No | String | Last name of the user |
password | No | String | Password for the user to log in under a classroom. If missing, an auto-generated password will be assigned. |
phone | No | String | Phone No. of user |
address | No | String | User’s address |
city | No | String | City |
state | No | String | State |
country | No | String | Country |
zip | No | String | Zip |
status | No | String | Status ("active" / "inactive" / "delete") |
expire | No | String | Date when the user's access will expire. Date format should be mm/dd/yyyy |
group | No | String | Name the group in which you want to register the user. A maximum number of 5 groups is permitted. If no group name is mentioned, the user will still be registered but won't belong to any group. |
group_status | No | String | Status ("active" / "inactive"). Default is "Active" if group_status is not specified. |
sub_group | No | String | If a subgroup is specified, the corresponding parent group must be there. |
sub_group_status | No | String | Status ("active" / "inactive"). Default is "Active" if sub_group_status is not specified. |
is_group_admin | No | String |
Is this user going to act as group admin?
0 = No (Default), 1 = Yes. |
can_add_new_user | No | String |
Does this user have permission to add a new user to a classroom?
0 = No (Default), 1 = Yes. |
can_assign_user_to_group | No | String |
Does this user have permission to add a user to a group?
0 = No (Default), 1 = Yes. |
can_unassign_user_from_group | No | String |
Does this user have permission to remove a user from a group?
1 = No (Default), 0 = Yes. |
can_delete_user | No | String |
Is this user allowed to delete their group members?
0 = No (Default), 1 = Yes. |
can_assign_assignments | No | String |
Can this user assign quizzes and courses to both users and groups?
0 = No (Default), 1 = Yes. |
quiz_assignment | No | String |
Assign quizzes directly to users or groups. A full URL encoded link of the quiz is required.
E.g. http%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fstory.php%3Ftitle%3Dhalloween-quizz.
Note: If the group name is missing, the quiz will be directly assigned to the user. |
course_assignment | No | String |
Assign courses directly to users or groups. A full URL encoded link of the course is required.
E.g. http%3A%2F%2Fwww.proprofs.com%2Ftraining%2Fcourse%2F%3Ftitle%3Dfederal-sexual-harassment.
Note: If the group name is missing, the course will be directly assigned to the user. |
Sample Code | JSON
Accept: application/json
Content-Type: application/json
{
"token": "3f39bfe3d52efe4a975ce19eb1e9db4e",
"username": "johnsmith",
"email": "johnsmith@example.com",
"id": 1024,
"fname": "John",
"lname": "Smith",
"password": "rdsxc234edsx",
"phone": "555-555-5555",
"address": "100 MAIN ST",
"city": "PHOENIX",
"state": "AZ",
"country": "USA",
"zip": "85123",
"status": "active",
"expire": "06/30/2022",
"group": ["sales","finance","marketing"],
"group_status": ["active","active","inactive"],
"sub_group": ["inbound","credit","digital"],
"quiz_assignment: ["http%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fstory.php%3Ftitle%3Dhalloween-quizz", "http%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fstory.php%3Ftitle%3Dhalloween-quizz", "http%3A%2F%2Fwww.proprofs.com%2Fquiz-school%2Fstory.php%3Ftitle%3Dhalloween-quizz"]
}
Response Format
JSON
Example Response [Success]
{
"status": "SUCCESS",
"email": "johnsmith@example.com",
"id": "1024"
}
Responses on Success
Response Fields | Description |
---|---|
status | Will return either “SUCCESS” or “ERROR” |
Email of user |
|
id | ID of user |
Example Response [Error]
Content-Type: application/json
{
"status": "ERROR",
"code": "ERR1001",
"error": "API key is invalid"
}
Responses on Error
Error Fields | Description |
---|---|
status | In case of an error, this field will always contain the string “ERROR” |
code |
Unique error code |
error | Descriptive error message |
Error Codes and Descriptions
Error Code | Description |
---|---|
ERR1001 | The request method must be POST. |
ERR1002 |
The request is empty. |
ERR1003 |
The request parameter shouldn't be more than one. |
ERR1004 | Something is wrong with the JSON request. |
ERR1005 |
The token is missing. |
ERR1006 | The ProProfs username is missing. |
ERR1007 |
Incorrect token or username. The input token is not associated with the username. |
ERR1050 | Either Email or ID is required and it should be unique. |
ERR1051 |
Email shouldn't be empty. |
ERR1052 | ID shouldn't be empty. |
ERR1053 |
The email pattern is incorrect. |
ERR1054 | The country name seems not to be supported. Use the “Supported Country Names” section to pick the correct country name. |
ERR1055 |
A maximum of 5 groups is permitted. |
ERR1056 | ID seems duplicate. Please use a unique ID. |
ERR1059 |
(1) A parent group can't be added as a sub-group. (2) The sub-group you have defined is already a parent of another group. |
Live Example in PHP
This example will help you register the user in the classroom using the ProProfs API.
function sendRequest($json)
{
$curl_obj = curl_init();
curl_setopt($curl_obj, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_obj, CURLOPT_URL, "https://www.proprofs.com/api/classroom/v1/user/register/");
curl_setopt($curl_obj, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_obj, CURLOPT_POST, 1);
curl_setopt($curl_obj, CURLOPT_HEADER, 0);
return curl_exec($curl_obj);
}
$request_array = array();
$request_array["token"] = "Your API Key";
$request_array["username"] = "Your ProProfs Username";
$request_array["email"] = "john@proprofs.com";
$request_array["id"] = "12345";
$request_array["fname"] = "John";
$request_array["lname"] = "Smith";
$request_array["password"] = "john101";
$request_array["phone"] = "555-555-5555";
$request_array["address"] = "151 Street Suit";
$request_array["city"] = "Santa Monica";
$request_array["state"] = "CA";
$request_array["country"] = "United States";
$request_array["zip"] = "90401";
$request_array["status"] = "active";
$request_array["expire"] = "12/31/2015";
// User will be member of three groups Marketing, Sales and Support.
$group_array = array("Marketing", "Sales", "Support");
$request_array["group"] = $group_array;
// User will be group admin for Sales and Support groups only.
$group_admin_array = array("0", "1", "1");
$request_array["is_group_admin"] = $group_admin_array;
// User can add new users under classroom only when acting as group admin for Sales and Support groups.
$add_user_permission = array("0", "1", "1");
$request_array["can_add_new_user"] = $add_user_permission;
$json_request_string = json_encode( $request_array);
echo sendRequest($json_request_string);
?>
Track User Progress For Each Assignment
Track the progress of each user against assignments with the help of this API method.
The Endpoint URL to call the REST API:
POST will be used as the request method, and JSON will be the request format.
Request Parameters
Name | Required | Type | Description |
---|
token | Yes | String | Unique ProProfs API key |
username | Yes | String | ProProfs username |
start | No | Integer | The starting index for the results. Default 1. |
num | No | Integer | The requested number of results. Default 100. The maximum limit is 100 per API call. |
email_or_id | No | String | This is used to filter records. If mentioned, the API will return records for the specified email or ID. |
group_name |
No | String | This can be used to fetch the data of group members such as the status of pending and completed assignments. |
Sample Code | JSON
Endpoint URL:
Content-Type: application/json
{
"token": "3f39cfe3d52efe4a275be19eb1e9db4e",
"username": "johnsmith",
"start": 1,
"num": 100
}
Response Format
JSON
Example Response [Success]
Content-Type: application/json
{
"status":"SUCCESS",
"userCount":1500,
"result":[
{
"email":"john@example.net",
"id":"RE101",
"name":"JOHN SMITH",
"group":[
"Media",
"Advertising",
"Marketing"
],
"assignment":[
{
"type":"course",
"title":"Comparative Media Studies",
"status":"Completed",
"progress":"100",
"assignedOnDate":"02/15/2021",
"percentCompleted":"90"
},
{
"type":"quiz",
"title":"Unit quizzes on comparative media",
"status":"Pending",
"progress":"0",
"assignedOnDate":"02/15/2021",
"percentCompleted":"90"
}
]
}
]
}
Responses on Sucess
Response Fields | Description |
---|
status | Will return either “SUCCESS” or “ERROR” |
userCount | The total number of users that exist in the classroom. This value will help you decide the number of API calls required to check the progress of each user in the classroom. A single API call can return a maximum of 100 user records. |
Email of individual users in the classroom. | |
id | The ID of individual users that exists in the classroom. |
name | Name of the user in the classroom. |
type | Will either return “Quiz” or “Course”. |
title | Title of the quiz or course. |
status | Status of assigned quiz and course. It may be either “Pending” or “Completed”. |
progress | The progress level of the individual course or quiz. If it is pending, progress will return 0. Otherwise, actual completion progress in a course such as 65%, 50%, etc. |
assignedOnDate | The date on which quiz/course was assigned to a user. |
percentCompleted | Exact progress status of the course. In the case of a quiz, the most recent quiz score will return. |
group | The name of groups a user is associated with. |
Example Response [Error]
Content-Type: application/json
{
"status": "ERROR",
"code": "ERR1001",
"error": "API key is invalid"
}
Responses on Error
Error Fields | Description |
---|
status | In case of an error, this field will always contain the string “ERROR” |
code | Unique error code |
error | Descriptive error message |
Error Codes and Descriptions
Error Code | Description |
---|
ERR1001 | The request method must be POST. |
ERR1002 | The request is empty. |
ERR1003 | The request parameter shouldn't be more than one. |
ERR1004 | Something is wrong with the JSON request. |
ERR1005 | The token is missing. |
ERR1006 | The ProProfs username is missing. |
ERR1007 | Incorrect token or username. Input token is not associated with the username. |
ERR1008 | No record was found. |
ERR1009 | The starting offset shouldn’t be greater than the total number of users in the classroom. |
ERR1010 | The assignment hasn't been assigned to anyone yet. No result was found. |
Supported Country Names
Afghanistan, Albania, Algeria, Andorra, Angola, Antigua & Deps, Argentina, Armenia, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bhutan, Bolivia, Bosnia Herzegovina, Botswana, Brazil","Brunei, Bulgaria, Burkina, Burundi, Cambodia, Cameroon, Canada, Cape Verdi, Central African Rep, Chad, Chile, China, Colombia, Comoros, Congo, Congo {Democratic Rep}, Costa Rica, Croatia, Cuba, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Dominican Republic, East Timor, Ecuador, Egypt, El Salvador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Fiji, Finland, France, Gabon, Gambia, Georgia, German, Ghana, Greece, Grenada, Guatemala, Guinea, Guinea-Bissau, Guyana, Haiti, Honduras, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland {Republic}, Israel, Italy, Ivory Coast, Jamaica, Japan, Jordan, Kazakhstan, Kenya, Kiribati, Korea North, Korea South, Kuwait, Kyrgyzstan, Laos, Latvia, Lebanon, Lesotho, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Macedonia, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, Marshall Islands, Mauritania, Mauritius, Mexico, Micronesia, Moldova, Monaco, Mongolia, Montenegro, Morocco, Mozambique, Myanmar {Burma}, Namibia, Nauru, Nepal, Netherlands, New Zealand, Nicaragua, Niger, Nigeria, Norway, Oman, Pakistan, Palau, Panama, Papua New Guinea, Paraguay, Peru, Philippines, Poland, Portugal, Qatar, Romania, Russian Federation, Rwanda, St Kitts & Nevis, St Lucia, St Vincent & Gr/dines, Samoa, San Marino, Sao Tome & Principe, Saudi Arabia, Senegal, Serbia, Seychelles, Sierra Leone, Singapore, Slovakia, Slovenia, Solomon Islands, Somalia, South Africa, Spain, Sri Lanka, Sudan, Suriname, Swaziland, Sweden, Switzerland, Syria, Taiwan, Tajikistan ,Tanzania, Thailand, Togo, Tonga, Trinidad & Tobago, Tunisia, Turkey, Turkmenistan, Tuvalu, Uganda, Ukraine, United Arab Emirates, United Kingdom, United States, Uruguay, Uzbekistan, Vanuatu, Vatican City, Venezuela, Vietnam, Yemen, Zambia, Zimbabwe
Classroom User Authentication
Authenticate users in the classroom using this API. It supports two modes of authentication.
1. Authentication using Email/Username
If the request contains only an email or a username, we’ll detect the learner’s availability in the classroom.
2. Authentication using both Email and Password
If email, username, and password are present in the API, we’ll detect learners’ availability in the classroom and authenticate it using their password.
The Endpoint URL to call the REST API:
POST will be used as the request method, and JSON will be the request format.
Request Parameters
Name | Required | Type | Description |
---|
token |
Yes |
String |
Unique ProProfs API key |
username |
Yes |
String |
ProProfs username |
email_or_ID |
Yes (Either Email or ID is required) |
String |
Learner’s unique Email or Username |
password |
Yes |
String |
MD5 encrypted password. |
Sample Code | JSON
POST-https://www.proprofs.com/api/classroom/v1/user/auth/
Accept: application/json
Content-Type: application/json
{
"token": "3f39bfe3d52efe4a975ce19eb1e9db4e",
"username": "johnsmith",
"email_or_ID": "johnsmith@example.com",
"password": "eb0efbc37b1b47d2d69be2240acfe63a"
}
Response Format
JSON
Example Response [Success]
Content-Type: application/json
{
"status":"SUCCESS",
"result":[
{
"email":"john@example.net",
"ID":"RE101",
"name":"JOHN SMITH",
"user_status":"active",
"expiry_date":"05/22/2022",
"group":[
"Media",
"Advertising",
"Marketing"
],
"assignment":[
{
"type":"course",
"title":"Comparative Media Studies",
"unique_title":"comparative_media_studies",
"progress":"Completed"
},
{
"type":"quiz",
"title":"Unit quizzes on comparative media",
"unique_title":"unit_quizzes_on_comparative_media",
"progress":"Pending"
}
]
}
]
}
Responses on Success
Response Fields | Description |
---|
status |
Will return either “SUCCESS” or “ERROR” |
result |
These contain the email, username, and group name of the user. |
assignment |
Courses and quizzes assigned to the user and status of the assignment |
user_status |
User's status can be “active”, “inactive” or “expired”. |
expiry_date |
Expiration date in mm/dd/yyyy format, if available. |
Example Response [Error]
Content-Type: application/json
{
"status": "ERROR",
"code": "ERR2001",
"error": "Request method must be POST"
}
Responses on Error
Error Fields | Description |
---|
status |
In case of error, this field will always contain the string “ERROR” |
code |
Unique error code |
error |
Descriptive error message |
Error Codes and Descriptions
Error Code | Description |
---|
ERR2001 |
Request method must be POST |
ERR2002 |
Request is empty |
ERR2002 |
Request parameter shouldn't be more than one |
ERR2004 |
Something wrong with the JSON request |
ERR2005 |
Token is missing |
ERR2006 |
ProProfs username is missing |
ERR2007 |
Incorrect token or username. Input token is not associated with the username |
ERR2050 |
Either Email or ID is required |
ERR2051 |
Email pattern is incorrect |
ERR2052 |
User not authorized |
Live Example in PHP
This example will help you authenticate users in the classroom using the ProProfs REST API.
<?php
function sendRequest($json)
{
$curl_obj = curl_init();
curl_setopt($curl_obj, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_obj, CURLOPT_URL, "https://www.proprofs.com/api/classroom/v1/user/auth/");
curl_setopt($curl_obj, CURLOPT_POSTFIELDS, $json);
curl_setopt($curl_obj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_obj, CURLOPT_POST, 1);
curl_setopt($curl_obj, CURLOPT_HEADER, 0);
return curl_exec($curl_obj);
}
$request_array = array();
$request_array["token"] = "Your API Key";
$request_array["username"] = "Your ProProfs Username";
$request_array["email_or_ID"] = "john@proprofs.com";
$request_array["password"] = "3aa801d5d85e77ce9f2e431d8bf5fd73";
$json_request_string = json_encode( $request_array);
echo sendRequest($json_request_string);
?>
That is all about using the REST API in ProProfs Quiz Maker.