Branch on status first
The wire contract defines success, rejected, and error. Some official SDKs also preserve an unknown forward-compatible outcome when a newer server response cannot be safely mapped. Code an explicit branch for every state and deny silent fallthrough to approval.
The billable field is independent of whether a score exists. In documented face-policy cases, the service can return a billable rejection on HTTP 200 with null risk fields.
Use risk as evidence
For images, risk_score is an opaque 0.1 through 10.0 value and risk_level is low, medium, or high. The contract advises using the risk band for business rules because thresholds may be tuned.
For videos, apply the same status-first rule, then inspect video and audio fields independently. A silent video can have a valid video result and no audio score. Preserve that distinction in storage, review screens, and downstream events.
Record what the decision needs
Retain the transaction identifier, outcome status, billable indicator, relevant risk bands, and the policy decision made by your system. Keep the original modality values when a client-side policy derives an overall video decision.
Human-readable messages can support user recovery and review, but raw diagnostic envelopes, filenames, local paths, and headers may contain sensitive operational data. Follow the selected SDK's documented serialization surface and sanitize support artifacts.
Evidence boundary
Limitations
- No public result field proves authenticity or replaces a broader decision process, human review, or other evidence required by the use case.
Source record
