Events
This page describes the event types produced by the Enrollment Server Onboarding.
List of event types:
- DOCUMENT_VERIFICATION_FINISHED
- FINAL_DOCUMENT_VERIFICATION_FINISHED
- PRESENCE_CHECK_FINISHED
- PROCESS_FINISHED
Structure
This is the generic part of the event, which is common to all event types.
{
"id": "8f0d649e-a688-4ead-8581-fc2b67e88be4",
"timestamp": "2026-04-23T14:30:00Z",
"type": "PROCESS_FINISHED",
"userId": "40405309-6406-4d6b-b4ef-642e52ac44f4",
"externalUserId": "629199e8-aa0d-4fc0-911c-089d53e0f608",
"processId": "8b2dfae4-d955-4d8f-a95b-2d9c5a4b0e26",
"processType": "onboarding",
"identityVerificationId": "d3827099-3b6c-4df9-887d-4eac402fc4f9",
"eventData": {}
}
| Attribute | Type | Description |
|---|---|---|
id |
String | Event ID. |
timestamp |
String | Timestamp, when the action happened. |
type |
String | Event type. Currently supported types are DOCUMENT_VERIFICATION_FINISHED, FINAL_DOCUMENT_VERIFICATION_FINISHED, PRESENCE_CHECK_FINISHED, and PROCESS_FINISHED. |
userId |
String | User ID. |
externalUserId |
String | External User ID. A fixed user ID used for the presence check provider. It is set to null at the start of the process and created during the presence check phase. |
processId |
String | Process ID. |
processType |
String | Name of the process, e.g. onboarding. |
identityVerificationId |
String | Identity Verification ID. Can be null if the event is not related to the identity verification stage. |
eventData |
Object | Object with structure different for each type. |
Event data for different event types
Different event types have different structures in eventData.
Event data for DOCUMENT_VERIFICATION_FINISHED
This contains the results from the verification provider. Each document is sent separately.
A two-sided document (e.g. an ID card with front and back side) is sent as a single event.
The event is represented by the side with the worst outcome (FAILED, then REJECTED, then ACCEPTED); the front side is used when both sides have the same outcome.
documentVerificationResult.images contain images of both sides.
For example, an ID card where the front is ACCEPTED but the back is REJECTED produces a single REJECTED event. An ID card where both the front and back are ACCEPTED produces a single ACCEPTED event.
{
"documentVerification": {
"documentVerificationId": "String",
"documentId": "String",
"status": "String",
"rejectReason": null,
"errorDetail": null,
"provider": "String",
"score": Number,
"documentVerificationResult": {
"type": "String",
"country": "String",
"data": {
"surname": "String",
"givenNames": "String",
"dateOfBirth": "String",
"placeOfBirth": "String",
"sex": "String",
"nationality": "String",
"personalNumber": "String",
"documentNumber": "String",
"dateOfIssue": "String",
"dateOfExpiry": "String",
"authority": "String"
},
"images": [
{
"type": "String",
"data": "String"
}
],
"rawData": Object
}
}
}
| Attribute | Type | Description |
|---|---|---|
documentVerificationId |
String | Document Verification ID. |
documentId |
String | Document ID. |
status |
String | Status of the verification. Supported values are ACCEPTED, REJECTED and FAILED. |
rejectReason |
String | Reject reason when status is REJECTED. Otherwise, it is null. Value details are described under the table. |
errorDetail |
String | Error detail in case status is FAILED. Otherwise is null. |
provider |
String | Name of the configured external biometry provider. For example, Microblink. |
score |
Number | Outcome confidence of the verification check on scale 0-10. |
documentVerificationResult |
Object | Contains some details about the document and extracted data. Object is present only if status is ACCEPTED or REJECTED. Otherwise it is null. Complete response from verification provider can be found in documentVerificationResult.rawData. |
documentVerificationResult.country |
String | Country of the document extracted by the verification provider. If the provider extracted no country, the value is null. |
Reject Reason Format - Microblink
The value of the field rejectReason for the Microblink provider has the following format:
Rejected by provider [{code} {messages}, {code} {messages}...] # there can be more messages
Example response:
Rejected by provider [W002 The image quality was insufficient, please try again., I001 We've extracted and completed all feasible actions. If the result is inadequate, review the process indicators.]
All code and message values are described in the section Reject Reasons for Microblink
Event data for FINAL_DOCUMENT_VERIFICATION_FINISHED
This contains the overall document check result for all documents combined.
Bear in mind that even if the individual documents were verified by the verification provider, the overall document check result could still be negative due to the additional checks performed.
Additional checks:
- document type - checks whether the required document type matches the uploaded document type
- document crosscheck - the first name, surname and date of birth, in case the user has uploaded multiple documents
{
"finalDocumentVerification": {
"documentVerificationId": "String",
"status": "String",
"rejectReason": null,
"errorDetail": null,
"provider": "String",
"documentIds": ["String","String"]
}
}
| Attribute | Type | Description |
|---|---|---|
documentVerificationId |
String | Document Verification ID of the representative document, see the selection rules below the table. |
status |
String | Status of the verification. Supported values are ACCEPTED, REJECTED and FAILED. |
rejectReason |
String | Reject reason in case of status is REJECTED. Otherwise is null. Value details are described under the table. |
errorDetail |
String | Error detail in case of status is FAILED. Otherwise is null. |
provider |
String | Name of the configured external biometry provider. For example, Microblink. |
documentIds |
Array | Array of verified Document IDs. |
The documentVerificationId is selected from the documents used for the verification using the same rules as for DOCUMENT_VERIFICATION_FINISHED.
The document with the worst outcome (FAILED, then REJECTED, then ACCEPTED) is used, the front side wins a tie, and remaining ties are resolved by the document type order (ID_CARD, PASSPORT, DRIVING_LICENSE, then other types).
Reject Reason Format - Microblink
The value of the field rejectReason for the Microblink provider has one of the following formats:
Rejected by provider [{code} {messages}, {code} {messages}...]
or
Extracted document type {extractedType} does not match claimed type {claimedType}
or
Document data crosscheck failed for fields: [{field}, {field}...]
Example responses:
Rejected by provider [W002 The image quality was insufficient, please try again., I001 We've extracted and completed all feasible actions. If the result is inadequate, review the process indicators.]
or
Extracted document type DRIVING_LICENSE does not match claimed type ID_CARD
or
Document data crosscheck failed for fields: [firstName, lastName, dateOfBirth]
- All
codeandmessagevalues are described in the section Reject Reasons for Microblink - All
extractedTypeandclaimedTypevalues are based on currently supported document typesID_CARD,PASSPORTandDRIVING_LICENSE - All
fieldvalues arefirstName,lastNameanddateOfBirth
Event data for PRESENCE_CHECK_FINISHED
This contains the results of the verification provider.
{
"presenceCheck": {
"status": "ACCEPTED",
"rejectReason": null,
"errorDetail": null,
"provider": "iProov",
"score": Number,
"presenceCheckResult": {
"frame": "String"
}
}
}
| Attribute | Type | Description |
|---|---|---|
status |
String | Status of the verification. Supported values are ACCEPTED, REJECTED and FAILED. |
rejectReason |
String | Reject reason in case of status is REJECTED. Otherwise is null. The value is taken from the provider’s response, messages are described in Reject Reasons for iProov. |
errorDetail |
String | Error detail in case of status is FAILED. Otherwise is null. |
provider |
String | Name of the configured external biometry/presence-check provider. For example, iProov. |
score |
Number | Outcome confidence of the verification check on scale 0-10. |
presenceCheckResult.frame |
String | Photo/image from the biometry session, encoded in base64. |
Event data for PROCESS_FINISHED
This contains final process data.
{
"process": {
"status": "FINISHED",
"errorDetail": null,
"deviceData": {
"locale": "EN",
"ipAddress": null,
"httpUserAgent": null,
"fdsData": Object
}
}
}
| Attribute | Type | Description |
|---|---|---|
status |
String | Status of the process. Supported values are FINISHED and FAILED. |
errorDetail |
String | Error detail in case of status is FAILED. Otherwise is null. |
deviceData.locale |
String | Client locale recorded during process initialization. |
deviceData.ipAddress |
String | Client IP address. Keep in mind that IP Address can change during Onboarding process. |
deviceData.httpUserAgent |
String | Client User-Agent recorded during process initialization. |
deviceData.fdsData |
Object | Optional FDS data sent from the mobile device during Onboarding initialization using /api/onboarding/start method. |
Verification Providers Reject Reasons
Reject Reasons for Microblink
The table below shows all possible values for the code and message attributes in the rejectReason field.
| Code | Message |
|---|---|
| E001 | Empty response. Please check your request parameters. |
| E003 | Unable to process due to extraction failure. Providing better-quality front and back images might solve this issue. Ensure the images are not cropped and that all edges are visible. |
| W001 | The front image was uncertain. Nevertheless, we managed to take some action based on it. If the result is inadequate, review the process indicators. |
| W002 | The image quality was insufficient, please try again. |
| W003 | Only one image has been provided for multisided document, supplying other side of the document could result in a better outcome. |
| W004 | The barcode image is not of sufficient quality, providing a better one could lead to an improved outcome. |
| W005 | Image quality was not good enough for us to make verdict. |
| W006 | The image lacks clarity. Supplying a clearer image could improve the outcome. |
| W007 | Document too close to the edges of the image. We weren’t able to perform liveness checks and can’t make an overall fraud determination. Supply a non cropped image to improve the outcome. |
| W008 | Document too close to the edge of the image, verification will proceed but liveness check will not be performed. Supply a non cropped image to improve the outcome. |
| I001 | We’ve extracted and completed all feasible actions. If the result is inadequate, review the process indicators. |
| Other | Microblink did not provide a reject reason. |
Reject Reasons for iProov
The table below shows all possible values in the rejectReason field.
| Message |
|---|
| Please keep still |
| Strong light source detected behind you. Try turning around |
| Your environment appears too dark. Try turning the lights on |
| Too much light detected on your face |
| Ambient light too strong or screen brightness too low |
| Please do not talk while iProoving |
| Sorry, ambiguous outcome |
| Sorry, your session has timed out |
| Sorry, your device is not supported at the moment |