Verification
Registration
User registration can be performed in two ways:
- Through document verification with face matching
- Through saving a face image without document verification
Possible errors
List of common registration and authorization errors
HTTP Code | Message | Description | Code |
400 | Request "validationRequest.Id" was already completed | Attempted registration on completed request | 120036 |
400 | All available attempts were used for requestId "validationRequest.Id" | All attempts to register have been expended | 120037 |
400 | Face image is empty | Passed image is empty | 120038 |
400 | Graphql error: "error message" | Platform returned errors in response to a graphql query | 120029 |
400 | Profile search is missing | An attempt to search profiles in the platform failed | 120039 |
400 | No faces found | There are no faces in the image | 120038 |
400 | Multiple faces found | There are several faces in the image | 120038 |
400 | Quality calculation failed | An attempt to calculate quality in platform failed | 120039 |
400 | Liveness calculation failed | An attempt to calculate liveness in platform failed | 120039 |
400 | Request is closed | Attempted registration by closed applicant | 120040 |
400 | This document type is not supported | BAF has the "Save Face Profile" feature turned off | 120041 |
400 | Face image is required | The image was not transmitted | 120042 |
400 | Applicant doesn't have verified face | Attempt to authorize by appliсant without a linked profile | 120043 |
400 | Invalid endeavor info | Endeavor from LRS contains invalid data | 120044 |
400 | Applicant profile not found | Profile from the applicant was not found in the platform | 120043 |
Registration by a selfie and a document with matching of selfie face with document face
Endpoint: POST /api/v2/public/Validation
Create a verification request with the mandatory face matching.
Upload the user's document image in base64.
Upload the user's face image in base64.
Specify the type of uploaded document.
Verification results
Verification consists of the following checks:
- Document authentication
- Document check for expiry date
- User search in the database to avoid repeated registrations
- Anti-spoofing check
The verification result can have the following statuses:
Code | Status | Description |
0 | Success | All verification checks have been successfully completed. |
1 | Fail | One or more verification checks failed. |
2 | InvalidData | The verification request contained incorrect or missing data. |
3 | Error | Internal error when trying to verify. |
Registration is considered successful if:
- All checks have been successfully completed.
- The user's face image is saved to the specified database.
- ProfileId of the user's face is saved.
Request example:
{
"model": {
"faceImageBase64": "insert face image in base64 here",
"frontImageBase64": "insert document image in base64 here",
"documentType": 2
},
"applicantId": "insert applicantId here",
"endeavorId": "insert endeavorId here (only when LRS enabled)"
}
Response example:
Status Code | 200 |
{
"applicantId": "05fcd***",
"attemptId": 1,
"documentType": 1,
"document": {
"privateName": "JOHN SAMPLE",
"abbr3Country": "USA",
"abbrCountry": null,
"address": "111 N 5TH ST",
"city": "COLUMBUS",
"class": "D",
"country": "United States of America",
"dob": "1999-01-12",
"expires": "2024-01-12",
"eyes": "BLUE",
"familyName": null,
"firstName": "JOHN",
"fullName": "JOHN SAMPLE",
"gender": "MALE",
"hair": "BLONDE",
"height": "70",
"id": "12345678",
"idType": "DL",
"issued": "2020-12-30",
"middleName": "SAMPLE",
"postalBox": null,
"state": "OH",
"issuedBy": "OH",
"template": "09",
"weight": "159",
"zip": "12345-6789"
},
"attemptsCount": 5,
"attemptsLeft": 0,
"status": 0,
"validationStatus": {
"expired": false,
"documentIsValid": true,
"faceIsValid": true,
"antiSpoofingIsValid": null,
"qualityIsValid": true
},
"invalidDataErrors": [],
"faceSuccess": true,
"documentSuccess": true,
"documentHasNotExpired": true,
"documentValidationTests": [
{
"displayName": "AddressValidation",
"name": "AddressValidation",
"status": 2,
"statusString": "Skipped",
"reason": "Integration was skipped by flow"
},
{
"displayName": "DMV",
"name": "DMVValidation",
"status": -1,
"statusString": "Disabled",
"reason": "Integration was turned off"
},
{
"displayName": "IdentiFraud",
"name": "IdentiFraudValidation",
"status": -1,
"statusString": "Disabled",
"reason": "Integration was turned off"
}
],
"callBackUrl": null
}
Registration by selfie without document verification
Endpoint: POST /api/v2/public/Validation
- Create a verification request.
- Upload the user's face image.
- Specify DocumentType: 10 (face registration/authorization).
Registration is considered successful if:
- The user's face image is saved to the specified database.
- ProfileId of the user's face is saved.
Request example:
{
"model": {
"faceImageBase64": "insert face image in base64 here",
"documentType": 10
},
"applicantId": "insert applicantId here",
"endeavorId": "insert endeavorId here (only when LRS enabled)"
}
Response example:
Status Code | 200 |
{
"applicantId": "05fcd***",
"attemptId": 1,
"documentType": 10,
"document": null,
"attemptsCount": 5,
"attemptsLeft": 0,
"status": 0,
"validationStatus": {
"expired": null,
"documentIsValid": null,
"faceIsValid": true,
"antiSpoofingIsValid": null,
"qualityIsValid": true
},
"invalidDataErrors": [],
"faceSuccess": true,
"documentSuccess": null,
"documentHasNotExpired": null,
"documentValidationTests": [],
"callBackUrl": null
}
If registration is successful, the user will be informed with a system message Status Code 200.
When the first registration attempt is not successful, you can try again to upload the document image and/or selfie: the number of registration attempts can be configured in the range from 1 to 5.
If all registration attempts fail, the user will receive a Status Code 400 message.
Authorization
Endpoint: POST /api/v2/public/Validation
- Enter the applicant ID.
- Upload the user's face image.
- Specify DocumentType: 10 (registration/authorization by face).
Face search in the database will start if:
- The specified verification request was created and completed successfully.
- The result of the verification request contains the ProfileId of the user’s face.
The search will return a list of faces that meet the face match confidence threshold.
Default values:
- Face match confidence threshold – 90%
- The maximum number of received faces is 50
User authorization is considered successful if among the faces found in the database, that passed the face match confidence threshold, there was one whose ProfileId matched the user's ProfileId.
Request example:
{
"model": {
"faceImageBase64": "insert face image in base64 here",
"documentType": 10
},
"applicantId": "insert applicantId here",
"endeavorId": "insert endeavorId here (only when LRS enabled)"
}
Response example:
Status Code | 200 |
{
"applicantId": "05fcd***",
"attemptId": 1,
"documentType": 10,
"document": null,
"attemptsCount": 5,
"attemptsLeft": 0,
"status": 0,
"validationStatus": {
"expired": null,
"documentIsValid": null,
"faceIsValid": true,
"antiSpoofingIsValid": null,
"qualityIsValid": true
},
"invalidDataErrors": [],
"faceSuccess": true,
"documentSuccess": null,
"documentHasNotExpired": null,
"documentValidationTests": [],
"callBackUrl": null
}
The user will be informed about successful authorization by a system message. After verification is completed, the user gets access to the closed part of the customer's app (site).
Authorization/registration by applicantId
TBC.