Verification
Registration
User registration can be performed in two ways:
- Through document verification with face matching
- Through saving a face image without document verification
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
Possible errors
Code | Message | Description |
404 | Validation Request {applicantId} not found | Specified verification request is not found |
400 | Request {applicantId} was already completed | The verification request has already been completed (previous successful user registration is not guaranteed) |
400 | All available attempts were used for requestId {applicantId} | Verification attempts run out |
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)
Possible errors:
Code | Message | Description |
400 | Face image is required | The request doesn't contain a face image |
404 | Validation Request {applicantId} not found | The specified verification request is not found |
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)
Possible errors:
Code | Message | Description |
404 | Validation Request {applicantId} not found | The specified verification request is not found |
400 | Request doesn't have a verified face | check for face matching wasn't performed, or this check did not confirm matching |
404 | Face profiles not found | No faces were found that passed the user's face match confidence threshold |
400 | Found faces don't belong to the applicant | None of the face images found in the database, that passed the face match confidence threshold, doesn't belong to the user |
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.