portrait_image, or the user’s stored face looked up by vendor_data). Each step emits its own warnings in the V3 decision payload. This page lists every code, where it appears, and how thresholds translate into a final session status.
Overview
When a biometric authentication session runs, Didit:- Captures a live selfie using 3D Action, Flash, or Passive Liveness (
method:ACTIVE_3D,FLASHING, orPASSIVE). - Extracts the largest face from the capture and scores its liveness.
- If the workflow includes Face Match, compares the captured face against the session’s reference face (supplied
portrait_imageor the user’s stored face). - Writes the outcome of each step plus any warnings into the session decision.
feature, risk, additional_data, log_type, short_description, long_description, and node_id.
Where warnings appear
In a typical biometric-auth session there is one item in each array. In multi-instance workflows the
node_id on each warning disambiguates which step produced it.
Automatic decline conditions
The following warnings always decline their step (log_type: "error") regardless of how you configured the workflow:
When
NO_FACE_DETECTED fires, LOW_LIVENESS_SCORE is suppressed (there is no face to score).
Configurable thresholds and actions
These warnings are scored and then mapped to a status through thresholds and actions you set per workflow:POSSIBLE_FACE_IN_BLOCKLIST (LIVENESS) is not configurable — a lower-confidence blocklist match is always routed to Review (log_type: "warning").
Capture retries
Failures driven only by fixable capture-quality risks (low score, no face, quality, luminance, multiple faces — and low similarity on face match) enter a retry loop before the status sticks: the user gets up toface_liveness_max_attempts / face_match_max_attempts total attempts (default 3, configurable 2–5 per workflow node). When the budget is exhausted, the last attempt’s computed status applies and LIVENESS_MAX_ATTEMPTS_EXCEEDED or FACE_MATCH_MAX_ATTEMPTS_EXCEEDED is logged as information to record it.
Liveness warnings
The API returns these exactshort_description and long_description strings:
Blocklist, allowlist, and duplicate matches carry
additional_data with the matched session (blocklisted_session_id / allowlisted_session_id / duplicated_session_id, the matching *_session_number, and api_service). Only one of those six codes appears per report.
Face-match warnings
Example — declined on face attack
Example — in review on low similarity
log_type: "warning" and the face-match status is In Review. In this example the warning fired on a session whose session_id is 11111111-2222-3333-4444-555555555555 — source_image_session_id carries the session’s own id because the reference came from the portrait stored at session creation.
Warning types
Each risk is assigned a warning type based on your application’s configuration. Warnings fall into three severity categories:Related
Biometric Auth report
Where
liveness_checks[] and face_matches[] appear in the V3 decision.Liveness warnings
Full liveness-warning reference including duplicate-face matching.
Face Match warnings
Full face-match warning reference for 1:1 comparisons.