Skip to main content
Both calls on this page require your secret key. The sst_ client token can never reach them. Use the session id your client reported to fetch the authoritative result — what the client says happened is a hint; what the API returns is the truth.

Reading the Result

When your client reports completion, fetch the session by id with your secret key:
Response
The verification rule: the user is verified only when status is "complete" and decision is "real". Everything else — "spoof", "failed", "expired", or any value relayed by the client — is not verified.

The risk Object

  • signals.duplicate_image — this exact capture was already submitted in another of your sessions. It’s a soft signal worth reviewing, not an automatic rejection.
  • attestation — status of device attestation (e.g. Play Integrity) when provided by the SDK.
  • Injection-blocked sessions: when a capture was rejected for suspected injection (for example, a known virtual camera under the enforce policy), decision is "spoof", checks is null, and risk is exactly { "injection_blocked": true, "reason": "suspected_injection" }. Scores and signal details are deliberately withheld so a flagged session can’t be used to probe the detectors.

Retrieving the Captured Selfie

Liveness and deepfake checks confirm the face is real — not whose it is. If you match the capture against an ID document, keep KYC records, or route sessions to manual review, retrieve the exact image the models scored:
  • The image is available as soon as the decision is — it uploads during capture, so there’s nothing to poll.
  • url is a signed link valid for 5 minutes. Fetch the bytes immediately; don’t store the link.
  • Verify your download against sha256 — it hashes the exact bytes the models scored, and matches the SDK’s capturedFrameSha256.
  • Every retrieval is written to your organization’s media access log, keeping biometric access auditable.

When Media Isn’t Available

GET …/media returns 404 MEDIA_NOT_AVAILABLE when the image can’t be served. The media block on the session read explains why: Media storage, retention windows, and erasure are controlled per organization in the console’s compliance settings.