# Perform KYC Verification

<figure><img src="https://content.gitbook.com/content/a8ZQwB8n4moII834UHCv/blobs/saHjhAaOPqU4SIkBI9ep/WhatsApp%20Image%202023-04-27%20at%204.22.35%20PM.jpeg" alt=""><figcaption><p>Flow Digram of verification process</p></figcaption></figure>

### Base URL

```
sdk.faceki.com
```

### KYC Verification End Point API

```
https://sdk.faceki.com/api/v3/kyc_verification
```

To verify national identity, passport, driving license, and other legal documents, simply call the API endpoint. Our API can perform various security checks and face-matching to ensure the authenticity of the document and its holder.

Our API supports more than 35+ languages and uses an advanced OCR engine to extract all data from the documents. With this level of support, you can confidently verify customer identities from all around the world.

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

`Authorization: Bearer Token`

**Parameter**: &#x20;

`selfie (mandatary)`

`workflowId (mandatary)`

`document_1_front (mandatary)`

`document_1_back (mandatory except passport)`

`document_2_front (mandatary if workflow require 2 documents)`

`document_2_back (mandatary except passport)`

`document_3_front (mandatary if workflow require 3 documents)`

`document_3_back (mandatary except passport)`

`record_identifier (optional)`
{% endhint %}

To get started with this API, please follow the steps below:

1. Make a POST request to the URL mentioned above.
2. Set the Authorization type to "Bearer Token" in the request header. You can check [here](https://docs.faceki.com/api-integration/verification-apis/authentication)&#x20;
3. In the body of your request, include the following parameters:

* `selfie` (Mandatory which contain the user selfie captured live according to the Image guidelines [here](https://docs.faceki.com/quick-guides/image-guidelines))
* `workflowId` (Mandatory, you can generate a workflow through the portal and copy the ID to use in the API)
* `document_1_front` (Mandatory for all the document types (ID, DL, Passport) )
* `document_1_back` (Optional only for Passport)
* `document_2_front` (Mandatory for all the document types (ID, DL, Passport)  if the workflow assigned has 2 documents)
* `document_2_back` (Optional only for Passport)
* `document_3_front` (Mandatory for all the document types (ID, DL, Passport)  if the workflow assigned has 3 documents)
* `document_3_back` (Optional only for Passport)
* `record_identifier` (Optional field, you will receive the same on webhook to identify the record on your end)

**NOTE: Make sure the document field contains the same document image of the front and back.**&#x20;

<figure><img src="https://2740493135-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fa8ZQwB8n4moII834UHCv%2Fuploads%2FFpxBs5zEUHkT9Jrye6Ce%2Fimage.png?alt=media&#x26;token=8d6c57ba-0f6d-4bf5-b54e-feb212f06c20" alt=""><figcaption></figcaption></figure>

## FACEKI KYC Verification Request

<mark style="color:green;">`POST`</mark> `https://sdk.faceki.com/api/v3/kyc_verification`

#### Headers

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

#### Request Body

| Name                                                 | Type   | Description                                                                                                                                           |
| ---------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| workflowId<mark style="color:red;">\*</mark>         | String | Mandatory, you can generate a workflow through the portal and copy the ID to use in the API                                                           |
| selfie<mark style="color:red;">\*</mark>             | File   | Mandatory which contain the user selfie captured live according to the Image guidelines [here](https://docs.faceki.com/quick-guides/image-guidelines) |
| document\_1\_front<mark style="color:red;">\*</mark> | File   | Mandatory for all the document types (ID, DL, Passport)                                                                                               |
| document\_1\_back                                    | String | Optional only for Passport                                                                                                                            |
| document\_2\_front                                   | String | Mandatory for all the document types (ID, DL, Passport)  if the workflow assigned has 2 documents                                                     |
| document\_2\_back                                    | String | Optional only for Passport                                                                                                                            |
| document\_3\_front                                   | String | Mandatory for all the document types (ID, DL, Passport)  if the workflow assigned has 3 documents                                                     |
| document\_3\_back                                    | String | Optional only for Passport                                                                                                                            |
| record\_identifier                                   | String | Optional, you will receive the same on webhook to identify the record on your end                                                                     |

{% tabs %}
{% tab title="200: OK KYC Request Response" %}

```json

{
    "status": true,
    "code": 200,
    "message": "OK",
    "appVersion": "v3.0.0",
    "result": {
        "requestId": "fca3fe38-9182-XXXX-XXXX-97b58ce27703",
        "document_data": [
            {
                "reference": "97XXXXXXX9",
                "full_name": "MXXXXXXXXXXXXXT",
                "first_name": "MUHAMMAD XXXXXX",
                "local_name": "ا",
                "last_name": "TXXXXXXR",
                "middle_name": "",
                "nationality": "BAHRAINI",
                "nationality_iso": "BH",
                "nationality_iso2": "BHR",
                "issuer": "Bahrain",
                "issuer_iso": "BH",
                "issuer_iso2": "BHR",
                "gender": "M",
                "dob": "XX",
                "age": "XX",
                "expiry": "XXXX-XXX-XX",
                "expiryDay": "XX",
                "expiryMonth": "XX",
                "expiryYear": "XXXX",
                "issued": "",
                "issuedDay": "",
                "issuedMonth": "",
                "issuedYear": "",
                "documentAdditionalNumber": "",
                "document_number": "9XXXXXX09",
                "document_type": "I",
                "document_type_full": "Identity Card",
                "mrz": "IDBHR9XXXXXXXX95<<<<<<<<<<<<<<<^XXXXXXXXXXXXXXXXXX<<<<<<<<<<<4^XXXX<<MUXXXXD<XXXXQ<<<<<<<",
                "document_face_match": {
                    "similarity": 99.98751831054688,
                    "confidence": 99.99876403808594
                },
                "passed": true,
                "date_of_birth": "XXXX-XX-XX",
                "date_of_birth_day": "XX",
                "date_of_birth_month": "XX",
                "date_of_birth_year": "XXXX"
            }
        ],
        "selfie_data": {
            "liveness_pass": true
        },
        "verification_summary": {
            "face_verified": true,
            "selfie_liveness_verified": true,
            "document_verified": true,
            "verification_rules_passed": true,
            "document_liveness_verified": true,
            "image_quality": true
        },
        "warnings": [],
        "aml": [],
        "errorCodes": [],
        "document_data_confidence": [
            {
                "reference": "9XXXXXXX9",
                "full_name": 0.9,
                "first_name": 0,
                "local_name": 0.9,
                "last_name": 0,
                "middle_name": 0,
                "nationality": 0.97,
                "nationality_iso": 0.97,
                "nationality_iso2": 0.97,
                "issuer": 0,
                "issuer_iso": 0,
                "issuer_iso2": 0,
                "gender": 0.99,
                "dob": 0.9,
                "age": 0,
                "expiry": 1,
                "expiryDay": 1,
                "expiryMonth": 1,
                "expiryYear": 1,
                "issued": 0,
                "issuedDay": 0,
                "issuedMonth": 0,
                "issuedYear": 0,
                "documentAdditionalNumber": 0,
                "placeOfBirth": 0,
                "document_number": 1,
                "personal_number": 0,
                "document_type": 0.8977721333503723,
                "document_type_full": 0.8977721333503723,
                "mrz": 0.44,
                "date_of_birth": 0.9,
                "date_of_birth_day": 0.9,
                "date_of_birth_month": 0.9,
                "date_of_birth_year": 0.9
            }
        ],
        "decision": "ACCEPTED",
        "companyId": "4XXXX8-XXXX-4748-XXXX-cd5aa892b4f0",
        "workflowId": "e67dcb8f-XXXX-4c5e-XXXX-f9373XXXX0cf6",
        "branchId": "XXX99e557XXXXXX58d08XXX",
        "deviceDetails": {
            "useragent": "PostmanRuntime/7.36.1",
            "detectResult": {
                "os": {},
                "client": {
                    "type": "library",
                    "name": "Postman Desktop",
                    "version": "7.36.1"
                },
                "device": {
                    "id": "",
                    "type": "",
                    "brand": "",
                    "model": ""
                }
            },
            "ip": "XXXX.71.XXX.1XX"
        }
    }
}

```

{% endtab %}

{% tab title="401: Unauthorized Unauthorized Request" %}
Kindly check the Token is not expired, find more about the token [here](https://docs.faceki.com/api-integration/verification-apis/authentication)
{% endtab %}

{% tab title="413: Payload Too Large Entity Too Large" %}
If your overall request size exceeds 10 MB (Combination of Front & Selfie). Kindly make sure to use images less than 3 MB each
{% endtab %}
{% endtabs %}

### Need Support?&#x20;

Contact us on WhatsApp [Click here ](https://wa.me/+13026131330)


---

# 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://docs.faceki.com/api-integration/verification-apis/perform-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.
