Skip to main content

# 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 | 120058
400 | Multiple faces found | There are several faces in the image | 120059
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 | Endeavor id is null when required Endeavor external link not equal to applicant | Endeavor from Video Recorder contains invalid data | 120044
400 | Applicant profile not found | Profile from the applicant was not found in the platform | 120043

### Registration by selfie​

Endpoint: POST /publicapi/api/v2/public/Validation

1. Create a verification request.
2. Upload the user's face image.
3. Specify DocumentType: 10 (face registration/authorization).

Registration is considered successful if:

- All enabled optional checks have been successfully passed.
- Face photo quality above the threshold in the settings.
- Liveness of face from photo above threshold in settings.
- There are no similar applicants in the base, the score of comparison with which is above the threshold in the settings.

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,
        "livenessReflectionIsValid": true,
        "hasBeenBlackListed": false
      },
      "invalidDataErrors": [
        {
          "code": null,
          "message": "Multiple faces or strong face movement spotted when recording liveness reflection video",
          "description": null
        }
      ],
      "validations": {
        "liveness": {
          "verdict": true,
          "details": [
            {
              "name": "FaceLiveness",
              "verdict": true,
              "score": 0.99
            }
          ]
        },
        "quality": {
          "verdict": true,
          "details": [
            {
              "name": "FaceQuality",
              "verdict": true,
              "score": 0.53
            }
          ]
        },
        "matching": {
          "verdict": true,
          "details": [
            {
              "name": "FaceMatching",
              "verdict": true,
              "score": 0.0
            }
          ]
        },
        "motionControl": {
          "verdict": false,
          "motionControlInfo": [
            {
                "pattern": "up",
                "result": true,
                "photo_link": "vr.ref-images:motion_control_frame-mcf-26-03-12-04_19_14-32cab-08cbb-8a52b.jpeg"
            },
            {
                "pattern": "left",
                "result": false,
                "photo_link": "vr.ref-images:motion_control_frame-mcf-26-03-12-04_19_14-32cab-08cbb-8a52b.jpeg"
            }
          ]
        }
      },
      "faceSuccess": true,
      "documentSuccess": null,
      "documentHasNotExpired": null,
      "hasRiskEvents": false,
      "riskEvents": [
        {
          "created": "2024-08-14T09:21:08.2064762Z",
          "riskNumber": 8,
          "riskName": "MissingMetadata",
          "isActive": false
        }
      ],
      "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 /publicapi/api​/v2​/public​/Validation

1. Enter the applicant ID.
2. Upload the user's face image.
3. Specify DocumentType: 10 (registration/authorization by face).

User authorization is considered successful if:

- All enabled optional checks have been successfully passed.
- Face photo quality above the threshold in the settings.
- Liveness of face from photo above threshold in settings.
- Score of comparing face from photo on authorization with face from photo on registration above threshold in settings.

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,
        "livenessReflectionIsValid": true,
        "hasBeenBlackListed": false
      },
      "invalidDataErrors": [],
      "validations": {
        "liveness": {
          "verdict": true,
          "details": [
            {
              "name": "FaceLiveness",
              "verdict": true,
              "score": 99
            }
          ]
        },
        "quality": {
          "verdict": true,
          "details": [
            {
              "name": "FaceQuality",
              "verdict": true,
              "score": 53
            }
          ]
        },
        "matching": {
          "verdict": true,
          "details": [
            {
              "name": "FaceMatching",
              "verdict": true,
              "score": 0
            }
          ]
        },
        "motionControl": {
          "verdict": false,
          "motionControlInfo": [
            {
                "pattern": "up",
                "result": true,
                "photo_link": "vr.ref-images:motion_control_frame-mcf-26-03-12-04_19_14-32cab-08cbb-8a52b.jpeg"
            },
            {
                "pattern": "left",
                "result": false,
                "photo_link": "vr.ref-images:motion_control_frame-mcf-26-03-12-04_19_14-32cab-08cbb-8a52b.jpeg"
            }
          ]
        }
      },
      "faceSuccess": true,
      "documentSuccess": null,
      "documentHasNotExpired": null,
      "hasRiskEvents": false,
      "riskEvents": [
        {
          "created": "2024-08-14T09:21:08.2064762Z",
          "riskNumber": 8,
          "riskName": "MissingMetadata",
          "isActive": false
        }
      ],
      "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.