SDK Telemetry & Privacy
What the SmartSpectra SDK's aggregate, opt-out session telemetry collects, how to disable it, and the privacy guarantees behind it.
The SmartSpectra SDK can report a small, aggregate diagnostic summary once per measurement session. It exists so we can measure release quality across the devices and conditions the SDK actually runs on — which platforms work well, where sessions fail, and under what conditions. It is designed to be lightweight and privacy-preserving.
What is collected
A single aggregate summary per session, containing only:
- SDK build — SDK version (with a short commit appended for non-release builds) and package origin.
- Runtime — platform, OS version, device model, CPU architecture, SDK binding.
- Session shape — source kind (camera / video file / custom input), outcome (completed / stopped / reset / error), and the number of metrics requested.
- Performance — frame throughput counts, input frame-rate statistics, startup-latency milestones, flow-limiter throughput, and produced-metric counts.
- Quality — counts of on-device validation states (e.g. lighting or motion warnings) and, for a failed session, a coarse error code.
- A wall-clock timestamp for the session.
What is NOT collected
The telemetry is aggregate-only. It never includes:
- Raw video or image frames.
- Measured vitals values (pulse, breathing, blood pressure, …).
- File paths, prompts, or free-text error messages.
- User identifiers or stable device identifiers.
Because it carries no stable identifiers and no measurement values, it is not linked to a user's identity and is not used for tracking. For Apple App Store privacy labels this maps to the Performance Data and Product Interaction types; for Google Play Data Safety it corresponds to App info and performance and App activity — in both cases not linked to identity and not used for tracking.
Turning it off
Telemetry is opt-out through configuration on supported SDKs. It defaults to on; when disabled, the SDK starts no telemetry session and transmits nothing. Set the opt-out on the SDK config:
- Positive
enableTelemetry = false—SmartSpectraConfig::enable_telemetryin C++,enableTelemetryin Swift/iOS, Kotlin/Android, Node, React Native, and the .NET wrapper (SmartSpectraConfig.EnableTelemetry). - Negative
disable_telemetry = 1in the C/FFI surfaces — the C ABI (smartspectra_config_t.disable_telemetry) and Go (Config.DisableTelemetry), inverted so a zero-initialized config keeps telemetry on.
Telemetry is sent over the same authenticated, TLS-pinned channel the SDK uses for its other server requests, and only while the SDK has an active server session — never to a separate or unauthenticated destination. Delivery is best-effort: a summary that cannot be sent is dropped and never affects the measurement session.
Your responsibilities
If you distribute an application that embeds the SDK, disclose this collection to your users and complete your app-store data-collection declarations accordingly, consistent with Presage's Privacy Policy.