The result
The export in verification.completed and in
GET /api/v1/verifications/{id} is what the checks read and decided. Which
blocks are filled depends on the flow and on the document.
{ "status": "ready", "created_at": "2026-11-01T10:19:40Z", "personal_info": { "first_name": "ERIKA", "last_name": "MUSTERMANN", "date_of_birth": "1983-08-12", "nationality": "D", "sex": "F" }, "document_info": { "document_type": "national_id", "issuing_country": "D", "document_number": "T22000129", "expiry_date": "2031-07-31" }, "contact_info": {}, "additional_data": { "place_of_birth": "BERLIN" }, "verification_checks": { "document_expiry": "passed", "mrz_quality": "passed", "face_match": "passed", "name_consistency": "passed" }, "biometric_results": { "face_match_distance": 0.38 }}Blocks
Section titled “Blocks”| Block | From | |
|---|---|---|
personal_info | document (and nfc) | first_name, last_name, date_of_birth (YYYY-MM-DD), nationality, sex — as printed in the machine-readable zone (ICAO codes: D Germany, ESP Spain, …). |
document_info | document | document_type, issuing_country, document_number, expiry_date; personal_number when the document carries a second number (e.g. the DNI/NIE on Spanish cards). |
contact_info | form_data, email, phone | The values the person entered or confirmed. |
additional_data | document | Further fields some documents carry (address, place of birth, …). |
verification_checks | all | Each check by name with its outcome (below). |
biometric_results | liveness | face_match_distance (lower = more alike) and similar measures. |
nfc_data | nfc | The chip read and its authentication. |
aml | aml | Sanctions screening: possible matches with the lists screened. |
attributes | keys set up for attributes | E.g. {"age_over_18": {"value": true, "source": "document"}} instead of the identity. |
Checks
Section titled “Checks”verification_checks maps each check that ran to its outcome: passed,
failed, or not_used when another check decided instead. Checks you may
see: document_expiry, mrz_quality, mandatory_fields,
name_consistency, sides_match, template_consistency, forgery,
face_match, nfc_chip, chip_face_match, chip_document_face_match,
aml_screening, wallet_claims.
Reason codes
Section titled “Reason codes”reason_code (in webhooks and GET) says why a verification ended as it
did. Examples: DOCUMENT_EXPIRED, BIOMETRIC_FACE_MATCH_FAILED,
NAME_MISMATCH, MISSING_MANDATORY_FIELDS, IMAGE_TOO_BLURRY,
POTENTIAL_FORGERY, SIDES_DO_NOT_MATCH, MRZ_QUALITY_LOW,
COMPLETION_TIMEOUT, ABANDONED. New codes are added over time: show a
generic message for codes you don’t know, and log them.