# 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="/files/QbhAZCYObafLS032kmw3" 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="/files/Vz3eoRpVmPa2J2bwfDbf" 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
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kycdocv2.faceki.com/api-integration/verification-apis/multiple-kyc-verification.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
