Skip to main content

Attempts

info

Admin APIs require authorization token with admin privileges. You check the following link to generate authorization token. You need to provide admin username and password to generate token with admin privileges

Authentication

All operations related to user attempt can be done using the following end points.

List Attempts​

This endpoint returns all attempts. Attempts can be filtered based on user or exams

HTTP Request​

GET /api/v2.5/admin/attempts/

Query Parameters​

orderingstringThis will sort the results date Oldest started attempts will be displayed first
-date - Recently started attempts will be displayed first correctanswers_count
- Attempts with least correct answers will be displayed first
-correct answers_count
- Attempts with more correct answers will be displayed first incorrectLanswers_count
- Attempts with least incorrect answers will be displayed first
-incorrectanswers_count Attempts with more incorrect answerss will be displayed first unanswered_count
- Attempts with least unanswered answers will be displayed first -unanswered_count
- Attempts with more unanswered will be displayed first
statenumberThis will filter attempts based on the following states
0-Running Attempts
1- Completed Attempts
3-Not started
date_1stringThis will display all attempts which started before this date
date_0stringThis will display all attempts which started after this date
UsersintegerTo get attempts of an user. Value should be user id
Ex: users=1
examsintegerTo filter attempts by exam. Value should be exam id exams
Ex: exams=3
emailstringFilters attempts by email. The value is matched against the email saved on the attempt or the email of the registered user. The match is case-insensitive.
Ex: email=student@example.com
phonestringFilters attempts by phone number. The value is matched against the phone number saved on the attempt or the phone number of the registered user.
Ex: phone=9876543210
namestringFilters attempts by name. The value is matched against the name saved on the attempt or the registered user's first name. The match is case-insensitive and can match part of a name.
Ex: name=Alex
is_publicbooleanFilters attempts based on whether they were made by a registered user. Set to true to return public attempts made without a registered Testpress user account, or false to return attempts made by registered users.
Ex: is_public=true

Response​


{
"count":1,
"next":"https://sandbox.testpress.in/api/v2.5/admin/attempts/?page=2",
"previous":null,
"per_page":200,
"results":[
{
id: 68701,
date: "2021-03-16T03:59:21.860924Z",
exam_id: 133,
user_id: 143,
email: null,
name: null,
phone: null,
correct_answers_count: 220,
incorrect_answers_count: 20,
unanswered_count: 200,
score: "90.00",
percentage: 0,
time_taken: "0:00:00",
remaining_time: null,
result: "Not taken",
state: "Completed",
last_started_time: null,
last_answer_updated_time: null,
speed: 0,
exam_url: "https://sandbox.testpress.in/api/v2.5/admin/exams/133/",
user_url: "https://sandbox.testpress.in/api/v2.5/admin/users/133/"
}]
}

Examples​

  • /api/v2.5/admin/attempts/?exams=5 - This will display attempt of exam with id 5
  • /api/v2.5/admin/attempts/?users=1&exams=2 - This will display attempts of exam whose id is 2 for the user id 1
  • /api/v2.5/admin/attempts/?date_0=2020-01-11&date_1=2021-02-02&ordering=date - This will display attempts that are attempted between 11/1/2020 and 2/2/2021. Oldest attempted exams will be displayed first
  • /api/v2.5/admin/attempts/?is_public=true - This will display attempts made without a registered user account

Get A Single Attempt​

This endpoint retrieves a single attempt.

HTTP Request​

GET /api/v2.5/admin/attempts/<id>/

URL Parameters​

ParameterDescription
idThe unique id of the attempt to retrieve
curl --request GET \
--url http://demo.testpress.in/api/v2.5/admin/attempts/125894/ \
--header 'authorization: JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3RwcmVzcyIsInVzZXJfaWQiOjE3LCJlbWFpbCI6InRlc3RwcmVzcy5pbkBnbWFpbC5jb20iLCJleHAiOjE0NDc4MzMyMjl9.Ik_yi4lHbNbrRGhqmRpsW82Nls_O9lgXakk_syV-vSw' \
--header 'cache-control: no-cache'

Response​

{
"id": 1,
"date": "2023-01-23T11:35:37.930389+05:30",
"exam_id": 2,
"user_id": 2,
"email": "hariharan@testpress.in",
"name": null,
"phone": null,
"correct_answers_count": 0,
"incorrect_answers_count": 1,
"unanswered_count": 79,
"score": "0.00",
"percentage": 0,
"percentile": 100.0,
"time_taken": "2:47:53.076906",
"remaining_time": "0:00:00",
"result": "Fail",
"state": "Completed",
"last_started_time": "2023-04-02T15:27:46.453786+05:30",
"last_answer_updated_time": "2023-04-02T15:27:59.639308+05:30",
"speed": 0,
"exam_url": "http://demo.tespress.in/api/v2.5/admin/exams/2/",
"user_url": "http://demo.tespress.in/api/v2.5/admin/users/2/",
"username": "admin",
"sections": [
{
"id": 1,
"order": 0,
"section_id": 2,
"time_taken": "0:00:00",
"correct_answers_count": 0,
"incorrect_answers_count": 0,
"unanswered_count": 20,
"score": "0.00"
},
{
"id": 2,
"order": 1,
"section_id": 3,
"time_taken": "0:00:00",
"correct_answers_count": 0,
"incorrect_answers_count": 1,
"unanswered_count": 20,
"score": "0.00"
},
{
"id": 3,
"order": 2,
"section_id": 4,
"time_taken": "0:00:00",
"correct_answers_count": 0,
"incorrect_answers_count": 0,
"unanswered_count": 20,
"score": "0.00"
},
{
"id": 4,
"order": 3,
"section_id": 5,
"time_taken": "0:00:00",
"correct_answers_count": 0,
"incorrect_answers_count": 0,
"unanswered_count": 19,
"score": "0.00"
}
],
"subject_stats": [
{
"subject_id": 1,
"subject_name": "Geography",
"total_count": 64,
"correct_answers_count": 0,
"unanswered_count": 63,
"incorrect_answers_count": 1,
"parent_subject_id": null,
"is_leaf": true,
"score": "0.00",
"partial_correct_answers_count": 0
},
{
"subject_id": 2,
"subject_name": "Current affairs",
"total_count": 12,
"correct_answers_count": 0,
"unanswered_count": 12,
"incorrect_answers_count": 0,
"parent_subject_id": null,
"is_leaf": true,
"score": "0.00",
"partial_correct_answers_count": 0
},
{
"subject_id": null,
"subject_name": "History",
"total_count": 4,
"correct_answers_count": 0,
"unanswered_count": 4,
"incorrect_answers_count": 0,
"parent_subject_id": null,
"is_leaf": true,
"score": "0.00",
"partial_correct_answers_count": 0
}
],
"difficulty_level_stats": {
"easy": {
"correct_answers_count": 0,
"incorrect_answers_count": 1,
"partial_correct_answers_count": 0,
"unanswered_count": 69,
"total_count": 70
},
"medium": {
"correct_answers_count": 0,
"incorrect_answers_count": 5,
"partial_correct_answers_count": 0,
"unanswered_count": 5,
"total_count": 10
}
},
"institute_attempt_id": 100101
}

Get Student Exam Responses​

This endpoint retreives the student responses for a particular exam.

HTTP Request​

GET /api/v3/admin/attempts/<id>/user_answers/

URL Parameters​

ParameterDescription
idThe unique id of the attempt to retrieve the student responses.
curl --request GET \
--url http://demo.testpress.in/api/v3/admin/attempts/423/user_answers/ \
--header 'authorization: JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3RwcmVzcyIsInVzZXJfaWQiOjE3LCJlbWFpbCI6InRlc3RwcmVzcy5pbkBnbWFpbC5jb20iLCJleHAiOjE0NDc4MzMyMjl9.Ik_yi4lHbNbrRGhqmRpsW82Nls_O9lgXakk_syV-vSw' \
--header 'cache-control: no-cache'

Response​

{
"count": 1,
"next": null,
"previous": null,
"per_page": 250,
"results": {
"user_answers": [
{
"id": 476,
"exam_question_id": 39,
"selected_answers": [
6
],
"result": "Incorrect",
"duration": 5,
"review": false,
"guessed": null
},
],
"exam_questions": [
{

"id": 39,
"question_id": 2,
"section_id": 90,
"question_html": "<style type='text/css'>\n \n</style>\n<p>where is Paris ?</p>",
"type": "MCQ, Single Correct",
"marks": "1.00",
"negative_marks": "0.00",
"partial_marks": null,
"direction": null,
"answers": [
{
"id": 5,
"text_html": "<style type='text/css'>\n \n</style>\n<p>France</p>"
},
{
"id": 6,
"text_html": "<style type='text/css'>\n \n</style>\n<p>Italy</p>"
},
{
"id": 7,
"text_html": "<style type='text/css'>\n \n</style>\n<p>Belgium</p>"
},
{
"id": 8,
"text_html": "<style type='text/css'>\n \n</style>\n<p>Germany</p>"
}
],
"difficulty_level": null,
"order": 0,
"is_bonus": false,
"exam_id": 46
},

]
}
}


Get Chapter Content Attempts​

This endpoint retrieves the chapter content attempts list for all users.

HTTP Request​

GET /api/v3/admin/chapter-content-attempts/

Query Parameters​

ParameterTypeDescription
user_idsintUnique user ID
chapter_idsintUnique chapter ID
course_idsintUnique course ID
chapter_content_idsintUnique chapter content ID
exam_idintUnique exam ID
content_typeintType of content
stateintStatus of the attempt
completed_datestringdate in the format yyyy-mm-dd
completed_beforestringdate in the format yyyy-mm-dd
completed_afterstringdate in the format yyyy-mm-dd

content_type (int):

  • Type of content. Possible values:
    • 1: Exam
    • 2: Quiz
    • 3: Video
    • 4: Attachment
    • 5: Notes
    • 7: Video Conference
    • 8: Live Stream

state (int):

  • Status of the attempt. Possible values:
    • 0: Started
    • 1: Completed
    • 2: Pending Evaluation (in case of exams)
    • 3: Evaluation Completed (in case of exams)
curl --request GET \
--url http://demo.testpress.in/api/v3/admin/chapter-content-attempts/ \
--header 'authorization: JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3RwcmVzcyIsInVzZXJfaWQiOjE3LCJlbWFpbCI6InRlc3RwcmVzcy5pbkBnbWFpbC5jb20iLCJleHAiOjE0NDc4MzMyMjl9.Ik_yi4lHbNbrRGhqmRpsW82Nls_O9lgXakk_syV-vSw' \
--header 'cache-control: no-cache'

Response​

{
"count": 1,
"next": null,
"previous": null,
"per_page": 250,
"results": {
"content_attempts": [
{
"id": 764,
"user_id": 9,
"course_id": 8,
"chapter_id": 33,
"chapter_content_id": 127,
"content_type": "video",
"state": "Started",
"remaining_time": null,
"assessment_id": null,
"user_video_conference_id": null,
"user_video_id": 55,
"user_live_stream_id": null,
"user_content_id": null,
"user_attachment_id": null,
"created": "2024-07-15T18:49:52.059055+05:30",
"completed_on": null
},
{
"id": 27,
"user_id": 7713,
"course_id": 8,
"chapter_id": 1,
"chapter_content_id": 1,
"content_type": "assessment",
"state": "Completed",
"remaining_time": "0.00",
"assessment_id": 55,
"user_video_conference_id": null,
"user_video_id": null,
"user_live_stream_id": null,
"user_content_id": null,
"user_attachment_id": null,
"correct_answers_count": 0,
"incorrect_answers_count": 1,
"created": "2024-03-26T10:10:16.698629+05:30",
"completed_on": "2024-03-26T10:10:21.809999+05:30"
},
{
"id": 47,
"user_id": 2,
"course_id": 1,
"chapter_id": 1,
"chapter_content_id": 2,
"content_type": "videoConference",
"state": "Started",
"remaining_time": null,
"assessment_id": null,
"user_video_conference_id": 1,
"user_video_id": null,
"user_live_stream_id": null,
"user_content_id": null,
"user_attachment_id": null,
"created": "2024-10-16T11:08:33.756923+05:30",
"completed_on": null
},
{
"id": 80,
"user_id": 2,
"course_id": 1,
"chapter_id": 1,
"chapter_content_id": 14,
"content_type": "live_stream",
"state": "Started",
"remaining_time": null,
"assessment_id": null,
"user_video_conference_id": null,
"user_video_id": null,
"user_live_stream_id": 5,
"user_content_id": null,
"user_attachment_id": null,
"created": "2024-12-05T11:50:41.384054+05:30",
"completed_on": null
},
],
"users": [
{
"id": 9,
"username": "john",
"email": "john@test.com",
"phone": "1234567890"
}
],
"user_videos": [
{
"id": 55,
"video_id": 18,
"created": "2024-07-15T18:38:42.853855+05:30",
"watched_percentage": 0,
"remaining_duration": null,
"state": "Started",
"is_live_class_recording": false
}

],
"user_exams": [
{
"id": 56,
"exam_id": 1,
"user_id": 7713,
"total_score": "7.00",
"number_of_correct_answers": 0,
"number_of_incorrect_answers": 1,
"number_of_unanswered_questions": 0,
"number_of_answered_questions": 1,
"percentage": "0.00",
"rank": 4,
"result": "NA",
"total_questions": 7
},
],
"courses": [
{
"id": 8,
"title": "Course 3",
"description": "",
"image": "https://d7pdowhru2wq4.cloudfront.net/static/courses/general/1442850373_115.png",
"created_by": 1,
"created": "2023-10-18T15:51:33.887124+05:30",
"modified": "2024-11-13T10:48:46.555391+05:30",
"slug": "course-3",
"chapters_count": 3,
"contents_count": 29,
"exams_count": 5,
"videos_count": 0,
"attachments_count": 0,
"html_contents_count": 0,
"order": 2,
"max_allowed_views_per_video": null,
"max_allowed_watch_minutes": null
},
],
"chapter_contents": [
{
"id": 127,
"order": 0,
"chapter_id": 195,
"free_preview": false,
"title": "Why You Should Say “Hi”",
"course_id": 8,
"exam_id": null,
"content_id": null,
"video_id": 18,
"attachment_id": null,
"content_type": "Video",
"start": "2024-06-24T12:11:30.950513+05:30",
"end": null,
"description": ""
},
{
"id": 1,
"order": 0,
"chapter_id": 1,
"free_preview": false,
"title": "UPSC Prelims Mock Test 23 - Physical Geography",
"course_id": 8,
"exam_id": 1,
"content_id": null,
"video_id": null,
"attachment_id": null,
"content_type": "Exam",
"start": "2023-10-15T18:17:15+05:30",
"end": null,
"description": ""
},
],
"user_video_conferences": [
{
"id": 1,
"user_id": 2,
"duration": null,
"join_time": null,
"leave_time": null,
"video_conference": {
"id": 1,
"title": "intro",
"conference_id": "79401700412",
"start": "2024-10-16T05:15:21Z",
"duration": 15,
"provider": "Zoom",
"join_url": "http://demo.testbench.in:8000/embed/zoom-meeting/1/",
"password": "0UiKyr",
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBLZXkiOiJQTTdPdlpBeFI3ZXJ3cXlqR2lsblR3IiwiaWF0IjoxNzMzNDYwMDAxLCJ0b2tlbkV4cCI6MTczMzU0NjQwMSwiZXhwIjoxNzMzNTQ2NDAxfQ.PsOgkWiHtRLWvQeya8yE9fiSKF6Bgyskqh94BP6-1SE",
"show_recorded_video": null,
"state": "Initiated",
"has_recording_expired": false
}
}
],
"user_live_streams": [
{
"id": 5,
"user_id": 2,
"live_stream": {
"id": 5,
"title": "demo live stream",
"stream_url": "",
"duration": 1,
"show_recorded_video": true,
"status": "Completed",
"chat_embed_url": null
}
}
]
}
}

Get Video Conference Attempts​

This endpoint retrieves the details of attempts for a video conference.

HTTP Request​

GET /api/v3/admin/attempts/<id>/video-conference/

URL Parameters​

ParameterDescription
idThe unique id of the video conference

Example​

/api/v3/admin/attempts/12/video-conference/

This endpoint will retrieve the details of attempts for the video conference with ID 12.

Response Fields​

NameTypeDescription
namestringName of the user
emailstringEmail of the user
joined_timestringTime of joining the video conference in ISO 8601 format
leave_timestringTime of leaving the video conference in ISO 8601 format
durationintDuration of attendance in seconds
curl --request GET \
--url http://demo.testpress.in/api/v3/admin/attempts/12/video-conference/ \
--header 'authorization: JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3RwcmVzcyIsInVzZXJfaWQiOjE3LCJlbWFpbCI6InRlc3RwcmVzcy5pbkBnbWFpbC5jb20iLCJleHAiOjE0NDc4MzMyMjl9.Ik_yi4lHbNbrRGhqmRpsW82Nls_O9lgXakk_syV-vSw' \
--header 'cache-control: no-cache'

Response​

{
"count": 2,
"next": null,
"previous": null,
"per_page": 20,
"results": [
{
"name": "deva",
"email": "deva@testpress.in",
"join_time": "2024-06-10T16:20:26+05:30",
"leave_time": "2024-06-10T16:22:26+05:30",
"duration": 120
},
{
"name": "alwin",
"email": "alwin@testpress.in",
"join_time": "2024-06-10T16:19:55+05:30",
"leave_time": "2024-06-10T16:22:27+05:30",
"duration": 152
}
]
}

Delete an Attempt​

This endpoint permanently deletes an attempt using its unique attempt ID. It can also be used to delete public attempts, which are attempts made without a registered user account.

HTTP Request​

DELETE /api/v2.5/admin/attempts/<id>/

URL Parameters​

ParameterDescription
idThe unique ID of the attempt to delete

The request must be authenticated by a user with permission to add exams. A successful request returns 204 No Content.

curl --request DELETE \
--url http://demo.testpress.in/api/v2.5/admin/attempts/125894/ \
--header 'authorization: JWT <token>'

Response​

204 No Content