Skip to main content

Overview

The face match report captures a 1:1 biometric comparison between the live selfie captured during liveness and a reference image — most commonly the portrait extracted from the ID document. It returns a single 0–100 similarity score, signed URLs for the two compared images, the source session for the reference image, and any warnings raised by the match. The report is produced after the user completes both the liveness step and the document step in a workflow (or, for portrait-based workflows such as biometric authentication, after liveness alone), or directly via the standalone Face Match API when you supply two arbitrary face images yourself. Each report carries its own status — independent of the overall session status — that reflects how the face match step alone resolved:
  • Approvedscore is above the review threshold and no auto-decline warning fired.
  • In Reviewscore is between the decline and review thresholds.
  • Declinedscore is at or below the decline threshold, or NO_REFERENCE_IMAGE fired.
  • Resub Requested — a reviewer requested the user resubmit this step from the console.
  • Not Finished — the face match step has not produced a result yet (including while the user is retrying a failed capture).

Where it appears in API responses

The face match report ships inside the face_matches[] array — always a JSON array, never a singular face_match object. It is null until at least one face-match step has produced data, and multiple entries appear when a workflow runs face match more than once.
  • Session decision APIGET /v3/session/{sessionId}/decision/ returns face_matches[] at the top level. See Retrieve session decision.
  • Webhookssession.status.updated payloads include the same face_matches[] array once the step has produced data. See Webhooks.
  • Standalone Face Match API — for direct 1:1 comparisons, see Face Match standalone API.
Read response.face_matches[0] and iterate the array — the singular face_match shape some older tutorials referenced does not exist on the v3 decision endpoint.

Schema

The canonical field-by-field schema lives on the Data models reference page. The fields below mirror that canonical schema.

Status values

Low-similarity failures are retried before the status sticks: the user gets up to face_match_max_attempts captures (3 by default), and only the final attempt’s score is applied. Custom status rules configured on the workflow node can further adjust the resulting status, combining with the score-derived status under Declined > In Review > Approved precedence.

Examples

Approved — clean match

In Review — borderline similarity

Declined — no reference image to compare against

Security note

The signed URLs for source_image and target_image are biometric data and expire after a short validity window. Treat them as short-lived: do not cache or surface them publicly. Typically your application only needs status and score — store as little as possible to minimize biometric data on your servers.