API Reference
API Reference for the SmartSpectra SDK.
SmartSpectraSDK
Vitals measurement entry point. Owns one processing pipeline and surfaces lifecycle events via on(). Lifecycle methods throw a JS Error on failure with numeric code (a SmartSpectraErrorCode value), message, and boolean retryable properties.
Methods
-
constructor(options?: SmartSpectraOptions) -
start(): void -
stop(): void -
stopAsync(): Promise<void> -
reset(): void -
waitUntilComplete(timeoutMs?: number): booleanBlock until the session reaches a terminal state (idle or error), or the timeout elapses. Returns true if the session settled, false on timeout.
timeoutMs <= 0(the default) waits indefinitely. Use afteruseFile()+start()to block until end-of-file. -
destroy(): Promise<void>Tear down the session. Idempotent. Await before constructing a replacement session when teardown ordering matters, since native SDK state is process-global.
-
requestInsight(text: string): numberDispatch an on-demand insight prompt; returns the request id. The matching Insight response arrives asynchronously through the
'insight'event with the same id. -
useCustomInput(frameTransform?: FrameTransformValue): thisSelect the custom frame-push input source (push frames via
sendFrame()afterstart()). Returnsthisfor chaining; call beforestart(). -
useCamera(options?: CameraOptions): thisSelect a live camera as the input source. The SDK opens the camera and pumps frames internally on
start()— nosendFrame()needed. Returnsthisfor chaining. Captures in THIS process — for Electron, prefer the renderer SDK'suseMediaStream(). -
useFile(videoPath: string, options?: VideoFileOptions): thisSelect a pre-recorded video file as the input source.
start()begins playback (non-blocking, on SDK worker threads); usewaitUntilComplete()or watch'processingStatus'for the idle transition to detect end-of-file. Returnsthisfor chaining. -
sendFrame( buffer: Uint8Array | Buffer, width: number, height: number, stride: number, pixelFormat: PixelFormatValue, timestampUs: number, ): booleanSubmits a raw video frame. Requires
useCustomInput()+start()first. -
on(event: 'processingStatus', callback: (status: ProcessingStatusValue) => void): thisRegister a callback for a named event. Replaces any previously registered callback for the same event. Returns
thisfor chaining. -
on(event: 'validationStatus', callback: (code: ValidationCodeValue, timestampUs: number, hint: string) => void): this -
on(event: 'metrics', callback: (buf: Buffer, timestampUs: number) => void): this -
on(event: 'accumulatedMetrics', callback: (buf: Buffer, timestampUs: number) => void): this -
on(event: 'insight', callback: (buf: Buffer, requestId: number) => void): this -
on(event: 'error', callback: (code: SmartSpectraErrorCodeValue, message: string, retryable: boolean) => void): this -
on(event: 'frameSentThrough', callback: (sent: boolean, timestampUs: number) => void): this -
on(event: 'videoOutput', callback: (buf: Buffer, width: number, height: number, stride: number, pixelFormat: PixelFormatValue, timestampUs: number) => void): this
SmartSpectraOptions
apiKey?: stringrequestedMetrics?: number[]MetricType integer codes. Defaults to breathingMetrics when omitted.
enableAccumulatedOutput?: booleanVideoFileOptions
timestampsPath?: string | nullinterframeDelayMs?: numberstartOffsetMs?: numbermaxDurationMs?: numberframeTransform?: FrameTransformValueCameraOptions
deviceIndex?: numberwidth?: numberheight?: numberfps?: numberframeTransform?: FrameTransformValueFrameTransform
readonly kNone: 0readonly kRotate90CW: 1readonly kRotate90CCW: 2readonly kRotate180: 3readonly kMirrorHorizontal: 4readonly kMirrorVertical: 5
PixelFormat
readonly kRGB: 0readonly kBGR: 1readonly kRGBA: 2readonly kBGRA: 3readonly kNV12: 4readonly kNV21: 5readonly kYUYV: 6
ProcessingStatus
readonly kUninitialized: 0readonly kIdle: 1readonly kStarting: 2readonly kRunning: 3readonly kStopping: 4readonly kError: 5
ValidationCode
readonly kOk: 0readonly kNoFaceFound: 1readonly kMultipleFacesFound: 2readonly kFaceNotCentered: 3readonly kFaceSizeOutOfRange: 4readonly kTooDark: 5readonly kTooBright: 6readonly kChestNotVisible: 7readonly kCameraTuning: 10readonly kFrameRateTooLow: 11
SmartSpectraErrorCode
readonly kOk: 0readonly kInvalidState: 1readonly kAuthenticationFailed: 2readonly kConfigurationFailed: 3readonly kCreditExhausted: 4readonly kNetworkError: 5readonly kServerError: 6readonly kInputUnavailable: 7readonly kProcessingFailed: 8readonly kFrameConversionFailed: 9readonly kNonMonotonicTimestamp: 10readonly kTimestampGap: 11
decodeMetrics()
Deserialize a protobuf Metrics buffer from the 'metrics' or 'accumulatedMetrics' events. Returns the decoded message if a class has been registered via setMetricsClass, otherwise the raw Buffer.
export declare function decodeMetrics(buf: Buffer): unknown
setMetricsClass()
Register a protobuf Metrics class exposing deserializeBinary(buf) (google-protobuf) or decode(buf) (protobufjs). decodeMetrics() will use it; otherwise the raw Buffer is returned.
export declare function setMetricsClass(cls: unknown): void