Skip to content

Restricted pilot. The API reference is generated from the running API. Successful matches return manual_review until attack detection is validated.

Decisions and retries

Each verification returns one decision, with a reason and retry guidance.

DecisionMeaningRetry
approvedAll checks passed under the validated policy. Never returned in restricted pilot mode.No
manual_reviewA person has to decide. This alone does not mean the face matched. Read reason.See retry_allowed
rejected_identityThe face clearly does not match the enrolled identity.Yes
rejected_spoofA presentation attack was flagged. Only under the validated policy.No
retry_qualityThe capture was unusable. See guidance.Yes
expired_sessionThe session timed out. Start a new one.Yes
not_enrolledThe identity is suspended or has no template.No
invalid_captureThe frames could not be used.Yes
system_unavailableWarka could not decide. The session stays usable.Yes

Reading manual_review

In the pilot, only manual_review with reason restricted_mode means a clear match with every check passed, and a person still has to accept it. Treat every other reason as unconfirmed, even when identity.match is true.

ReasonMeaningRetry
restricted_modeClear match and every check passed. The only reason that means this.No
identity_borderlineThe score is too close to the threshold to call.No
pad_inconclusiveThe attack check could not decide. Another capture may settle it.Yes
pad_unavailableThe attack check did not run.No
pad_flaggedThe attack check flagged this capture.No
replay_suspectedFrames repeat each other or an earlier capture.No
no_motion_between_framesSeveral frames, but nothing moved.No
challenge_not_performedThe requested movement wasn't seen.No
identity_changed_between_framesThe frames don't show the same person.No

Handling them

  • Retries need a fresh capture session, and each one counts as an attempt.
  • Limit retries in your app, then route the person to your exception process.
  • Check retry_allowed first. When it's true, ask for a new capture before sending anything to a person.
  • manual_review belongs in a human queue on your side. Warka has no approve or reject control and no review API yet, so your app records the outcome.
  • Reviewers need a console login to see the captured frames, and each view is audit-logged.
  • Never treat a rejection as proof of dishonesty. Give people a way to appeal.