Query Parameter | Description |
ak | This is your Public-API-Key, which Mettl uses to identify your account. |
ts | This is the current UNIX or Epoch Timestamp (the number of seconds between 1970-01-01 00:00:00 and current UTC Time). Any current generated Timestamp will be valid for 24 hours only. |
asgn | This is a unique Signature which has to be generated for each API request . The Signature is generated by creating a String-to-Sign and hashing it with your Private-API-Key using the HMAC-SHA256 (for version v2 and v3) or HMAC-SHA1 (for v1) hashing algorithm with Base-64 and URL encoding. Read more about the above Signature Generation Process in API Authentication and Signature Generation. |
sc | This is a JSON string containing the details of the schedule/ test link to be created. The format for the JSON is given below |
Property | Sub Property | Sub Property | Description |
name | Name of the schedule/ test link to be created. This string is mandatory and has to be unique for each schedule in your assessment. | ||
sourceApp | Name of your application. This string is mandatory. | ||
access | Schedule access settings, shown as the Private access only checkbox in your Test Link Settings in dashboard. This nested JSON is mandatory. | ||
↳ | type | Schedule access type, can be either public access or private access only. This string is mandatory within access JSON and only accepts "OpenForAll" or "ByInvitation". When "ByInvitation" is chosen, details of candidates are required to be configured in the candidates property below. | |
↳ | sendEmail | Determines whether a start test mail will be sent to the candidates when their details are added to "ByInvitation" schedule. This boolean is optional, false by default and only works when access type is "ByInvitation". | |
↳ | isCandidateCrfPrefilled | Determines whether the candidate registration fields, except for email, already provided when adding candidates will be skipped before starting the test. This boolean is optional, false by default and only works when access type is "ByInvitation". | |
↳ | candidates | Details of candidates who have access to "ByInvitation" schedule. This list of nested JSON(s) is mandatory when access type is "ByInvitation". eg. [{"name": "Name", "email": "name@email.com", "Date of birth": "Sep 16 1998"},{"name": "Name2", "email": "name2@email.com", "Date of birth": "Jan 1 1996"}] | |
↳ | Candidate's email id. This string is mandatory in each candidates JSON. | ||
↳ | name | Candidate's name. This string is mandatory in each candidates JSON. | |
↳ | compensatory_time | This parameter is used to to extend the test time as an accessibility compliance. This integer is optional and should be more than or equal to 0. | |
↳ | *exact name of other Candidate Registration Fields | This property represents all other candidate registration fields and the name of the property is the exact name of the registration field. This string is optional. | |
scheduleType | Schedule access time, can be either Anytime access or Fixed access. This string is mandatory and only accepts "AlwaysOn" or "Fixed". When "AlwaysOn" is chosen, the test link is accessible at any time. When "Fixed" is chosen, the test link is accessible at only at specific times and settings for the exact access time are required to be configured in the scheduleWindow JSON below. | ||
scheduleWindow | Fixed access time settings. This nested JSON is mandatory when scheduleType is "Fixed". | ||
↳ | fixedAccessOption | Determines whether the test link will be accessible at any time of day or only during certain hours or slots. This string is optional and only accepts "ExactTime" or "SlotWise" with the default value being "ExactTime". With "ExactTime", the test is accessible during any time of day between the start and end, time and date. With "SlotWise", the test is accessible during specific time of day between the start and end date. | |
↳ | startsOnDate | Start date for access period. This string is mandatory in scheduleWindow JSON in the given format. eg. "Wed, 20 Oct 2021", "Fri, 11 Feb 2022" | |
↳ | startsOnTime | Start time for access period. This string is mandatory in scheduleWindow JSON in the given format. eg. "09:00:00", "12:00:00" | |
↳ | endsOnDate | End date for access period. This string is mandatory in scheduleWindow JSON in the given format. eg. "Thu, 21 Oct 2021", "Sat, 12 Feb 2022" | |
↳ | endsOnTime | End time for access period. This string is mandatory in scheduleWindow JSON in the given format. eg. "15:00:00", "18:00:00" | |
↳ | timeZone | Time zone represented as UTC offset defined in tz database. This string is mandatory when locationTimeZone is not used in the scheduleWindow JSON in the given format. eg. "UTC+05:30", "UTC-08:00" | |
↳ | locationTimeZone | Time zone location in the format defined in tz database. This string is mandatory when timeZone is not used in the scheduleWindow JSON in the given format. eg. "Asia/Kolkata", "America/Los_Angeles" | |
webProctoring | Browsing tolerance settings. This nested JSON is optional and disabled by default. | ||
↳ | enabled | Determines whether Browsing tolerance is enabled. This boolean is optional and false by default. | |
↳ | count | Number of times a test taker is allowed to navigate away from the test window, before the test ends. This integer is optional and should be more than or equal to 0. | |
↳ | showRemainingCounts | Determines whether remaining counts of Browsing tolerance are shown. This boolean is optional and false by default. | |
visualProctoring | Advanced Visual Proctoring settings. This JSON is optional and disabled by default. | ||
↳ | mode | Determines whether Advanced Visual Proctoring is enabled when "PHOTO" is chosen. This string is optional and only accepts "PHOTO" or "OFF" with the default value being "OFF". | |
↳ | options | Additional settings when Advanced Visual Proctoring is enabled. This nested JSON is optional and disabled by default. | |
↳ | candidateScreenCapture | Determines whether time-interval based screen-grabs of candidates test screen are taken. This boolean is optional and false by default. | |
↳ | candidateAuthorization | Determines whether a manual live authorization process is enabled for starting the test. This boolean is optional and false by default. | |
secureBrowser | Mettl Secure Browser setting. This nested JSON is optional and disabled by default. | ||
↳ | enabled | Determines whether Mettl Secure Browser is enabled. This boolean is optional and false by default. | |
protected | Determines whether OTP sent on email Id is required before starting the test. This string is optional, only accepts "OtpOnEmail" to enable and is disabled by default. | ||
testStartNotificationUrl | URL to configure start test webhook notifications. This string is optional and only accepts a valid URL. | ||
testFinishNotificationUrl | URL to configure finish test webhook notifications. This string is optional and only accepts a valid URL. | ||
testGradedNotificationUrl | URL to configure test results webhook notifications. This string is optional and only accepts a valid URL. | ||
testResumeEnabledForExpiredTestURL | URL to configure expired test resume webhook notifications. This string is optional and only accepts a valid URL. | ||
testNotificationBasicAuthHeader | Basic Authentication header which is returned in the above webhook notifications. You can input a value in the format base64encoded(username:password) in order to receive additional individual headers for username and password as well. This string is optional with the default behavior being no authentication sent in webhook notifications. | ||
testGradeNotification | Settings for sending test result email notifications. This nested JSON is optional and disabled by default. | ||
↳ | enabled | Determines whether test result email notifications are enabled. This boolean is optional and false by default. | |
recipients | Email ids of the recipients for test result email notifications. This list of string(s) is mandatory when testGradeNotification is enabled and accepts only valid email ids in the given format, eg. ["admin@email.com", "admin2@email.com"] | ||
ipAccessRestriction | IP address restriction settings. This nested JSON is optional and disabled by default. | ||
↳ | enabled | Determines whether IP address restriction is enabled. This boolean is optional and false by default. | |
↳ | type | Configures whether IP address restriction will be applicable on a single or a range of IP addresses. This string is mandatory when ipAccessRestriction is enabled and only accepts either "SINGLE" or "RANGE" When "SINGLE" is selected, the restricted IP address is set using the ip property below. When "RANGE" is used, the range of restricted IP address is set using the ranges property. | |
↳ | ip | Single IP address in IPv4 format. This string is mandatory when ipAccessRestriction type is "SINGLE" and accepts the given format. eg. "0.0.0.0", "255.255.255.255" | |
↳ | ranges | Range of IP addresses in IPv4 format. This list of nested JSON(s) is mandatory when ipAccessRestriction type is "RANGE" and accepts the given format. eg. [{"start":"128.128.128.128","end":"128.128.128.130"}, {"start":"64.64.64.64","end":"64.64.64.67"}] | |
↳ | start | Starting IP address in the range of addresses. This string is mandatory in ranges JSON. | |
↳ | end | Ending IP address in the range of addresses. This string is mandatory in ranges JSON. |
Overall Status | Detailed Status | Description |
Yet to Start | Mapped | Test-takers have been added to a test-link via candidate banks or manual entry, but an email hasn’t been sent. |
Yet to Start | Invited | Test-taker has been invited for the test via email. |
Yet to Start | Registered | Test-taker has registered by clicking on proceed/submit button on the test-taker portal. |
Not Started | Access Expired | 1-Test-taker didn't start the test and access time elapsed. 2- Test-taker has registered by saving registration fields on test-taker portal but didn’t start the test and access time elapsed. 3- In case of deadline-based assessments, this status will be displayed when submission date is elapsed. |
In-progress | In-progress | Test –taker has started the test |
In-progress | Awaiting Resume Permission | Test-taker got disconnected and is awaiting resume permission from admin (if Supervised resume is enabled). |
Completed | Test-taker completed | Test-taker clicked on the Finish button to submit the test. |
Completed | Time Over | The test was auto-submitted as the test-taker ran out of time. |
Test Stopped | Mic Mute Limit exceeded | The test was stopped because of exceeding mic mute count. |
Test Stopped | Browsing Tolerance Limit Exceeded | The test was stopped because of exceeding Browsing Tolerance. |
Test Stopped | Proctor Stopped | Proctor stopped the test. |
Test Stopped | Suspicious Software Detected | The test was stopped because of suspicious software. |
Test Stopped | Multiple Screen Detected | The test was stopped because of multiple screens detected. |
Test Stopped | Prohibited Apps Running | The test was stopped because of prohibited apps running. |
Test Stopped | Screen Capture/Recording Detected | The test was stopped because of screen capture/recording. |
Test Stopped | Screen Sharing/Remote Access Detected | The test was stopped because of screen share/remote access. |
Blocked | Authorizer Blocked | The authorizer blocked the test-taker from starting the test. |
Disconnected | Disconnected from Server | The test-taker got disconnected because of power failure/bad internet and couldn't resume within 30 minutes. |
Disconnected | Test Window Closed | Test-taker closed the window and navigated away from the screen. Test-taker didn't resume the test in 30 mins. |
Disconnected | Awaiting Test-taker Resume | The test-taker got disconnected and admin resumed the test (normal resume). |
finish_mode (in webhook response) | completionMode (in webhook response) | Test Finish Mode (in candidate reports) | Description |
TimeExpired | AutoCompleted | Auto Submit | Test Time finished before candidate could attempt all questions. |
Blocked | NA | Blocked | Candidate blocked at the authorization stage (For Proctored Test with Authorization On). |
BrowsingToleranceExceeded | BrowsingToleranceExceeded | Browsing Tolerance Exceeded | When browsing tolerance is set and test taker navigates away from the test window more than the permissible number or times (browsing tolerance limit). |
TestExpired | Expired | Expired | If candidate gets disconnect (Loss of internet connection, etc) or his/her system shuts down abruptly and he/she is unable to resume the test. |
NormalSubmission | Completed | Normal | Finish Test button Clicked. |
ParentFinish | ParentFinished | Normal | The background parent window is closed. |
ProctoredFinish | ProctoredFinish | Proctored Finish | Image Proctored Test ended by Proctor. |
NA | ResumeEnabled | Resume Enabled | Candidate allowed to resume tests from same point where test got over, only can be done if initial status was Expired. |
SuspiciousSoftwareFinish | SuspiciousSoftwareFinish | Suspicious Software Finish | Suspicious Software detected Eg TeamViewer, SplashTop etc also found running and Mettl automatically closes test. |
CandidateClosed | CandidateClosed | Test Window Closed | Test Window Closed without clicking on Finish Test. |