Embed a guided vital check without rebuilding the pipeline

Clean lifecycle: initialize, attach, start, listen to quality events, receive a typed structured result. Web Worker support keeps the UI responsive. Optional modules do not pollute the core API.

TypeScriptReactVueSveltePlain HTML

Five essential concepts

import { CameraVitalCheck } from 'camera-vital-check';

// Create a scanner instance
const scanner = new CameraVitalCheck({
  element: document.querySelector('#video'),
  lang: 'en',
  quality: { minGrade: 'moderate' },
  voice: { enabled: true },
  onReady: () => console.log('Camera opened'),
  onQuality: (q) => updateUI(q),
  onProgress: (pct) => setProgress(pct),
});

// Start the scan
await scanner.start();

Choose the right depth

Drop-in Widget

One script tag. No configuration required. Renders a complete scan UI.

Integration effort< 30 minutes
Control levelMinimal
Output formatPostmessage result event

JavaScript SDK

Full lifecycle API. Custom UI. Access to quality events and typed result.

Integration effortHalf day
Control levelFull
Output formatTyped result object

REST Webhook

Post scan results to your backend endpoint. Useful for server-side logging.

Integration effort1–2 hours
Control levelResult only
Output formatJSON POST to your endpoint

What comes with the SDK

TypeScript-first

Full type definitions included. Result schema is strictly typed.

Framework agnostic

Works with React, Vue, Svelte, or plain HTML.

Web Worker support

rPPG processing in background thread β€” UI stays responsive.

Typed result schema

status, hr, rr, quality, confidence, reasons, metadata.

Quality events

Real-time quality callbacks throughout the scan lifecycle.

Customisable voice guide

Override any message string. Supports additional languages.

Modular options

Enable only the components you need. Tree-shakeable exports.

Zero external dependencies

No CDN calls during a scan. Fully self-contained.

What the SDK sends externally

Camera stream
Never transmitted
Face images
Never transmitted
Biometric data
Never transmitted
Structured result (HR, RR, quality)
Sent to your webhook if configured
Anonymous telemetry
Optional. Disabled by default.