OptionallogSend a log message to the parent app's logger (Sentry + console).
Logs are tagged with source: 'external-app', the app URL, and slide name.
Silently fails if the parent doesn't support the log method (backward compatible).
Log level: 'debug', 'info', 'warn', 'error'
Log message
Optionalcontext: Record<string, unknown>
Optional context data
Debug log (console only, not sent to Sentry)
Optionalcontext: Record<string, unknown>Error log (sent to Sentry Logs + creates Sentry issue)
Optionalcontext: Record<string, unknown>Info log
Optionalcontext: Record<string, unknown>Warning log (sent to Sentry Logs)
Optionalcontext: Record<string, unknown>OptionaldestroyTear down the SDK: clear caches, cancel timers, remove listeners. Safe to call multiple times. Optional — older SDK builds may not implement this.
OptionaldetectRun full face detection on an ImageBitmap. Returns a 128-D descriptor (ArrayBuffer) and bounding box. The parent hosts the face-api.js worker — models persist across iframe reloads.
Optionaloptions: FaceDetectionOptionsOptionaldetectRun lightweight face presence detection (no descriptor). Faster than detectFace — use for "is someone there?" checks.
Optionaloptions: FaceDetectionOptionsExit the external app and signal result to the gallery. The gallery configuration maps results to target slides.
Optionaloptions: ExitOptionsGenerate a QR code. If no options provided, generates QR for the last recording.
Optionaloptions: { content?: string; recordingId?: string }Get all files configured for this slide, in editor order. Resolves every cached file to an iframe-owned URL eagerly. Cache misses return network URLs, which require connectivity. URLs remain valid until releaseUrl(), destroy(), or iframe unload. Videos are included.
Get an iframe-usable URL for one configured asset. Rejects when the ID is not configured on this slide. The returned URL can be assigned to a media element or fetched to read JSON, text, or bytes.
Get camera stream info. The parent window manages the actual MediaStream.
Optionaloptions: { height?: number; width?: number }Get SDK configuration.
Get a recording by ID for playback. If no recordingId provided, returns the last recording.
OptionalrecordingId: stringGet current recording status.
Get the selected camera info.
Get all available videos configured for this slide.
Get URL for a specific video.
Check if the SDK is ready.
List all available videos (alias for getVideos).
Unsubscribe from SDK events.
Subscribe to SDK events.
Subscribe to an event once.
Play a video by ID. Returns the video URL and ID for playback.
Queue a recording for background upload. The upload will continue even if the tab is closed.
Wait for the SDK to be ready. Call this before using any other SDK methods.
true when ready
Release the camera stream.
OptionalreleaseRelease an object URL returned by an asset, video, or recording method. Allows the SDK to revoke blob URLs and free memory. Asset and video methods share URLs for the same video: release only after every consumer of that URL is finished. Network URLs are unaffected. Optional — older SDK builds may not implement this.
Start recording from the camera. Recording will automatically stop after the specified duration. Listen for 'recordingComplete' event for the result.
Optionaloptions: { durationMs?: number }Stop recording early (if needed).
The main SDK interface that external apps use to interact with Choreo Display. Both the real SDK and mock SDK implement this interface.