Circadify

On-Device Processing

What the Circadify SDK handles locally before secure cloud processing.

The SDK performs camera capture and measurement payload preparation locally before sending a secure payload to Circadify. This page describes the privacy boundary and supported integration behavior without exposing low-level implementation details.

What Runs Locally

StageWhere it runs
Camera permission and captureUser device
Scan readiness and quality checksUser device
Measurement payload preparationUser device
Vital signs computationCircadify cloud

Raw camera video and raw frames are not uploaded by the SDK.

onDeviceOnly refers to this local capture and payload preparation path. It does not mean every vital sign result is computed fully on-device.

Tip

The SDK is the supported way to run local capture and payload preparation. Public docs do not describe the low-level payload format.

Quality Checks

The SDK evaluates scan conditions before and during measurement. Use callbacks such as onQualityState and onQualityWarning to guide users toward a better scan.

Common guidance includes:

  • Improve lighting
  • Hold still
  • Center the face in the frame
  • Keep the camera view unobstructed

Android Example

val sdk = CircadifySDK(
    context = context,
    config = CircadifyConfig(
        apiKey = "ck_live_your_key_here",
        callbacks = CircadifyCallbacks(
            onProgress = { event -> updateProgress(event.percent, event.phase) },
            onQualityWarning = { warning -> showHint(warning.message) },
            onQualityState = { state -> updateQualityUi(state.messages) },
        ),
    ),
)
kotlin

Failure Behavior

The current Android SDK does not generate placeholder vital signs. If capture, upload, or cloud processing fails, measureVitals() throws CircadifyError. Your app should handle the error and prompt the user to retry when appropriate.

try {
    val result = sdk.measureVitals(options)
    showResult(result)
} catch (error: CircadifyError) {
    if (error.isRetryable) {
        showRetry(error.message)
    } else {
        showError(error.message)
    }
}
kotlin
Note

The Python SDK runs this same on-device pipeline when capturing from a webcam, a video file, or your own frames — face detection, ROI extraction, and tensor preparation happen locally, and raw video never leaves the device. See Python SDK Methods.

Next Steps