Overview
This guide walks through the end-to-end process of integrating a 3rd party exam platform with SmarterProctoring. If you operate an external testing or assessment system and wish to leverage SmarterProctoring for proctoring services, this integration pattern covers everything from initial provisioning through to launching a proctored exam session. The integration follows four key steps:- Provision the course, exam, user, and enrollment via a single API call
- Assign the user to the exam (required when using limited scope)
- Schedule an exam session for the user
- Redirect the user to the onboarding experience
Prerequisites
Before starting, make sure you have:- A valid API token for authentication. Contact your SmarterProctoring account manager to obtain one.
- Your Install SID (
installSid), which identifies your SmarterProctoring installation. This follows the patternAI+ 32 hex characters (e.g.,AIa1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6). - If you plan to use the
signonobject in provisioning, your Integration SID (integrationSid), which follows the patternII+ 32 hex characters.
token header:
Step 1: Provision Course, Exam, User, and Enrollment
The Provision endpoint is the core of the integration. It allows you to create or reference a course, exam, user, and enrollment in a single API call. This is the call that links all entities together between your external platform and SmarterProctoring.Understanding Resource Identifiers
Each entity in the provision payload requires anids object. You can reference entities using one of the following identifier types:
You only need to provide one identifier type per entity. If the entity already exists and you pass its identifier, SmarterProctoring will match against it rather than create a duplicate.
Provision Request Body
Below is a full example of a provision request for a 3rd party integration:Key Fields Explained
Course
Thecourse object is required in every provision call. For 3rd party integrations where your source system does not have a concept of a “course,” you can use this field as an organizational grouping. For example, in a multi-tenant setup, you could place each client account into its own course to segment data cleanly.
Exam
Exam Configuration
Theconfiguration object within exam defines how the exam is set up for proctoring:
User
Enrollment
Theenrollment object is optional. If omitted and a new user is being created, they will be enrolled as a learner by default.
Signon (Optional)
If you want the provision response to return a redirect URL for single sign-on, include thesignon object:
Step 2: Update Exam Assignments
WhenlimitedScope is set to true during provisioning, exam sessions are not automatically created for each enrollment. Instead, you must explicitly add users to the exam via the Update Exam Assignments endpoint.
Example Request
Use the SIDs returned from the provision call in Step 1 to populate the
courseSid, examSid, and enrollmentSid values here.Step 3: Schedule an Exam Session
Once the user has been assigned to the exam, you can schedule their exam session. This is a two-part process:- List the enrollment’s exam sessions to find the correct active session
- Schedule that session with a date and time
3a. List Enrollment Exam Sessions
Use the List Enrollment Exam Sessions endpoint to retrieve sessions for the given enrollment and exam combination. Filter bystatus=active to get only the sessions that are eligible for scheduling.
examSessionSid (prefixed with ES).
3b. Schedule the Exam Session
Once you have theexamSessionSid, call the Schedule Exam Session endpoint to assign a date and time.
Example Request
Step 4: Redirect to Onboarding
The final step is to send the user to the SmarterProctoring onboarding experience. Onboarding walks the student through pre-exam steps such as system checks, identity verification, and environment scans. Use the Get Onboarding URL endpoint:- Immediate redirect: Call this endpoint right after scheduling and redirect the user to the onboarding URL in the same workflow.
- Deferred redirect: Store the
examSessionSidand call this endpoint later when the user is ready to begin their exam. The onboarding URL is generated on demand, so it is safe to call this at any point after the session has been scheduled.
Example Response
url to begin the onboarding process.
IMPORTANT NOTE: DO NOT save this url as it is a single use URL and will expire.
Error Handling
All API responses follow standard HTTP status codes. Common errors you may encounter:Best Practices
- Store SIDs: Always persist the SIDs returned from the provision call. You will need them for assignments, scheduling, and onboarding.
- Use external IDs: Map your platform’s native entity IDs into the
externalidentifier field. This makes it easy to look up SmarterProctoring entities from your system. - Set
limitedScopetotrue: This gives you explicit control over session creation and avoids unnecessary exam sessions. - Use courses for segmentation: Even if your platform does not have a course concept, use the course object to group exams logically (e.g., by client account, department, or certification program).
- Handle idempotency: The provision endpoint will match existing entities by identifier rather than creating duplicates. You can safely re-call provision with the same IDs if you need to update or re-link entities.
- Validate time zones: When creating users, pass an IANA time zone string (e.g.,
"America/Chicago") so that scheduling displays correctly for the student.
