AI exam proctoring — free for up to 15 exams/month Start free → See the product

Introducing the MonitorExam Proctoring SDK: Embed Secure Exam Proctoring in Your Platform

Product Launch

Introducing the MonitorExam Proctoring SDK: Embed Secure Exam Proctoring in Your Platform

MonitorExam Team · July 2026 · 5 min read

⚡ Quick Summary

  • What: A JavaScript SDK for adding AI-powered exam proctoring to any web application
  • Package: @monitorexam/proctoring via 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
faceFace not visible in cameraMajor3
cameraCamera disabled or unpluggedCritical5
micVoice/speaking detectedMinor1
tabTab switch detectedMajor4
fullscreenExited fullscreen modeMajor3
copy_pasteCopy/paste attemptedCritical5
devtoolsDeveloper tools openedCritical5
mirroringScreen mirroring detectedMajor3
networkNetwork disconnectedMinor2
batteryBattery critically lowMinor0

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

  1. Request your API key — Contact the MonitorExam team or sign up at monitorexam.com
  2. Install the SDKnpm install @monitorexam/proctoring
  3. Configure metering — Set up your endpoint and API key
  4. Initialize a session — Call sdk.initialize() with user and exam IDs
  5. Check device readiness — Use sdk.checkDevice() before starting
  6. Start proctoring — Call sdk.startProctoring() when the exam begins
  7. Subscribe to events — Handle violations and status changes in real-time
  8. 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

Does the SDK work with React, Vue, Angular, or vanilla JavaScript?
Yes. The core ProctoringSDK class is framework-agnostic and works with any JavaScript application. We also provide React-specific hooks and components for easier integration.
What browsers are supported?
The SDK supports all modern browsers with WebRTC capabilities: Chrome 70+, Firefox 65+, Safari 14+, Edge 79+. The checkDevice() method validates browser compatibility before starting.
How does licensing work?
The SDK validates your API key on initialization and enforces feature access based on your license tier. Features not included in your plan are automatically disabled.
Can I customize the violation penalties?
The default penalty weights are optimized for most use cases. Contact the MonitorExam team for enterprise customization options.
Is the SDK GDPR compliant?
Yes. The SDK is designed with privacy in mind. Images and events are only stored according to your configured retention policies, and all data can be deleted on request.
What's the difference between practice mode and exam mode?
Practice mode (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.