failure_code plus the per-check retry counters so you can see which budget exhausted.
When it fires
This event fires once per session, at the moment the session reaches thefailed status. Intermediate per-check failures while retries remain are not delivered as webhooks — they appear in the per-org audit log as session.check.failed and stay between the user and the Kayle app.
Retry budgets:
document_anti_cloning_attestation_failed is a hard-kill code: it terminalizes the session immediately on the first failure regardless of retry counters.
Payload
Fields
string
Always
verification.session.failed.number
The share-contract version the session was created against.
string
Unique event ID. Idempotency-key candidate — the same event reuses this ID on retries and replays.
string
The session that terminalized.
string
Reason Kayle could not confirm the session. One of:
document_authenticity_faileddocument_active_authentication_faileddocument_chip_authentication_faileddocument_anti_cloning_attestation_faileddocument_data_invalidliveness_failedselfie_face_mismatch
number
How many NFC chip-read retries (0..3) the session consumed before terminalizing.
number
How many liveness retries (0..3) the session consumed before terminalizing.