Skip to content

Reading a result

Every call you make appears in the Console under Results. This page explains what you are looking at, and how to answer the question that actually matters when something goes wrong: why did this decide the way it did?

Sessions and transactions

The list shows sessions, not individual calls. A session groups the calls that belong to one person’s attempt, so a liveness check, a face verification and a voice verification appear together rather than as three unrelated rows.

The Results list, showing sessions with their services, status and location.

Expanding a session shows the transactions inside it. Each transaction is one API call and carries its own decision.

A session expanded to show the individual transactions it contains.

What the outcomes mean

A transaction records a decision:

DecisionMeaning
passThe check succeeded
failThe check ran and did not succeed
referNeither — something needs a human to look at it
enrolledThe call created a biometric template rather than checking one

refer is not a failure. It means the result fell in a band your scoring system treats as inconclusive, or something about the attempt — several devices, several locations — warrants review. Treating it as a rejection makes your integration stricter than you configured it to be.

A session then carries an outcome, computed from its transactions: success if everything passed, fail if any transaction failed, refer if anything asks for review.

Why a verification decided what it did

Open a transaction to see the services that ran and what each returned.

Transaction detail, showing each service's result and the scoring breakdown.

The scoring breakdown is the part worth understanding. Each service returns a score, and your scoring system decides what that score means.

The scoring breakdown, showing each service's score against its configured thresholds.

Scores are on a 0–100 scale, and for voice and face verification 50 is the provider’s own acceptance threshold — at or above 50 the engine accepted the person, below 50 it rejected them. That anchoring matters: it makes the number comparable between users, which the provider’s raw score is not, because the engine calibrates per enrolled template.

The transaction also records which version of your scoring system judged it. Changing a threshold creates a new version rather than editing the old one, so an old transaction always means what it meant at the time.