GET /exams
List exams

Errors

Code Description
403 You are not authorized to access this page.

Examples

{
  'example_request_params': {
    'nonce': '1527500365',
    'timestamp': 1527500365052,
    'signature': '8aac70c9906ad0812f4fbc34617322f985b4ac978cec861724f142cb572b88ff',
    'page': 1
  },
  'example_response': {
    'exams': [
      {
        'id': 1,
        'institute_id': 1,
        'name': 'New test',
        'terms': null,
        'created_at': '2018-11-21T00:54:59.934+01:00',
        'updated_at': '2018-11-25T21:26:08.664+01:00',
        'duration_minutes': 123,
        'clipboard': null,
        'start_time': '2018-11-21T00:54:00.000+01:00',
        'mode': '01110000',
        'upload_answers': false,
        'token': 'b1342678e28f2b895ff6834408a33bd7',
        'user_id': 5,
        'end_time': null,
        'restrictions': '[[false,['']],[false,['']],[false,['']],[false,['']],[false,['']],[false,['']],[true,['']]]',
        'published': false,
        'status': 'open',
        'for_reviewing': false,
        'uploaded_exam_documents_file_name': null,
        'uploaded_exam_documents_content_type': null,
        'uploaded_exam_documents_file_size': null,
        'uploaded_exam_documents_updated_at': null,
        'timezone': 'Europe/Paris',
        'use_duration': true,
        'global_proctoring': true,
        'global_reviewing': true,
        'exam_language': 'en-GB',
        'web_cam': true,
        'mobile_cam': true,
        'screen_share': true,
        'live_proctoring': false
      }
    ]
  }
}

Params

Param name Description
status
optional

Status filter for exams. Has to be one of draft,open,closed,deleted

Validations:

  • Must be a String

page
optional

Page number, returns LIMIT items per page. The X-Pagination-* HTTP headers contain the information about the total number of items (X-Pagination-Item-Count), the total number of pages (X-Pagination-Page-Count), the current page number (X-Pagination-Page) and the number of items per page (X-Pagination-Limit).

Validations:

  • Must be a number.

limit
optional

Number of items returned per page. Default and maximum value is 300.

Validations:

  • Must be a number.

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String

sort
optional

Sort by column(s). Stringified JSON constisting of an array of objects with column as key and sorting order as value. Example: sort=[{“column_name”: “asc”}, {“column_name”: “desc”}]

Validations:

  • Must be a String

filter
optional

Filter by column(s). Stringified JSON consisting of an object with column as key and an object with operator as key and filtering value as value. Example: filter={“column_name”: {“operator”: “value”}} available operators: eq(equal to), gt(greater than), gte(greater than or equal to), lt(less than), lte(less than or equal to), ne(not equal to), in(in), nin(not in)

Validations:

  • Must be a String


GET /exams/:id
Show an exam

Errors

Code Description
404 Couldn't find Exam with 'id'=':id'
403 You are not authorized to access this page.

Examples

{
  'example_request_params': {
    'id': 1,
    'nonce': '1527500365',
    'timestamp': 1527500365052,
    'signature': '8aac70c9906ad0812f4fbc34617322f985b4ac978cec861724f142cb572b88ff'
  },
  'example_response': {
    'exam': {
      'id': 1,
      'institute_id': 1,
      'name': 'New test',
      'terms': null,
      'created_at': '2018-11-21T00:54:59.934+01:00',
      'updated_at': '2018-11-25T21:26:08.664+01:00',
      'duration_minutes': 123,
      'clipboard': null,
      'start_time': '2018-11-21T00:54:00.000+01:00',
      'mode': '01110000',
      'upload_answers': false,
      'token': 'b1342678e28f2b895ff6834408a33bd7',
      'user_id': 5,
      'end_time': null,
      'restrictions': '[[false,['']],[false,['']],[false,['']],[false,['']],[false,['']],[false,['']],[true,['']]]',
      'published': false,
      'status': 'open',
      'for_reviewing': false,
      'uploaded_exam_documents_file_name': null,
      'uploaded_exam_documents_content_type': null,
      'uploaded_exam_documents_file_size': null,
      'uploaded_exam_documents_updated_at': null,
      'timezone': 'Europe/Paris',
      'use_duration': true,
      'global_proctoring': true,
      'global_reviewing': true,
      'exam_language': 'en-GB',
      'web_cam': true,
      'mobile_cam': true,
      'screen_share': true,
      'live_proctoring': false
    }
  }
}

Params

Param name Description
id
required

ID of the requested exam.

Validations:

  • Must be a number.

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String


POST /exams
Create an exam

Errors

Code Description
403 You are not authorized to access this page.
422 Param is missing or the value is empty: 'param'

Examples

{
  'example_request_params': {
    'name':'Psychostasia',
    'type': 'record_review',
    'institute_id':1,
    'use_duration': true,
    'duration_minutes':90,
    'global_proctoring': true,
    'global_reviewing': true,
    'start_time':'2018-11-21T00:54:00.000+01:00',
    'for_reviewing':true,
    'upload_answers':false,
    'mobile_cam':true,
    'chrome_extension_required': true,
    'restrictions': 'Example of restrictions to be added.',
    'allow_websites': true,
    'allow_external_applications': true,
    'allow_textbooks': true,
    'allow_calculator': true,
    'allow_pen_paper': true,
    'allow_additional': true,
    'allowed_websites': 'www.proctorexam.com, docs.proctorexam.com',
    'allowed_external_applications': 'External application',
    'allowed_textbooks': 'Reference book',
    'allowed_calculator_type': 'Basic',
    'allowed_additional': 'Headphones',
    'nonce': '1527500365',
    'timestamp': 1527500365052,
    'signature': '8aac70c9906ad0812f4fbc34617322f985b4ac978cec861724f142cb572b88ff'
  },
  'example_response': {
    'exam': {
      'id': 1,
      'institute_id': 1,
      'name': 'Psychostasia',
      'terms': null,
      'created_at': '2018-11-21T00:54:59.934+01:00',
      'updated_at': '2018-11-25T21:26:08.664+01:00',
      'duration_minutes': 90,
      'clipboard': null,
      'start_time': '2018-11-21T00:54:00.000+01:00',
      'mode': '01110000',
      'upload_answers': false,
      'token': 'b1342678e28f2b895ff6834408a33bd7',
      'user_id': 5,
      'end_time': null,
      'restrictions': '[[false,['']],[false,['']],[false,['']],[false,['']],[false,['']],[false,['']],[true,['']]]',
      'published': false,
      'status': 'open',
      'for_reviewing': true,
      'uploaded_exam_documents_file_name': null,
      'uploaded_exam_documents_content_type': null,
      'uploaded_exam_documents_file_size': null,
      'uploaded_exam_documents_updated_at': null,
      'timezone': 'Europe/Paris',
      'use_duration': true,
      'global_proctoring': true,
      'global_reviewing': true,
      'exam_language': 'en-GB',
      'web_cam': true,
      'mobile_cam': true,
      'screen_share': true,
      'live_proctoring': false
    }
  }
}

Params

Param name Description
name
required

Name of the exam.

Validations:

  • Must be a String

type
required

Type of the exam, can be: demo, classroom, record_review, live_proctoring

Validations:

  • Must be a String

institute_id
optional

Institute of the exam, if omitted will be set to the user’s institute_id

Validations:

  • Must be a number.

use_duration
optional

True if exam duration is required.

Validations:

  • Must be one of: true, false, 1, 0.

duration_minutes
optional

Duration of the exam in minutes.

Validations:

  • Must be a number.

global_proctoring
optional

True if global proctoring is set for the exam. Only for superuser accounts

Validations:

  • Must be one of: true, false, 1, 0.

global_reviewing
optional

True if global reviewing is set for the exam. Only for superuser accounts

Validations:

  • Must be one of: true, false, 1, 0.

start_time
optional

The first start time of the exam. Accepts: RFC9557 with IANA timezone (e.g., 2026-01-15T10:00:00[America/New_York]) - recommended, saves the timezone for display in emails; epoch timestamp (Integer) - timezone defaults to UTC; ISO8601 string (e.g., 2026-01-15T10:00:00.000+02:00) - timezone defaults to UTC. Defaults to current time if not provided.

Validations:

  • Must be one of: String, Integer.

end_time
optional

The last start time of the exam. Accepts: RFC9557 with IANA timezone, epoch timestamp (Integer), or ISO8601 string. Timezone from end_time is not saved - only start_time timezone is used. Defaults to nil if not provided.

Validations:

  • Must be one of: String, Integer.

for_reviewing
optional

True if you want to send the student videos to reviewers.

Validations:

  • Must be one of: true, false, 1, 0.

upload_answers
optional

True if student has to upload one or more document at the end of the exam through proctorexam platform.

Validations:

  • Must be one of: true, false, 1, 0.

mobile_cam
optional

True if mobile recording is required.

Validations:

  • Must be one of: true, false, 1, 0.

exam_language
optional

Language in which the exam can be displayed. Unless custom translations provided via administration website, must be one of en-GB, nl-NL, de-DE, fr-FR, it-IT.

Validations:

  • Must be a String

chrome_extension_required
optional

True if the Chrome extension is required for the exam. This is the default. Set to false to allow exam taking in lockdown browsers that block extensions. Disabling may reduce proctoring features such as browsing activity tracking.

Validations:

  • Must be one of: true, false, 1, 0.

restrictions
optional

The instructions for the reviewer

Validations:

  • Must be a String

allow_websites
optional

Boolean for allowing websites to be used during the exam

Validations:

  • Must be one of: true, false, 1, 0.

allow_external_applications
optional

Boolean for allowing external applications to be used during the exam

Validations:

  • Must be one of: true, false, 1, 0.

allow_textbooks
optional

Boolean for allowing textbooks to be used during the exam

Validations:

  • Must be one of: true, false, 1, 0.

allow_calculator
optional

Boolean for allowing calculator to be used during the exam

Validations:

  • Must be one of: true, false, 1, 0.

allow_pen_paper
optional

Boolean for allowing pen and paper to be used during the exam

Validations:

  • Must be one of: true, false, 1, 0.

allow_additional
optional

Boolean for allowing additional materials to be used during the exam

Validations:

  • Must be one of: true, false, 1, 0.

allowed_websites
optional

Comma separated string with the different websites that can be used in the exam

Validations:

  • Must be a String

allowed_external_applications
optional

Comma separated string with the different external applications that can be used in the exam

Validations:

  • Must be a String

allowed_textbooks
optional

Comma separated string with the different textbooks that can be used in the exam

Validations:

  • Must be a String

allowed_calculator_type
optional

String with the calculator type that can be used in the exam

Validations:

  • Must be a String

allowed_additional
optional

Comma separated string with the different additional materials that can be used in the exam

Validations:

  • Must be a String

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String


PATCH /exams/:id
Update an exam

PUT /exams/:id
Update an exam

Errors

Code Description
403 You are not authorized to access this page.
422 Param is missing or the value is empty: 'param'

Examples

{
  'example_request_params': {
    'id': 1,
    'name':'Psychostasia',
    'type': 'record_review',
    'institute_id': 1,
    'use_duration': true,
    'duration_minutes': 90,
    'global_proctoring': true,
    'global_reviewing': true,
    'start_time': '2018-11-21T00:54:00.000+01:00',
    'for_reviewing': true,
    'upload_answers': false,
    'mobile_cam': true,
    'restrictions': 'Example of restrictions to be added.',
    'allow_websites': true,
    'allow_external_applications': true,
    'allow_textbooks': true,
    'allow_calculator': true,
    'allow_pen_paper': true,
    'allow_additional': true,
    'allowed_websites': 'www.proctorexam.com, docs.proctorexam.com',
    'allowed_external_applications': 'External application',
    'allowed_textbooks': 'Reference book',
    'allowed_calculator_type': 'Basic',
    'allowed_additional': 'Headphones',
    'nonce': '1527500365',
    'timestamp': 1527500365052,
    'signature': '8aac70c9906ad0812f4fbc34617322f985b4ac978cec861724f142cb572b88ff'
  },
  'example_response': {
    'exam': {
      'id': 1,
      'institute_id': 1,
      'name': 'Psychostasia',
      'terms': null,
      'created_at': '2018-11-21T00:54:59.934+01:00',
      'updated_at': '2018-11-25T21:26:08.664+01:00',
      'duration_minutes': 90,
      'clipboard': null,
      'start_time': '2018-11-21T00:54:00.000+01:00',
      'mode': '01110000',
      'upload_answers': false,
      'token': 'b1342678e28f2b895ff6834408a33bd7',
      'user_id': 5,
      'end_time': null,
      'restrictions': '[[false,['']],[false,['']],[false,['']],[false,['']],[false,['']],[false,['']],[true,['']]]',
      'published': false,
      'status': 'open',
      'for_reviewing': true,
      'uploaded_exam_documents_file_name': null,
      'uploaded_exam_documents_content_type': null,
      'uploaded_exam_documents_file_size': null,
      'uploaded_exam_documents_updated_at': null,
      'timezone': 'Europe/Paris',
      'use_duration': true,
      'global_proctoring': true,
      'global_reviewing': true,
      'exam_language': 'en-GB',
      'web_cam': true,
      'mobile_cam': true,
      'screen_share': true,
      'live_proctoring': false
    }
  }
}

Params

Param name Description
id
required

ID of the requested exam.

Validations:

  • Must be a number.

name
optional

Name of the exam.

Validations:

  • Must be a String

type
optional

Type of the exam, can be: demo, classroom, record_review, live_proctoring

Validations:

  • Must be a String

use_duration
optional

True if exam duration is required.

Validations:

  • Must be one of: true, false, 1, 0.

duration_minutes
optional

Duration of the exam in minutes.

Validations:

  • Must be a number.

global_proctoring
optional

True if global proctoring is set for the exam.

Validations:

  • Must be one of: true, false, 1, 0.

global_reviewing
optional

True if global reviewing is set for the exam.

Validations:

  • Must be one of: true, false, 1, 0.

start_time
optional

The first start time of the exam. Accepts: RFC9557 with IANA timezone (e.g., 2026-01-15T10:00:00[America/New_York]) - recommended, saves the timezone for display in emails; epoch timestamp (Integer) - timezone defaults to UTC; ISO8601 string (e.g., 2026-01-15T10:00:00.000+02:00) - timezone defaults to UTC.

Validations:

  • Must be one of: String, Integer.

end_time
optional

The last start time of the exam. Accepts: RFC9557 with IANA timezone, epoch timestamp (Integer), or ISO8601 string. Timezone from end_time is not saved - only start_time timezone is used.

Validations:

  • Must be one of: String, Integer.

for_reviewing
optional

True if you want to send the student videos to reviewers.

Validations:

  • Must be one of: true, false, 1, 0.

upload_answers
optional

True if student has to upload one or more document at the end of the exam through proctorexam platform.

Validations:

  • Must be one of: true, false, 1, 0.

mobile_cam
optional

True if mobile recording is required.

Validations:

  • Must be one of: true, false, 1, 0.

exam_language
optional

Language in which the exam can be displayed. Unless custom translations provided via administration website, must be one of en-GB, nl-NL, de-DE, fr-FR, it-IT.

Validations:

  • Must be a String

chrome_extension_required
optional

True if the Chrome extension is required for the exam. This is the default. Set to false to allow exam taking in lockdown browsers that block extensions. Disabling may reduce proctoring features such as browsing activity tracking.

Validations:

  • Must be one of: true, false, 1, 0.

restrictions
optional

The instructions for the reviewer

Validations:

  • Must be a String

allow_websites
optional

Boolean for allowing websites to be used during the exam

Validations:

  • Must be one of: true, false, 1, 0.

allow_external_applications
optional

Boolean for allowing external applications to be used during the exam

Validations:

  • Must be one of: true, false, 1, 0.

allow_textbooks
optional

Boolean for allowing textbooks to be used during the exam

Validations:

  • Must be one of: true, false, 1, 0.

allow_calculator
optional

Boolean for allowing calculator to be used during the exam

Validations:

  • Must be one of: true, false, 1, 0.

allow_pen_paper
optional

Boolean for allowing pen and paper to be used during the exam

Validations:

  • Must be one of: true, false, 1, 0.

allow_additional
optional

Boolean for allowing additional materials to be used during the exam

Validations:

  • Must be one of: true, false, 1, 0.

allowed_websites
optional

Comma separated string with the different websites that can be used in the exam

Validations:

  • Must be a String

allowed_external_applications
optional

Comma separated string with the different external applications that can be used in the exam

Validations:

  • Must be a String

allowed_textbooks
optional

Comma separated string with the different textbooks that can be used in the exam

Validations:

  • Must be a String

allowed_calculator_type
optional

String with the calculator type that can be used in the exam

Validations:

  • Must be a String

allowed_additional
optional

Comma separated string with the different additional materials that can be used in the exam

Validations:

  • Must be a String

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String


DELETE /exams/:id
Destroy an exam

Errors

Code Description
404 Couldn't find Exam with 'id' = ':id'
403 You are not authorized to access this page.

Examples

{
  'example_request_params': {
    'id': 1,
    'nonce': '1527500365',
    'timestamp': 1527500365052,
    'signature': '8aac70c9906ad0812f4fbc34617322f985b4ac978cec861724f142cb572b88ff'
  },
  'example_response': {}
}

Params

Param name Description
id
required

ID of the requested exam.

Validations:

  • Must be a number.

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String


GET /exams/:id/index_students
(Deprecated) List the students in an exam

This API endpoint is deprecated. Please use the student_sessions endpoint instead.

Errors

Code Description
403 You are not authorized to access this page.

Params

Param name Description
id
required

ID of the student’s exam.

Validations:

  • Must be a number.

status
optional

Status to filter student sessions. Has to be one of registered,before_check_req_mail,email_bounced,email_sent,after_check_req_mail,before_check_req,after_check_req,in_setup,exam_not_started,exam_started,exam_finished

Validations:

  • Must be a String

page
optional

Page number, returns LIMIT items per page. The X-Pagination-* HTTP headers contain the information about the total number of items (X-Pagination-Item-Count), the total number of pages (X-Pagination-Page-Count), the current page number (X-Pagination-Page) and the number of items per page (X-Pagination-Limit).

Validations:

  • Must be a number.

limit
optional

Number of items returned per page. Default and maximum value is 300.

Validations:

  • Must be a number.

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String

sort
optional

Sort by column(s). Stringified JSON constisting of an array of objects with column as key and sorting order as value. Example: sort=[{“column_name”: “asc”}, {“column_name”: “desc”}]

Validations:

  • Must be a String

filter
optional

Filter by column(s). Stringified JSON consisting of an object with column as key and an object with operator as key and filtering value as value. Example: filter={“column_name”: {“operator”: “value”}} available operators: eq(equal to), gt(greater than), gte(greater than or equal to), lt(less than), lte(less than or equal to), ne(not equal to), in(in), nin(not in)

Validations:

  • Must be a String


GET /exams/id/show_student
(Deprecated) Show a student in an exam

This API endpoint is deprecated. Please use the student_sessions endpoint instead.

Errors

Code Description
404 Couldn't find Student Session with 'id'=':student_session_id'
403 You are not authorized to access this page.

Params

Param name Description
id
required

ID of the student’s exam.

Validations:

  • Must be a number.

student_session_id
required

ID of the student_session.

Validations:

  • Must be a number.

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String


GET /exams/:id/show_lti_student
Show a student in an lti exam

Errors

Code Description
404 Couldn't find Student Session with 'id'=':student_lms_id' and 'resource_link_id'=':resource_link_id'
403 You are not authorized to access this page.

Examples

{
  'example_request_params': {
    'id': 1,
    'student_lms_id':'student_1',
    'resource_link_id':'-4cd10a07a82a4bd6afc8ff27ad2981b8',
    'nonce': '1527500365',
    'timestamp': 1527500365052,
    'signature': '8aac70c9906ad0812f4fbc34617322f985b4ac978cec861724f142cb572b88ff'
  },
  'example_response': {
    'student': {
      'id': 1,
      'session_id': null,
      'student_id': null,
      'proctor_id': null,
      'time_slot': 1,
      'created_at': '2018-11-17T17:01:25.788+01:00',
      'updated_at': '2018-11-17T17:13:30.427+01:00',
      'email': 'student1@example.com',
      'operating_system': 'OS X 10.14.1',
      'browser': 'Chrome',
      'browser_version': '70.0.3538.102',
      'status': 'exam_finished',
      'token': null,
      'screenshare_check': 'not_started',
      'microphone_check': 'not_started',
      'speakers_check': 'not_started',
      'webcam_check': 'not_started',
      'mobile_check': 'not_started',
      'dummy_exam_survey': null,
      'skip_requirements': false,
      'send_confirmation': false,
      'name': 'Student 1',
      'start_time': '2018-11-17T17:09:39.373+01:00',
      'exam_id': 1,
      'expires_at': null,
      'end_time': '2018-11-17T17:10:19.477+01:00',
      'entered_room': true,
      'reservation_time': '2018-11-17T17:04:28.633+01:00',
      'exam_document_content_type': null,
      'exam_document_file_size': null,
      'exam_document_updated_at': null,
      'reviewed': '10',
      'id_card_file_name': 'data',
      'id_card_content_type': 'image/png',
      'id_card_file_size': 187297,
      'face_photo_file_name': 'data',
      'face_photo_content_type': 'image/png',
      'face_photo_file_size': 206025,
      'bandwidth_check': 'not_started',
      'bandwidth_speed': null,
      'open_time': '2018-11-13T11:13:00.000+01:00',
      'individual_info': 'individual_info for user 1',
      'rtc_session_id': 0,
      'in_setup': false,
      'in_check_requirements': false,
      'attempt': 0,
      'archived': true,
      'current_exam_mode': '01010000',
      'rtc_session_ids': [],
      'transcoding_status': 'not_sent_to_queue',
      'is_individual_info_html': true,
      'priority': '01',
      'recording_started_at': null,
      'recording_ended_at': null,
      'is_email_sent': false,
      'incidents': [{'id': 1,
        'student_session_id': 1,
        'comment': 'comment',
        'created_at': '2018-11-17T17:10:19.477+01:00',
        'updated_at': '2018-11-17T17:10:19.477+01:00',
        'offset_time':0}
      ]
    }
  }
}

Params

Param name Description
id
required

ID of the student’s exam.

Validations:

  • Must be a number.

student_lms_id
required

ID of the student in the lms

Validations:

  • Must be a String

resource_link_id
required

unique id of the lti endpoint

Validations:

  • Must be a String

context_id
optional

unique id of the context of the exam

Validations:

  • Must be a String

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String


POST /exams/:id/add_student
(Deprecated) Create and add a student to an exam

This API endpoint is deprecated. Please use the student_sessions endpoint instead.

Errors

Code Description
403 You are not authorized to access this page.
422 Param is missing or the value is empty: 'param'
422 'email':['has already been taken']

Params

Param name Description
id
required

ID of the student’s exam.

Validations:

  • Must be a number.

name
required

Name of the student.

Validations:

  • Must be a String

email
required

Email of the student.

Validations:

  • Must be a String

individual_info
optional

Individual information for the student.

Validations:

  • Must be a String

is_individual_info_html
optional

Individual information display mode: html or plain text

Validations:

  • Must be one of: true, false, 1, 0.

skip_requirements
optional

The student does not have to go through the requirements check before getting the exam session email

Validations:

  • Must be one of: true, false, 1, 0.

open_time
optional

The earliest time in EPOCH format that a student is allowed to begin their exam.

Validations:

  • Must be a number.

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String


DELETE /exams/:id/delete_student
(Deprecated) Destroy and remove a student from an exam

This API endpoint is deprecated. Please use the student_sessions endpoint instead.

Errors

Code Description
404 Couldn't find Student Session with 'id'=':student_session_id'
403 You are not authorized to access this page.

Params

Param name Description
id
required

ID of the student’s exam.

Validations:

  • Must be a number.

student_session_id
required

ID of the student_session.

Validations:

  • Must be a number.

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String


POST /exams/:id/send_emails
Send the exam emails for all the students in an exam

Errors

Code Description
404 Couldn't find Exam with 'id'=':id'
403 You are not authorized to access this page.

Examples

{
  'example_request_params': {
    'id': 1,
    'nonce': '1527500365',
    'timestamp': 1527500365052,
    'signature': '8aac70c9906ad0812f4fbc34617322f985b4ac978cec861724f142cb572b88ff'
  },
  'example_response': {
    'students': [
      {
        'id': 1,
        'status': 'exam_finished'
      }
    ]
  }
}

Params

Param name Description
id
required

ID of the requested exam.

Validations:

  • Must be a number.

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String


PUT /exams/:id/add_comanager
Add a user as a comanager to an exam

Errors

Code Description
403 You are not authorized to access this page.
422 Param is missing or the value is empty: 'param'

Examples

{
  'example_request_params': {
    'id': 1,
    'comanager_id':'5',
    'nonce': '1527500365',
    'timestamp': 1527500365052,
    'signature': '8aac70c9906ad0812f4fbc34617322f985b4ac978cec861724f142cb572b88ff'
  },
  'example_response': {
    'comanager': {
      'id': 5,
      'institute_id': 1,
      'email': 'teacher@institute.com',
      'student_number': null,
      'name': 'Teacher name',
      'created_at': '2019-01-23T12:05:52.391+01:00',
      'updated_at': '2019-01-23T12:05:52.391+01:00',
      'role': 'teacher',
      'invitation_token': null,
      'invitation_created_at': null,
      'invitation_sent_at': null,
      'invitation_accepted_at': null,
      'invitation_limit': null,
      'invited_by_id': null,
      'invited_by_type': null,
      'api_token': 'jq560vN9KZdAdFtOYH5xXw',
      'secret_key': 'NNAK4kQK3hveFpuuRMeC-DFRgn0nnUn4XpPSWofvXxY',
      'receives_reports': true,
      'report_frequency': 'week',
      'first_visit_guide': true,
      'global_proctor': true,
      'global_reviewer': true,
      'logo_image': '/logo_images/original/missing.png',
      'institute_name': 'ProctorExam'
    }
  }
}

Params

Param name Description
id
required

ID of the exam.

Validations:

  • Must be a number.

comanager_id
required

User ID of the comanager.

Validations:

  • Must be a number.

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String


DELETE /exams/:id/remove_comanager
Remove a user as a comanger to an exam

Errors

Code Description
403 You are not authorized to access this page.
422 Param is missing or the value is empty: 'param'

Examples

{
  'example_request_params': {
    'id': 1,
    'comanager_id':'5',
    'nonce': '1527500365',
    'timestamp': 1527500365052,
    'signature': '8aac70c9906ad0812f4fbc34617322f985b4ac978cec861724f142cb572b88ff'
  },
  'example_response': {
    'comanager': {
      'id': 5,
      'institute_id': 1,
      'email': 'teacher@institute.com',
      'student_number': null,
      'name': 'Teacher name',
      'created_at': '2019-01-23T12:05:52.391+01:00',
      'updated_at': '2019-01-23T12:05:52.391+01:00',
      'role': 'teacher',
      'invitation_token': null,
      'invitation_created_at': null,
      'invitation_sent_at': null,
      'invitation_accepted_at': null,
      'invitation_limit': null,
      'invited_by_id': null,
      'invited_by_type': null,
      'api_token': 'jq560vN9KZdAdFtOYH5xXw',
      'secret_key': 'NNAK4kQK3hveFpuuRMeC-DFRgn0nnUn4XpPSWofvXxY',
      'receives_reports': true,
      'report_frequency': 'week',
      'first_visit_guide': true,
      'global_proctor': true,
      'global_reviewer': true,
      'logo_image': '/logo_images/original/missing.png',
      'institute_name': 'ProctorExam'
    }
  }
}

Params

Param name Description
id
required

ID of the exam.

Validations:

  • Must be a number.

comanager_id
required

User ID of the comanager.

Validations:

  • Must be a number.

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String


PUT /exams/:id/generate_exam_documents_zip
Request a job to create a zip file of all uploaded files by students. This endpoint does not return body.

Errors

Code Description
404 Couldn't find Exam with 'id'=':id'
403 You are not authorized to access this page.

Examples

{
  'example_request_params': {
    'id': 1,
    'nonce': '1527500365',
    'timestamp': 1527500365052,
    'signature': '8aac70c9906ad0812f4fbc34617322f985b4ac978cec861724f142cb572b88ff'
  }

Params

Param name Description
id
required

ID of the subject exam.

Validations:

  • Must be a number.

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String


GET /exams/:id/status_exam_documents_zip
Check the status of existing job. Possible zip_job_status values are not_found, never_run, failure, queued, running, and success.

Errors

Code Description
404 Couldn't find Exam with 'id'=':id'
403 You are not authorized to access this page.

Examples

{
  'example_request_params': {
    'id': 1,
    'nonce': '1527500365',
    'timestamp': 1527500365052,
    'signature': '8aac70c9906ad0812f4fbc34617322f985b4ac978cec861724f142cb572b88ff'
  },
  'example_response': {
    'zip_job_status': 'not_found'
  }

Params

Param name Description
id
required

ID of the subject exam.

Validations:

  • Must be a number.

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String


GET /exams/:id/download_exam_documents_zip
Download the zip file. Before calling method clients should check if job status endpoint returns success. Successful response body of this endpoint is a binary file.

Errors

Code Description
404 Couldn't find Exam with 'id'=':id'
403 You are not authorized to access this page.

Examples

{
  'example_request_params': {
    'id': 1,
    'nonce': '1527500365',
    'timestamp': 1527500365052,
    'signature': '8aac70c9906ad0812f4fbc34617322f985b4ac978cec861724f142cb572b88ff'
  }

Params

Param name Description
id
required

ID of the subject exam.

Validations:

  • Must be a number.

timestamp
required

Timestamp of the request in milliseconds.

Validations:

  • Must be a number.

nonce
required

Random number unique between the api calls made in the previous 24 hours.

Validations:

  • Must be a number.

signature
required

HMAC sha256 hex encoded hash, using the user secret_key as key, of the query string build with all the other parameters in the format ‘name=value’ joined by ‘?’ and ordered alphabethically by name. Do not use encoding scheme on the values you use to calculate the string

Validations:

  • Must be a String