error.code, not the message — messages may be reworded.
Detection endpoints
No 4xx error is ever charged.
422 codes are user-fixable — build your retake UX around them.Verification session endpoints
Which submit errors consume an attempt
A session allows 3 capture attempts. Errors caused by the capture itself —413, any 422, and NONCE_MISMATCH — consume the attempt. Errors that aren’t the capture’s fault — bad form encoding, INSUFFICIENT_CREDITS, UPSTREAM_ERROR — refund it, so server-side trouble never burns the user’s retry budget. When the last attempt is consumed by a failure, the session becomes failed with failure_code: "ATTEMPTS_EXHAUSTED".