Introducing the MonitorExam Proctoring SDK: Embed Secure Exam Proctoring in Your Platform
Introducing the MonitorExam Proctoring SDK: Embed Secure Exam Proctoring in Your Platform
⚡ Quick Summary
- What: A JavaScript SDK for adding AI-powered exam proctoring to any web application
- Package:
@monitorexam/proctoringvia npm - Features: Face detection, browser lockdown, audio monitoring, credibility scoring, real-time alerts
- Integration: React hooks, Context API, or vanilla JavaScript
Why We Built the SDK
Assessment platforms should focus on delivering great learning experiences—not rebuilding browser lockdown, AI monitoring, identity verification, evidence collection, and exam integrity from scratch.
The MonitorExam Proctoring SDK allows developers to integrate enterprise-grade online proctoring into existing products while keeping their own user experience, branding and assessment workflow.
Build your assessment platform. Let MonitorExam handle trust.
What's Included
📷 AI Camera Monitoring
Face detection, candidate presence monitoring, and periodic image capture with configurable intervals.
🔒 Browser Lockdown
Fullscreen enforcement, tab switch detection, copy/paste blocking, right-click prevention, and DevTools detection.
🎤 Audio Monitoring
Voice activity detection with configurable thresholds and silence delays.
📊 Credibility Scoring
Real-time integrity scoring with weighted penalties and severity levels (critical, major, minor).
🔔 Event Subscriptions
Subscribe to 20+ event types including violations, device status changes, and session lifecycle.
📡 Backend Sync
Automatic state synchronization and metering with your backend systems.
Installation
npm install @monitorexam/proctoring
Or include via CDN:
<script src="https://unpkg.com/@monitorexam/proctoring/dist/proctoring.umd.js"></script>
Quick Start
React Hook (Recommended)
import React, { useEffect } from 'react';
import {
useProctoringSession,
ProctoringOverlay,
proctoringMeter
} from '@monitorexam/proctoring';
// Configure metering (once at app startup)
proctoringMeter.configure({
endpoint: 'https://api.yourplatform.com/meter',
apiKey: process.env.MONITOREXAM_API_KEY
});
const ExamComponent = ({ user, exam }) => {
const proctoring = useProctoringSession({
userId: user.id,
examId: exam.id,
invigId: exam.invig_id,
// Feature flags
enableCamera: true,
enableMic: true,
enableFaceDetection: true,
enableTabSwitch: true,
enableFullscreen: true,
// Callbacks
onWarning: (warning) => console.log('Warning:', warning.type),
onSessionEnd: (report) => console.log('Report:', report)
});
useEffect(() => {
proctoring.initSession();
return () => proctoring.endSession();
}, []);
return (
<div>
{/* Camera preview */}
<video
ref={(el) => proctoring.setVideoElement(el)}
autoPlay
playsInline
muted
/>
{/* Your exam content */}
<iframe src={exam.url} />
{/* Proctoring UI overlay */}
<ProctoringOverlay
activeWarning={proctoring.activeWarning}
warnings={proctoring.warnings}
/>
</div>
);
};
Framework-Agnostic SDK
import { ProctoringSDK } from '@monitorexam/proctoring';
const sdk = new ProctoringSDK({
apiKey: process.env.MONITOREXAM_API_KEY,
userId: 'student_123',
examId: 'exam_456',
// Feature configuration
enableCamera: true,
enableMic: true,
enableFaceDetection: true,
enableTabSwitch: true,
enableFullscreen: true
});
// Initialize and validate license
const { success, sessionId } = await sdk.initialize();
// Check device readiness
const deviceStatus = await sdk.checkDevice();
console.log('Camera:', deviceStatus.camera.available);
console.log('Network:', deviceStatus.network.quality);
// Subscribe to events
sdk.subscribe('VIOLATION_DETECTED', (violation) => {
console.log('Violation:', violation.type, violation.message);
});
sdk.subscribe('CREDIBILITY_CHANGE', ({ score, level }) => {
console.log('Credibility:', score, level);
});
// Start proctoring
await sdk.startProctoring();
// ... exam in progress ...
// End session and get report
const { report } = await sdk.endAssessment('submit');
console.log('Final credibility score:', report.credScore);
Event Types
The SDK emits events for all proctoring activities. Subscribe to specific events or use subscribeMany() for multiple event types.
| Event | Description | Severity | Penalty |
|---|---|---|---|
face | Face not visible in camera | Major | 3 |
camera | Camera disabled or unplugged | Critical | 5 |
mic | Voice/speaking detected | Minor | 1 |
tab | Tab switch detected | Major | 4 |
fullscreen | Exited fullscreen mode | Major | 3 |
copy_paste | Copy/paste attempted | Critical | 5 |
devtools | Developer tools opened | Critical | 5 |
mirroring | Screen mirroring detected | Major | 3 |
network | Network disconnected | Minor | 2 |
battery | Battery critically low | Minor | 0 |
Use Cases
🎓 Learning Management Systems
Add secure online examinations to your LMS without replacing your assessment engine. Perfect for universities, colleges, schools, and coaching institutes.
🏆 Certification Bodies
Deliver trusted certification exams anywhere with AI-powered remote monitoring. Ideal for professional certifications, licensing, and government examinations.
💼 Corporate Training
Verify compliance assessments and training completion. Perfect for employee onboarding, partner certification, and internal technical assessments.
License Tiers & Capabilities
The SDK enforces feature access based on your license tier. Features not included in your tier are automatically disabled.
| Capability | Basic | Standard | Premium | Enterprise |
|---|---|---|---|---|
| Device Readiness Checks | ✓ | ✓ | ✓ | ✓ |
| Camera Monitoring | ✓ | ✓ | ✓ | ✓ |
| Tab Monitoring | ✓ | ✓ | ✓ | ✓ |
| Face Detection | — | ✓ | ✓ | ✓ |
| Voice Detection | — | ✓ | ✓ | ✓ |
| Fullscreen Monitoring | — | ✓ | ✓ | ✓ |
| Image Capture | — | ✓ | ✓ | ✓ |
| Reporting & Analytics | — | ✓ | ✓ | ✓ |
| Backend Sync | — | ✓ | ✓ | ✓ |
| Mirroring Detection | — | — | ✓ | ✓ |
| Desktop Capture | — | — | ✓ | ✓ |
| Live Proctoring | — | — | ✓ | ✓ |
| AI Analysis | — | — | ✓ | ✓ |
| Full Session Recording | — | — | — | ✓ |
Getting Started
- Request your API key — Contact the MonitorExam team or sign up at monitorexam.com
- Install the SDK —
npm install @monitorexam/proctoring - Configure metering — Set up your endpoint and API key
- Initialize a session — Call
sdk.initialize()with user and exam IDs - Check device readiness — Use
sdk.checkDevice()before starting - Start proctoring — Call
sdk.startProctoring()when the exam begins - Subscribe to events — Handle violations and status changes in real-time
- End session — Call
sdk.endAssessment()to get the final report
Most integrations can be completed in less than a day.
Theming
Customize the proctoring UI to match your brand:
import { createTheme, ProctoringOverlay } from '@monitorexam/proctoring';
const customTheme = createTheme({
colors: {
primary: '#6366f1',
danger: '#ef4444',
background: '#1f2937',
text: '#f9fafb'
},
fonts: {
family: 'Inter, sans-serif'
},
sizes: {
fontBase: '16px',
borderRadius: '12px'
}
});
<ProctoringOverlay theme={customTheme} {...props} />
Built-in themes available: defaultTheme, darkTheme, compactTheme, largeTheme
FAQ
ProctoringSDK class is framework-agnostic and works with any JavaScript application. We also provide React-specific hooks and components for easier integration.checkDevice() method validates browser compatibility before starting.practiceMode: true) disables credibility penalties and uses softer warning messages. Use it for system checks and candidate onboarding before the real exam.Ready to Integrate?
Get your API key, developer documentation, and sandbox access today.
Start building secure online assessments in hours, not months.