---
title: "Create Exam"
method: POST
path: "/v1/installs/{installSid}/courses/{courseSid}/exams"
tags: ["Exam"]
---

# Create Exam

`POST /v1/installs/{installSid}/courses/{courseSid}/exams`

## Request

- Base URL: `https://api.smarterproctoring.com`
- URL: `https://api.smarterproctoring.com/v1/installs/{installSid}/courses/{courseSid}/exams`
- Auth: API key in header `token`

Creates a new exam configuration under the specified course.<br/><br/>The payload includes exam metadata (title, type, URL), proctoring configuration, permitted items, scheduling windows, and instructor-as-proctor settings.

## Path parameters

- `installSid` string, required: Unique SID of the application install. Pattern: `AI` + 32 hex chars.
- `courseSid` string, required: Unique SID of the course. Pattern: `CU` + 32 hex chars.

## Request body

- Exam: Payload for creating a new exam with full configuration.
  - `title` string, required: Display title for the exam.
  - `type` 'Online' | 'Written', required: Exam type. `Online` for web-based exams (requires URL and password), `Written` for paper-based exams.
  - `description` string, nullable: Optional description providing additional details about the exam.
  - `useProctorManager` boolean, required: Whether to use the proctor manager for automated proctor assignment.
  - `requireApproval` boolean, required: Whether exam sessions require manual approval before the student can begin.
  - `url` string, required: Exam URL
  - `enableAppointmentSuggestions` boolean, required: Whether to show suggested appointment time slots to students during scheduling.
  - `examDeliverySystemModule` string, nullable: Identifier for the exam delivery system module (e.g., LMS integration module name). Optional field controlled by feature flag.
  - `contactUserSid` string, nullable: SID of the user to contact for exam-related issues. Pattern: `US` + 32 hex chars.
  - `isLimitedScope` boolean: When true, the exam is assigned to specific students only. When false, all enrolled students can take the exam.
  - `configuration` Model45, required
    - `instructorAsProctor` Model42[], required: List of Instructor as Proctor
      - `location` string, required: Location
      - `timeType` 'between' | 'at', required: Time Type
      - `startTime` string, required: Start Time
      - `endTime` string, required: End Time
      - `capacity` number, nullable: Capacity
    - `examOpenDate` string, required: Exam Open Date
    - `examCloseDate` string, required: Exam Close Date
    - `scheduleOpenDate` string, nullable: Schedule Open Date
    - `scheduleCloseDate` string, nullable: Schedule Close Date
    - `password` string, required: Password
    - `duration` integer, required: Duration Minutes
    - `attempts` integer, required: Attempts Allowed
    - `requiredSoftware` string, nullable, required: Required Software
    - `studentNotes` string, nullable, required: Student Notes
    - `permittedBathroomBreak` boolean, required: Is Bathroom Break permitted
    - `permittedBathroomBreakInformation` string, nullable, required: Additional Information about bathroom break
    - `permittedBlankPaper` boolean, required: Is blank paper permitted
    - `permittedBlankPaperInformation` string, nullable, required: Additional Information about blank paper
    - `permittedCalculator` boolean, required: Is calculator permitted
    - `permittedCalculatorInformation` string, nullable, required: Additional Information about calculator
    - `permittedDictionary` boolean, required: Is Dictionary permitted
    - `permittedDictionaryInformation` string, nullable, required: Additional Information about Dictionary
    - `permittedEarplugs` boolean, required: Is Earplugs permitted
    - `permittedEarplugsInformation` string, nullable, required: Additional Information about Earplugs
    - `permittedFormulaSheet` boolean, required: Is FormulaSheet permitted
    - `permittedFormulaSheetInformation` string, nullable, required: Additional Information about FormulaSheet
    - `permittedNotes` boolean, required: Is Notes permitted
    - `permittedNotesInformation` string, nullable, required: Additional Information about Notes
    - `permittedOtherItems` string, nullable, required: Other permitted Items
    - `permittedTextbook` boolean, required: Is Textbook permitted
    - `permittedTextbookInformation` string, nullable, required: Additional Information about Textbook
    - `permittedWebsites` boolean, required: Is Websites permitted
    - `permittedWebsitesInformation` string, nullable, required: Additional Information about Websites
    - `proctorNotes` string, nullable, required: Proctor Notes
    - `proctorTypes` string[], required: Types of proctor for exam
    - `apiExamId` string, nullable: API exam ID
    - `modalityOptions` ModalityOptions: List of modality options
    - `virtualCalculatorType` 'scientific-calc' | 'graphing-calc' | 'matrix-calc' | 'four-function-calc', nullable: Calculator for student to use
  - `status` 'active' | 'draft' | 'deleted': Status of the exam. `active` exams are visible to students, `draft` are in preparation, `deleted` are soft-deleted.

## Response `200`

Successful

- ExamResponse
  - `sessionStatus` string, nullable: Session status
  - `sid` string, nullable: Exam SID
  - `courseSid` string, nullable: Course SID
  - `applicationInstallSid` string, nullable: Application install SID
  - `title` string, nullable: Exam title
  - `bVirtualTitle` string, nullable: Virtual title
  - `type` string, nullable: Exam type
  - `description` string, nullable: Description
  - `useProctorManager` boolean, nullable: Use proctor manager
  - `requireApproval` boolean, nullable: Require approval
  - `enableAppointmentSuggestions` boolean, nullable: Enable appointment suggestions
  - `url` string, nullable: Exam URL
  - `status` string, nullable: Exam status
  - `createdDate` string, nullable: Created date
  - `editDate` string, nullable: Last modified date
  - `contactUserSid` string, nullable: Contact user SID
  - `examDeliverySystemModule` string, nullable: Exam delivery system module
  - `summary` string, nullable: Exam summary
  - `pendingApprovals` number, nullable: Pending approvals count
  - `openSessionEvents` number, nullable: Open session events count
  - `course` string, nullable: Course details
  - `configuration` string, nullable: Exam configuration
  - `examSession` string, nullable: Exam session
  - `instructorName` string, nullable: Instructor name
  - `courseName` string, nullable: Course name
  - `totalSessions` number, nullable: Total sessions
  - `needsProctorSessions` number, nullable: Sessions needing proctor
  - `scriptName` string, nullable: Script name
  - `systemName` string, nullable: System name
  - `isLimitedScope` boolean, nullable: Is limited scope
  - `platformVersion` string, nullable: Platform version

## Changes

- **2026-08-06** `561e0d9fd244`: 1 info
  - the request property `configuration/apiExamId` became nullable
- **2026-07-21** `9a73a4e9185a`: 1 info
  - the request property `contactUserSid` became nullable

[Operation history](https://skmtc.dev/smarterproctoring/apis/smarterproctoring-api-2/changes/v1/installs/:installSid/courses/:courseSid/exams/post.md)

---

[API](https://skmtc.dev/smarterproctoring/apis/smarterproctoring-api-2.md) - [All operations](https://skmtc.dev/smarterproctoring/apis/smarterproctoring-api-2/llms.txt) - [OpenAPI document](https://skmtc.dev/smarterproctoring/apis/smarterproctoring-api-2/revisions/7199a3921c9d?raw)
