# Multiple KYC Verification

### Base URL

```
sdk.faceki.com
```

### Multiple KYC Verification End Point API

```
https://sdk.faceki.com/kycverify/api/kycverify/multi-kyc-verification
```

{% hint style="info" %}
**HTTP Method: POST**

Authentication: `Bearer Token`

**Parameters:**

* `selfie_image (mandatory)`
* `id_front_image (mandatory)`
* `id_back_image (mandatory)`
* `dl_front_image (optional)`
* `dl_back_image (optional)`
* `pp_front_image (optional)`
* `pp_back_image (optional)`
  {% endhint %}

## Description:

The KYC Verification API Multiple Document allows for the verification of multiple identity documents, including national ID, passport, and driving license. The API uses the HTTP **POST** method, and authentication is performed using a Bearer Token.

In order to perform verification, the API requires the following mandatory parameters: selfie\_image, id\_front\_image, and id\_back\_image. These images should be in a supported format, and should meet the quality standards specified in the API documentation.

Optionally, the API also allows for the inclusion of images for the front and back of a driving license (dl\_front\_image and dl\_back\_image), as well as images for the front and back of a passport (pp\_front\_image and pp\_back\_image).

Upon successful verification, the API will return an application/json response containing the results of the verification process.

Note that additional fees may apply for the verification of multiple documents. Please refer to the pricing section of the API documentation for more information.

## Steps  for multiple KYC verification:

1. Generate a Bearer Token by making a POST request to /getToken API endpoint.
2. Make a POST request to <https://sdk.faceki.com/kycverify/api/kycverify/multi-kyc-verification> URL.
3. Set the Authorization type to "Bearer Token" in the request header using the token obtained in step 1.
4. In the body of the request, add the following parameters:

* Selfie\_image (mandatory)
* id\_front\_image (mandatory)&#x20;
* id\_back\_image (mandatory)
* dl\_front\_image (optional)
* dl\_back\_image (optional)
* pp\_front\_image (optional)
* pp\_back\_image (optional)

5. Send the request to the API.
6. The API will verify the identity documents and perform various security checks and face matching.
7. The response will be in JSON format and will contain the verification results.<br>

<figure><img src="https://3621714085-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQdiwjdAaMBpDtolO59Ll%2Fuploads%2FNoyrHeNspZUsaBCktUWC%2FScreenshot%202023-04-27%20at%201.18.39%20PM.png?alt=media&#x26;token=9b2cb7cb-e7ab-4fa3-8e97-eaa858ad8dbb" alt=""><figcaption><p>First Step to Select POST, then add the API End Point and click on Authorization to add Bearer Token</p></figcaption></figure>

<figure><img src="https://3621714085-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQdiwjdAaMBpDtolO59Ll%2Fuploads%2FW6xPIODoNRnGPs8cyMSc%2FScreenshot%202023-04-27%20at%201.23.56%20PM.png?alt=media&#x26;token=ebe27cd3-d12c-4f9a-aecd-e87fd11d3cb8" alt=""><figcaption><p>After adding Bearer Token then go to Body and add Keys as files</p></figcaption></figure>

<mark style="color:green;">`POST`</mark> `https://sdk.faceki.com/kycverify/api/kycverify/multi-kyc-verification`

#### Headers

| Name                                             | Type   | Description         |
| ------------------------------------------------ | ------ | ------------------- |
| Content-Type:<mark style="color:red;">\*</mark>  | String | multipart/form-data |
| Authorization:<mark style="color:red;">\*</mark> | String | \[token]            |

#### Request Body

| Name                                               | Type | Description                   |
| -------------------------------------------------- | ---- | ----------------------------- |
| Selfie\_image<mark style="color:red;">\*</mark>    | File | Live Selfie infront of Camera |
| id\_front\_image<mark style="color:red;">\*</mark> | File | id - Identity Document Front  |
| id\_back\_image<mark style="color:red;">\*</mark>  | File | id - Identity Document Back   |
| dl\_front\_image                                   | File | dl - Driving Licesne Front    |
| dl\_back\_image                                    | File | dl - Driving Licesne Back     |
| pp\_front\_image                                   | File | pp - Passport front           |
| pp\_back\_image                                    | File | pp - Passport front           |

{% tabs %}
{% tab title="200: OK " %}

```json
{
  "data": {
    "requestId": "b4b205b3-236f-42c7-b2f8-59c4c4bc6a0d",
    "ppKycData": {
      "responseCode": 0,
      "data": {
        "verification": {
          "passed": true,
          "result": {
            "face": true,
            "notexpired": true
          }
        },
        "face": {
          "isIdentical": true,
          "confidence": 0.9999440002441407
        },
        "confidence": {
          "backSideId": 0.876,
          "issuerOrg_full": 0.901,
          "issuerOrg_iso2": 0.812,
          "issuerOrg_iso3": 0.765,
          "document": 0.654,
          "documentName": 0.876,
          "documentNumber": 0.901,
          "documentSide": 0.812,
          "documentType": 0.987,
          "face": 0.765,
          "face0": 0.654,
          "firstName": 0.876,
          "fullName": 0.901,
          "internalId": 0.812,
          "lastName": 0.987,
          "middleName": 0.765,
          "nationality_full": 0.654,
          "reverseId": 0.876,
          "signature": 0.901,
          "signature0": 0.812
        },
        "result": {
          "backSideId": "8886",
          "issuerOrg_full": "Random Country",
          "issuerOrg_iso2": "RC",
          "issuerOrg_iso3": "RCO",
          "document": "",
          "documentName": "Passport",
          "documentNumber": "987654321",
          "documentSide": "FRONT",
          "documentType": "P",
          "face": "",
          "face0": "",
          "firstName": "Jane",
          "fullName": "Jane Smith",
          "internalId": "789",
          "lastName": "Smith",
          "middleName": "Random Middle",
          "nationality_full": "Random Nationality",
          "reverseId": "8886",
          "signature": "",
          "signature0": ""
        },
        "authentication": {
          "breakdown": {
            "recapture_check": {
              "passed": true
            },
            "data_visibility": {
              "passed": true
            },
            "image_quality": {
              "passed": true
            },
            "feature_referencing": {
              "passed": true
            },
            "exif_check": {
              "passed": true
            },
            "publicity_check": {
              "passed": true
            },
            "text_analysis": {
              "passed": true
            },
            "biometric_analysis": {
              "passed": true
            },
            "security_feature_check": {
              "passed": true
            }
          },
          "warning": []
        },
        "aml": [],
        "responseID": "a4606f4097ec4898b8216d918bfc6cac",
        "images": {
          "doc_front_image": "https://example.com/doc_front.jpg",
          "doc_back_image": "",
          "selfie_image": "https://example.com/selfie.jpg"
        }
      }
    },
    "dlKycData": {
      "responseCode": 0,
      "data": {
        "verification": {
          "passed": false,
          "result": {
            "face": true,
            "notexpired": true
          }
        },
        "face": {
          "isIdentical": true,
          "confidence": 0.9999440002441407
        },
        "confidence": {
          "backSideId": 1,
          "issuerOrg_full": 1,
          "issuerOrg_iso2": 1,
          "issuerOrg_iso3": 1,
          "document": 0.9222802519798279,
          "documentName": 1,
          "documentNumber": 0.992,
          "documentSide": 1,
          "documentType": 1,
          "face": 0.9468276304459636,
          "face0": 190.1085205078125,
          "firstName": 0.959,
          "fullName": 0.959,
          "internalId": 1,
          "lastName": 0.968,
          "middleName": 0.985,
          "nationality_full": 0.991,
          "reverseId": 1,
          "signature": 0.2879074811935425,
          "signature0": 0.2879074811935425
        },
        "result": {
          "backSideId": "8886",
          "issuerOrg_full": "Bahrain",
          "issuerOrg_iso2": "BH",
          "issuerOrg_iso3": "BHR",
          "document": "",
          "documentName": "Driving License",
          "documentNumber": "970343809",
          "documentSide": "FRONT",
          "documentType": "D",
          "face": "",
          "face0": "",
          "firstName": "John",
          "fullName": "John Doe",
          "internalId": "437",
          "lastName": "Doe",
          "middleName": "Random Middle",
          "nationality_full": "Random Nationality",
          "reverseId": "8886",
          "signature": "",
          "signature0": ""
        },
        "authentication": {
          "breakdown": {
            "recapture_check": {
              "passed": true
            },
            "data_visibility": {
              "passed": true
            },
            "image_quality": {
              "passed": true
            },
            "feature_referencing": {
              "passed": true
            },
            "exif_check": {
              "passed": true
            },
            "publicity_check": {
              "passed": true
            },
            "text_analysis": {
              "passed": true
            },
            "biometric_analysis": {
              "passed": true
            },
            "security_feature_check": {
              "passed": true
            }
          },
          "warning": [
            "Invalid Document Type"
          ]
        },
        "aml": [],
        "responseID": "e472cedeffc148789bbc9c9be3535477",
        "images": {
          "doc_front_image": "https://example.com/doc_front.jpg",
          "doc_back_image": "https://example.com/doc_back.jpg",
          "selfie_image": "https://example.com/selfie.jpg"
        }
      }
    },
    "idKycData": {
      "responseCode": 0,
      "data": {
        "verification": {
          "passed": true,
          "result": {
            "face": true,
            "notexpired": true
          }
        },
        "face": {
          "isIdentical": true,
          "confidence": 0.9999440002441407
        },
        "confidence": {
          "backSideId": 1,
          "issuerOrg_full": 1,
          "issuerOrg_iso2": 1,
          "issuerOrg_iso3": 1,
          "document": 0.9222802519798279,
          "documentName": 1,
          "documentNumber": 0.992,
          "documentSide": 1,
          "documentType": 1,
          "face": 0.9468276304459636,
          "face0": 190.1085205078125,
          "firstName": 0.959,
          "fullName": 0.959,
          "internalId": 1,
          "lastName": 0.968,
          "middleName": 0.985,
          "nationality_full": 0.991,
          "reverseId": 1,
          "signature": 0.2879074811935425,
          "signature0": 0.2879074811935425
        },
        "result": {
          "backSideId": "8886",
          "issuerOrg_full": "Bahrain",
          "issuerOrg_iso2": "BH",
          "issuerOrg_iso3": "BHR",
          "document": "",
          "documentName": "Identity Card",
          "documentNumber": "970343809",
          "documentSide": "FRONT",
          "documentType": "I",
          "face": "",
          "face0": "",
          "firstName": "Alice",
          "fullName": "Alice Johnson",
          "internalId": "437",
          "lastName": "Johnson",
          "middleName": "Random Middle",
          "nationality_full": "Random Nationality",
          "reverseId": "8886",
          "signature": "",
          "signature0": ""
        },
        "authentication": {
          "breakdown": {
            "recapture_check": {
              "passed": true
            },
            "data_visibility": {
              "passed": true
            },
            "image_quality": {
              "passed": true
            },
            "feature_referencing": {
              "passed": true
            },
            "exif_check": {
              "passed": true
            },
            "publicity_check": {
              "passed": true
            },
            "text_analysis": {
              "passed": true
            },
            "biometric_analysis": {
              "passed": true
            },
            "security_feature_check": {
              "passed": true
            }
          },
          "warning": []
        },
        "aml": [],
        "responseID": "1b4c7a3a316e43c38073ea3708ccf18b",
        "images": {
          "doc_front_image": "https://example.com/doc_front.jpg",
          "doc_back_image": "https://example.com/doc_back.jpg",
          "selfie_image": "https://example.com/selfie.jpg"
        }
      }
    }
  },
  "responseCode": 0
}
```

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="400: Bad Request " %}

<pre class="language-javascript"><code class="lang-javascript"><strong>{
</strong>    "statusCode": 400,
    "message": "Unexpected field",
    "error": "Bad Request"
}
</code></pre>

{% endtab %}

{% tab title="401: Unauthorized " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="404: Not Found " %}

```javascript
{
    // Response
}
```

{% endtab %}

{% tab title="500: Internal Server Error " %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}

You must make all your requests to the API over HTTPS and TLS 1.2, with Server Name Indication enabled. Any requests made over HTTP will fail.

Responses return JSON with a consistent structure, except downloads.

```
// Content-Type: application/json

```

## Error Code

```
    INTERNAL_SYSTEM_ERROR = 1000,
    SUCCESS = 0,
    NO_RULES_FOR_COMPANY = 7001,
    NEED_REQUIRED_IMAGES = 8001,
    DOCUMENT_VERIFY_FAILED = 8002,
    PLEASE_TRY_AGAIN = 8003,
    FACE_CROPPED = 8004,
    FACE_TOO_CLOSED = 8005,
    FACE_NOT_FOUND = 8006,
    FACE_CLOSED_TO_BORDER = 8007,
    FACE_TOO_SMALL = 8008,
    POOR_LIGHT = 8009,
    ID_VERIFY_FAIL = 8010,
    DL_VERIFY_FAIL = 8011,
    PASSPORT_VERIFY_FAIL = 8012,
    DATA_NOT_FOUND = 8013,
    INVALID_VERIFICATION_LINK = 8014,
    VERIFICATION_LINK_EXPIRED = 8015,
    FAIL_TO_GENERATE_LINK = 8016,
    KYC_VERIFICATION_LIMIT_REACHED = 8017,
    SELFIE_MULTIPLE_FACES = 8018,
    FACE_BLURR = 8019
```
