Overview
This guide covers the ProctorU Record+ API integration, which allows customers to leverage ProctorU's Record+ product offering through API calls. Record+ provides automated proctoring with post-exam review by ProctorU staff.
Key Considerations
Exam Security
- Entry Protection Required: The Test Driver must protect exam entry since automated password injection is not provided with Record+ API
- User Redirection: Users are redirected to the exam URL after completing ProctorU pre-checks
Security Solutions Available:
- JWT Encoding of the exam URL
- Incident Report Webhooks to detect unproctored exam submissions
Session Management
- Test Driver must notify ProctorU when the exam session can be terminated
API Endpoints
Start Exam Recording
Endpoint: POST /api/exams/add_record_plus_exams
Purpose: Initiates a Record+ session and returns a URL for ProctorU pre-checks
Sample Request
curl --location --request POST 'https://saml-qa-one-go.proctoru-qa.com/api/exams/add_record_plus_exams' \
--data-urlencode 'student_id=record+newuser' \
--data-urlencode 'first_name=New' \
--data-urlencode 'last_name=User' \
--data-urlencode 'email=record+newuser@demo.com' \
--data-urlencode 'country=US' \
--data-urlencode 'address1=123 here street' \
--data-urlencode 'city=Hoover' \
--data-urlencode 'state=AL' \
--data-urlencode 'zipcode=35216' \
--data-urlencode 'phone1=1234567890' \
--data-urlencode 'time_zone_id=Central Standard Time' \
--data-urlencode 'description=Record+ SAML New User 1' \
--data-urlencode 'exam_id=062122_1' \
--data-urlencode 'exam_url=https://www.TheExamURL.com' \
--data-urlencode 'duration=60' \
--data-urlencode 'preset=low' \
--data-urlencode 'whitelist_urls=[{"url":"https://www.google.com","open_on_start":"false"},{"url":"https://www.duckduckgo.com","open_on_start":"true"}]' \
--data-urlencode 'permitted_resources_list=financial_calculator, printed_notes, pdf_notes, scratch1' \
--data-urlencode 'other_resources=Custom text field shown to test takers.' \
--data-urlencode 'department_id=1028273329' \
--data-urlencode 'accommodations={"global": [113629430, 980190962], "custom": ["Service Animal (Owl)", "Food (Snacks Allowed)"]}'
Response
{
"url": "<autologin link to the auto page>",
"reservation_uuid": "deadbeef-dead-beef-dead-deaddeadbeef"
}
Required Parameters
| Parameter | Status | Description |
|---|---|---|
| student_id | Required | Integrated system's unique ID for the test taker |
| first_name | Required | Test taker's first name |
| last_name | Required | Test taker's last name |
| Required | Test taker's email address | |
| country | Required | Test taker's country |
| phone1 | Required | Test taker's phone number (default if unknown) |
| time_zone_id | Required | User's time zone (use getTimeZoneList API for options) |
| description | Required | Exam name displayed in ProctorU platform |
| exam_id | Required | External exam identifier (groups test takers) |
| exam_url | Required | URL where test taker is redirected after pre-checks |
| duration | Required | Maximum exam time (for staffing projections only) |
Conditional Required Parameters (US Only)
| Parameter | Status | Description |
|---|---|---|
| address1 | Required if Country = 'US' | Street address |
| city | Required if Country = 'US' | City |
| state | Required if Country = 'US' | State code |
| zipcode | Required if Country = 'US' | ZIP or Postal Code |
Optional Parameters
| Parameter | Description | Notes |
|---|---|---|
| preset | Exam sensitivity setting | Options: 'low', 'medium', 'high' (lowercase) |
| whitelist_urls | URLs allowed during exam | Can specify which URLs open at exam start |
| permitted_resources_list | Predefined allowed resources | See ProctorU Allowed Resources Documentation |
| other_resources | Custom resource descriptions | Free text field |
| department_id | Institution's Department ID | Use getInstitutionDepartmentList to obtain |
| accommodations | Student accommodations | JSON format with global and custom arrays |
End Exam Recording
Endpoint: POST /api/exams/add_record_plus_exams/fulfill
Purpose: Ends recording streams and completes the reservation
Request
curl --location --request POST 'https://.../api/exams/add_record_plus_exams/fulfill' \ --data-urlencode 'reservation_uuid=deadbeef-dead-beef-dead-deaddeadbeef'
Responses
Success (200):
{
"status": "fulfilled"
}
Error (404):
Fulfillment ID not found
Disconnection Handling
Automatic Reconnection Workflow
| Disconnection Duration | System Response |
|---|---|
| < 30 seconds | Attempts reconnection while allowing test taker to continue |
| 31-89 seconds | Screen grayed out to protect content; reconnection attempted |
| > 90 seconds | Reconnect button presented; test taker must repeat pre-checks |
Platform Considerations
- Integrated platforms should account for exam continuation from their interface
- Option 1: Redirect user to original URL to continue session
- Option 2: Fulfill disconnected session and create new one
Exam Access Security
JWT Encoding
- Purpose: Ensures test taker accessed exam through ProctorU
- Implementation: ProctorU encodes exam URL with JSON Web Token
- Verification: Confirms user completed pre-checks and is in proctored session
- Documentation: JWT Implementation Guide
Incident Report Webhooks
- Purpose: Detects unproctored exam submissions after the fact
- Process: ProctorU staff reviews all Record+ sessions
- Notification: "Incident Report Processed" webhook sent after review
- Limitation: Only detects issues after unproctored access has occurred
- Use Case: When Test Driver modifications are not possible
- Documentation: Available Webhooks
Important Notes
Duration Parameter
- ProctorU does not control actual exam timing
- Test engine manages time limits
- Duration used only for ProctorU staffing projections
Exam Grouping
- Same
exam_idfor multiple test takers groups them under single exam in ProctorU platform
Security Presets
- Low: Basic monitoring
- Medium: Enhanced monitoring
- High: Maximum security measures
- Reference: ProctorU Security Preset Documentation
Related APIs
- getTimeZoneList: Retrieve supported time zones
- getInstitutionDepartmentList: Get Department IDs
- ProctorU Webhooks: Event notifications
- JWT Configuration: Exam URL security setup
Support Resources
- API Documentation: ProctorU Postman Collection
- Security Settings: ProctorU Security Preset Documentation
- Allowed Resources: ProctorU Allowed Resources Documentation
- Webhooks: ProctorU Webhooks Documentation