Biometric verification (v1)
Stable version
This is the current stable version. BIOMETRIC_VERIFICATION:v2 is available in preview.
Authenticates identity using facial recognition
Used when strong, real‑time identity confirmation is required. The user completes a quick face scan, and the system ensures they are a real person and match the enrolled face, helping prevent impersonation, spoofing, and deepfakes.
Key features
- Liveness detection: Confirms the user is physically present and not a spoof or replay attack.
- Face comparison: Matches the live capture against the enrolled biometric template.
- Evidence preservation: On success, the authentication result is recorded in the
AuthenticationResultdata block for audit purposes.
This step requires previous enrolment via the Biometric Enrolment step and uses the captured biometric data to authenticate the user.
Configuration
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
provider | "KEYLESS" | No | — | Biometric verification provider. Currently KEYLESS is the only supported value and is used regardless of this field. |
enableRetry | boolean | No | false | When enabled, adds a retry route for user cancellation. |
Example configuration
{
"enableRetry": true
}
Input data blocks
| Data block | Required | Description |
|---|---|---|
UserReference | Yes | Contains the unique subject identifier (subjectId) necessary to identify the user in the Keyless system. |
Routes
| Route | Description |
|---|---|
authenticated | Biometric authentication succeeded. The user has been successfully authenticated. |
failed | Biometric authentication failed. This can be due to biometric mismatch, capture error, or technical issue. |
retry | Available when enableRetry: true. User cancelled and can retry. |
Output data blocks
| Route | Data blocks produced | Notes |
|---|---|---|
| authenticated | AuthenticationResult | Biometric authentication succeeded. The user has been successfully authenticated. |
| failed | AuthenticationResult | Biometric authentication failed. This can be due to biometric mismatch, capture error, or technical issue. |
| retry | AuthenticationResult | User cancelled and can retry. Available when enableRetry: true. |
AuthenticationResult datablock is deprecated
AuthenticationResult is deprecated. Use BIOMETRIC_VERIFICATION:v2 for new flows — it produces the unified Verification data block instead.
Example payloads
AuthenticationResult — authenticated
{
"dataBlockId": "a3f7c821-4d92-4b1e-9e3a-fc820d17b45c",
"type": "AuthenticationResult",
"result": "success",
"provider": "KEYLESS",
"credentialId": "cred-7f3a2b1c-4e5d-4a6f-9c8b-0d1e2f3a4b5c",
"credentialType": "FACE",
"subjectId": "usr-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"requestId": "req-b2d4f6a8-c1e3-4d5f-8a9b-0c2e4f6a8b0d",
"authenticatedAt": "2026-02-10T14:00:01.000Z"
}
AuthenticationResult — failed
{
"dataBlockId": "f9e2b4d6-8a0c-4e2f-b6d8-a0c2e4f6b8d0",
"type": "AuthenticationResult",
"result": "failure",
"provider": "KEYLESS",
"credentialId": "cred-7f3a2b1c-4e5d-4a6f-9c8b-0d1e2f3a4b5c",
"credentialType": "FACE",
"subjectId": "usr-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"requestId": "req-d4f6a8b0-c2e4-4f6a-8b0d-c2e4f6a8b0d2",
"attemptedAt": "2026-02-10T14:01:30.000Z",
"reason": {
"code": "BIOMETRIC_MISMATCH",
"details": null
}
}