Keyless Agent Endpoints
The following endpoints are available for IDV Bridge On-Premise (Keyless Agent)
1. GET /health-check
Purpose: Check if the service is running. Response:
{
"version": "string",
"status": "ok"
}2. POST /v1/offline-enrollment
Purpose: Generate client and server enrollment states from an image.
The Server state is required to register the new user on the Keyless backend, while Client state enables the account recovery flow for ongoing authentication on a camera enabled device via the Mobile SDK.
Request:
Headers:
Exif-Transpose(boolean, optional) — whether to rotate the image according to EXIF metadata.Content-Encoding(optional, const="base64") — if the image is base64 encoded.Scenario(required) —"SELFIE" | "TRUSTED_SOURCE" | "DOCUMENT".
Body:
image/*— binary (JPEG, PNG, BMP, etc.)
Responses:
200: Returns OfflineEnrollment422: Returns FilterTriggered429: Too many concurrent enrollments
scenario definitions are available here.
3. POST /v1/online-enrollment
Purpose: Enroll a user directly from an image (without server state).
Client state enables the account recovery flow for ongoing authentication on a camera enabled device via the Mobile SDK.
Request: Same headers/body as offline enrollment. Responses:
200: Returns OnlineEnrollment409: Not configured for online enrollment422: Recognition filter error429: Too many concurrent enrollments
Schemas
OfflineEnrollment
keylessId
string
Unique user ID
clientState
string
Opaque data for the Keyless SDK to allow a user to authenticate on a camera enabled device for the accoutn recovery flow.
serverState
string
Uncommitted server data; required to register the new user on the Keyless backend.
OnlineEnrollment
keylessId
string
Unique user ID
clientState
string
Opaque data for the Keyless SDK to allow a user to authenticate on a camera enabled device for the accoutn recovery flow.
FilterTriggered
title
string
Always "Filter Triggered"
statusCode
integer
Always 422
detail
string
Explanation of why the filters failed
filters
object
See below
Filters
Each property represents a possible filter and has a status:
TRIGGERED– filter was triggered (failure)NOT_TRIGGERED– filter passedTURNED_OFF– filter not activeCANNOT_RUN_ON_FRAME– preprocessing failure
Filter fields:
faceIsOccluded
The facial features are in part covered by something to the extent that a biometric template could not be detected.
faceMissing
No face was detected in the image.
faceMultiple
More than one face was detected.
facePartial
Only a partial face was detected, for example the selfie may have been off-center.
faceTooSmall
A face was detected, but the face was too small to allow an accurate biometric template to be generated.
imageBlackAndWhite
The image is black and white.
Example 422 Error
{
"title": "Filter Triggered",
"statusCode": 422,
"detail": "Face occluded by object",
"filters": {
"faceIsOccluded": "TRIGGERED",
"faceMissing": "NOT_TRIGGERED",
"faceMultiple": "NOT_TRIGGERED",
"facePartial": "NOT_TRIGGERED",
"faceTooSmall": "NOT_TRIGGERED",
"imageBlackAndWhite": "NOT_TRIGGERED"
}
}
Last updated
Was this helpful?