View as Markdown

SDKs & Libraries

Proctorio provides official client libraries and tools for integrating with the API.

Official SDKs

.NET SDK

The official Proctorio .NET client library for C# applications.

Installation

dotnet add package Proctorio.Client

Or via Package Manager:

Install-Package Proctorio.Client

Links

Requirements: .NET 8.0 or higher


Observe.js

Observe.js is a JavaScript SDK for monitoring Proctorio exam events in real-time. It enables learning platforms to subscribe to key lifecycle events during exam administration and implement custom logic.

Installation

Via npm:

npm install @proctorio/observe

Via CDN:

<script src="https://cdn.jsdelivr.net/npm/@proctorio/observe@1/lib/index.min.js"></script>

Usage

import { Observe } from '@proctorio/observe';

const observe = new Observe();

// Listen for exam start
observe.startExam((data) => {
  console.log('Exam started at offset:', data.offset);
});

// Listen for security flags
observe.flags((data) => {
  console.log('Security flags detected:', data.flagsData);
});

// Listen for exam end
observe.endExam((data) => {
  console.log('Exam ended at offset:', data.offset);
});

// Listen for live proctor events
observe.proctorInterrupted((data) => {
  console.log('Exam interrupted at offset:', data.offset);
});

Supported Events

EventDescription
startExamFired when the proctored exam begins
endExamFired when the exam ends
flagsFired when security flags are detected
proctorInterruptedLive proctor interrupted the exam
proctorResumedExam resumed after interruption
proctorKickoutCandidate removed by live proctor
deskScanDesk scan completed
breakStartCandidate started a break
breakEndCandidate returned from break

Links


Code Examples

cURL

curl -X POST https://us1.proctorapi.com/v2/candidate/launch \
  -H "api_key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d @request.json

Python (requests)

import requests

response = requests.post(
    "https://us1.proctorapi.com/v2/candidate/launch",
    headers={"api_key": "YOUR_API_KEY"},
    json=payload
)
candidate_url = response.json()

Node.js (fetch)

const response = await fetch("https://us1.proctorapi.com/v2/candidate/launch", {
  method: "POST",
  headers: {
    "api_key": process.env.PROCTORIO_API_KEY,
    "Content-Type": "application/json"
  },
  body: JSON.stringify(payload)
});
const candidateUrl = await response.json();

C# (HttpClient)

using var client = new HttpClient();
client.DefaultRequestHeaders.Add("api_key", apiKey);

var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(
    "https://us1.proctorapi.com/v2/candidate/launch", content);
var candidateUrl = await response.Content.ReadAsStringAsync();