# Getting Started

FACEKI Real-Time Identity Verification - KYC

### This is the official guide for FACEKI developers.

&#x20;

If you are looking for a comprehensive guide to help you with customizing, integrating, and using FACEKI's real-time eKYC solution for user verification, you have come to the right place. The FACEKI Developer Documentation provides you with all the information and resources you need to get started and make the most of the FACEKI platform.

#### What is FACEKI Identity Verification?&#x20;

FACEKI eKYC is a digital identity verification service that allows you to verify users from any country in less than 30 seconds. FACEKI's eKYC solution enables organizations to comply with anti-money laundering (AML) and Know Your Customer (KYC) regulations by verifying customer identities with high accuracy. It also helps businesses to evaluate the risk level of potential customers and detect suspicious activities.

Our advanced technology can verify over 13,000 documents from more than 230 countries in real time, supporting over 35 languages. This ensures that only authorized individuals can access your services, preventing any fraud and identity theft.&#x20;

With FACEKI's real-time user verification, businesses can authenticate users quickly and securely while protecting against fraud and data discrepancies. Our solutions are designed to create a safer digital environment for all involved parties, allowing businesses to onboard customers safely and efficiently.

#### How does it work?

&#x20;

**For users, it consists of 3 steps:**

1. User ID verification: The user starts the verification process by capturing a photo of their ID document (ID, Passport, or Driving License) through an app or website.
2. Liveness check: FACEKI's solution performs a liveness check to ensure that the user is physically present and not a spoofed image. This involves asking the user to perform a specific action, such as blinking or nodding their head.
3. Verification result: Once all the checks are completed, FACEKI's solution returns a verification result indicating the verification result (Accepted or Declined).

<figure><img src="/files/V55n2rAT0C9a2W731NlN" alt=""><figcaption></figcaption></figure>

#### The security checks performed:

While the user performing the steps above, FACEKI behind the scenes is performing several AI-powered security checks in real-time, before a result gets given. Below is a list of the checks performed:

&#x20;

1. Anti-spoofing Check: FACEKI's solution uses advanced anti-spoofing technology to detect and prevent fraud attempts, such as the use of fake photos or videos.
2. Photo Face Match Check: FACEKI's solution compares the user's submitted photo or ID document with a live photo or video of the user to confirm that they are the same person.
3. Image Quality Check: Make sure that all texts on the ID are readable and with a high confidence score, and that the ID portrait image is clear, not blurry.
4. Document Type Check: To identify the type of document presented whether it’s an ID card, Passport, Driving License, or other type. Also identifying the document's origin and issuing country.
5. Security Features Check: Make sure that the document includes all security features by the issuer, and that it’s authentic, not photoshopped or manipulated in any shape or form.
6. Data Matching Check: Cross-check the data printed in the document on the front side and the back that it matches. Also, match the printed data (using OCR) with the data in the document Bar Code and MRZ code that they are matching, otherwise, it will be flagged.
7. Validity Check: Make sure that the document presented is valid and not expired, as well as calculate the days remaining till it expires.
8. Additional Checks: Depending on the requirements and settings selected, businesses may opt to activate extra checks to be performed, additional checks may be performed, such as age verification, gender verification, and nationality verification.
9. Risk Scoring: Once all the checks are completed, FACEKI's solution calculates the risk based on all checks performed and returns a verification result indicating whether the user verification is Accepted or Declined.

&#x20;

**Overall, FACEKI's solution provides businesses with a fast, secure, and efficient way to authenticate users while also preventing fraud and creating a safer digital environment.**


# Quick Guides

Accessing FACEKI dashboard

This guide will take you through FACEKI's dashboard which you have been granted access to upon subscribing to FACEKI.

### [Image Guidelines](/quick-guides/image-guidelines)

### [Workflow Setup](/quick-guides/workflow-setup)

### [Verification Monitoring ](/quick-guides/verification-monitoring)

### [API Credentials (Client ID & Client Secret)](/quick-guides/api-credentials)

###


# Image Guidelines

FACEKI Image recommendation

Poor image quality may result in errors. Therefore, to reduce errors, note the following:

* Motion blur effect can significantly increase BPCER (Bona Fide Presentation Classification Error Rate) or the rate of errors classifying a live person as a spoof.
* Fish-eye lenses are not supported by FACEKI.
* FACEKI does not accept any fade, blur, not clear face image, two persons in a photo, stretch dimensions, or filtered pictures.
* Texture filtering can significantly increase APCER (Attack Presentation Classification Error Rate) or the errors of allowing impostors through.
* Spotlights on the faces and nearest surroundings can significantly increase BPCER.
* Ill-lighted environment and colored lights can significantly increase BPCER.
* Appropriate distance is required to capture the face image to comply with the requirements below. Please ensure that inter-pupillary distance, face size, and recommended face proportion on the image are preserved.
* The face should have proper lighting and should fit in the oval with a proper ratio and dimensions.&#x20;
* FACEKI does not recognize small-dimension images.

### Correct Sample

<figure><img src="/files/v2yqM4Do7kglLBENIb9N" alt=""><figcaption><p>Selfie Valid Sample</p></figcaption></figure>

###

<figure><img src="/files/jkWvstc104aK9aeXPanq" alt=""><figcaption><p>Oval with a proper ratio and dimensions</p></figcaption></figure>

### Invalid Sample

<figure><img src="/files/aOuOqXudpTe94eApcAkM" alt=""><figcaption><p>Selfie Invalid Sample</p></figcaption></figure>

### Card Images Guidelines:

Please find the reference samples below:

<figure><img src="/files/XVvqVXOIFcQoQcBghuPs" alt=""><figcaption><p>Make sure your hand is not covering details</p></figcaption></figure>

<figure><img src="/files/apkHcwBsbsyivKNrrXcT" alt=""><figcaption><p>Avoid light reflection on the card</p></figcaption></figure>

<figure><img src="/files/K68xwbzXs4AXTQOVgD0M" alt=""><figcaption><p>Picture must be clear, in focus and not blurry</p></figcaption></figure>

<figure><img src="/files/Likfctpb2VemVHNArK4y" alt=""><figcaption><p>Should show all details</p></figcaption></figure>

### Correct Sample:

<figure><img src="/files/irXc8A7OUNMFOZCUva4Y" alt=""><figcaption><p>Find an area with good lighting</p></figcaption></figure>

### Need Support?&#x20;

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


# Workflow Setup

With Workflow Setup, you can customize your verification requirements and see immediate changes. Here's how to get started:

## **Step 1: Getting Started (Create Workflow)**

From the [FACEKI dashboard](https://intelligence.faceki.com/customer/integrations/workflow-manage), navigate to **Workflows**. Here, you can create and configure the verification workflows.&#x20;

1. Click the Create Workflow Button, then enter the workflow name. Once completed, you can configure the Rules/Configuration by clicking the Magic icon in the action column.

<figure><img src="/files/LG1Kqq0KeJku70I90TEZ" alt=""><figcaption><p>Create Workflow FACEKI Intelligence</p></figcaption></figure>

## **Step 2: Configure Workflow Rules and Configuration**

### **Setting up Documents Rules:**

* **Document Type**: Select one or more documents based on your business needs.
* **Allow Customer to Choose Document**: Enable this option if you want the customer to select one document from the list of selected options. If disabled, the customer must provide all selected documents.
* **Nationality**: Specify the nationality if you want to restrict acceptance to specific nationalities. Only select this if the document explicitly states the nationality; otherwise, leave this field empty.
* **Issuer Country**: Choose the issuer country if you want to restrict acceptance to documents issued by specific countries.
* **Min Age**: Define the minimum age for acceptance. This setting will only apply if the document includes the Date of Birth.
* **Max Age**: Define the maximum age for acceptance. This setting will only apply if the document includes the Date of Birth.

<figure><img src="/files/GT7m7d3SwBf4RcouCBqw" alt=""><figcaption><p>Document Rules</p></figcaption></figure>

### **Contact Info (**&#x41;pplicant Contact Information)

* **Require Contact Information**: Enable this option if you wish to capture the user's email address and phone number during the identity verification process. This information will later be used for Behavioral Insights and Risk/Digital Footprint analysis.

<figure><img src="/files/Mh8EthlslR3NIyU8uqJm" alt=""><figcaption><p>Contact info</p></figcaption></figure>

### **Security (**&#x41;uthenticity Checks for Selfie & Document)

* **Selfie Match Score**: You can adjust the score for Document Portrait and Selfie match between 0 and 100. We recommend keeping it above 95 for better accuracy.
* **Document Liveness**: You can adjust the score for Document Liveness between 0 and 1. We recommend keeping it above 0.7 for enhanced security.
* **AML Type**: Choose between two AML engines:
  * **Standard (Included in Package)**: Basic AML checks.
  * **Plus**: An on-demand paid service, charged separately. For further details, please contact [Sales](https://docs.faceki.com/need-help/support).
* **Enforce Geolocation from Device (WEB)**: Enable this option to require users to allow location access from their browser or mobile device during verification.
* **Allow Applicant Only Once**: Enable this option to prevent duplicate EKYC submissions. If a user has already completed EKYC, their request will be rejected with the appropriate response code.

{% code fullWidth="false" %}

```
USER_ALREADY_VERIFIED : 8024
```

{% endcode %}

<figure><img src="/files/PNifK5sIPMGdkgjgyumw" alt=""><figcaption><p>Security</p></figcaption></figure>

### Compliance **(**&#x44;ata Storage and Branch Info)

* **Store Data with FACEKI**: When this option is disabled, verification data will not be stored on the FACEKI platform. Instead, it will be transmitted via the configured Webhook. If no Webhook is set up, no data will be made available.
* **Branch**: For organizations operating within a Multi-Branch System, please select the specific branch for which this workflow is being created.
* **Data Storage**: Choose from the data centers provided by FACEKI. For further details, please contact [Sales](https://docs.faceki.com/need-help/support)

<figure><img src="/files/xCV0QC2Y6H30cqxLWF7T" alt=""><figcaption><p>Compliance</p></figcaption></figure>

### Post Processing **(**&#x52;ules After Processing the Document)

* **Callback/Redirection URL**: Enter the URL for redirection. Upon completion of the verification process, the system will redirect to the specified URL, including the LINK ID as a query parameter.
* **Mark Failed Verification for Review**: Enable this option to flag failed verifications for further review.
* **Mark Expired Document as Failed**: Enable this option to automatically mark expired documents as failed during the verification process.

<figure><img src="/files/XO88rRK8iP6uxj70fOBh" alt=""><figcaption><p>Post Processing</p></figcaption></figure>

### Additional Document **(**&#x4E;eed Extra Document As Attachment? (WEB ONLY))

* **Additional Document Review By**:
  * **FACEKI**: Selecting this option means the FACEKI team will review the document. Each document will incur a separate charge to your account.
  * **Self-Service**: If selected, your team will manually verify the documents through our intelligence portal to accept or reject them.
* **Document Country**: Select the country from which the document is required.
* **Document Type**: Choose the specific document type needed from the selected country.
* **Allow Applicant to Upload One Document**: Enable this option if you have multiple document types available and want the user to choose one from those options.

You can configure these settings for multiple countries as needed.

<figure><img src="/files/TRKmS8WFW0JFaU4dpHjF" alt=""><figcaption><p>Additional Document</p></figcaption></figure>

### Theme Customization (Customize UI for Web)

* **Language**: Select the language for the workflow from the following options: English, Spanish, or Arabic.
* **Logo URL**: Enter the URL for the logo to be displayed in the workflow.
* **Turn Off Send Email Flow**: Enable this option to disable the email verification flow.
* **Turn Off Result Screen**: Enable this option to hide the result screen at the end of the verification process.
* **Background Color**: Specify the background color for the workflow interface.
* **Card Background Color**: Select the background color for the cards displayed in the workflow.
* **Icon Color (Desktop)**: Choose the color for icons displayed on the desktop (e.g., Capture, Flip, etc.).
* **Icon Color (Mobile)**: Choose the color for icons displayed on mobile devices (e.g., Capture, Flip, etc.).
* **Heading Text Color**: Specify the color for heading text within the workflow.
* **Normal Text Color**: Choose the color for normal text throughout the interface.
* **Button Color**: Specify the color for buttons in the workflow.
* **Success Text**: Enter the message to be displayed for successful verifications.
* **Decline Text**: Enter the message to be displayed for declined verifications.
* **Selfie Guidance Image URL**: Provide the URL for the image that offers guidance for taking a selfie.
* **Card Guidance URL (Multiple)**: Enter the URL(s) for additional guidance related to the cards in the workflow.

<figure><img src="/files/6b9RnZUDJkyfU8xhbfOZ" alt=""><figcaption><p>Theme Customization </p></figcaption></figure>


# Verification Monitoring

The verification monitoring tab shows you every single verification done in more detail.

The verification Monitoring Page is a feature in the user dashboard that allows users to monitor the status of their KYC verification process.

The page also provides a detailed breakdown of the user's verification status, including the date and time of the verification process, the documents submitted, and any comments or feedback provided by the FACEKI.

Overall, the Verification Monitoring Page provides users with a transparent and user-friendly way to monitor their KYC verification status and ensure that they meet all necessary compliance requirements.

## Steps Access to Verification Monitoring Page

[Log in](https://intelligence.faceki.com/) to the user dashboard using your credentials. Once you are logged in, navigate to the [verification monitoring section](https://intelligence.faceki.com/customer/verifications/monitoring), under the Verification menu.

You can filter the results based on various parameters, including:

* **Date of Verification**
* **Document Number**
* **Person Name**
* **Request ID**
* **Issuer Country**
* **Branch**
* **Status**

Additionally, you can view detailed reports for each verification request by clicking the respective view button in the action column. From there, you can download the PDF report or delete the record as needed.

You also have the option to export the data for further analysis and reporting in Excel or CSV format.

### Filters Available:

<figure><img src="/files/5GHB3mYzyYEwTfCE4DfC" alt=""><figcaption></figcaption></figure>

### Monitoring Screen:

<figure><img src="/files/MP1Wv2y47G8k4tYPuyeW" alt=""><figcaption></figcaption></figure>

## Verification details:

### **Overview**

#### **Person Name**: The full name of the individual undergoing verification.

**Document Number**: The unique identifier associated with the document provided.

**Status**: The current status of the verification process (e.g., Pending, Approved, Declined).

**Contact Email / Phone Number**: The email address and/or phone number provided by the user during verification.

**Verification Timestamp**: The date and time when the verification process was completed.

**Security Checks**: Key verification criteria, including:

* **Selfie Liveness**: Assessment of the selfie to confirm the user's presence.
* **Document Liveness**: Verification that the document is genuine and not a static image.
* **Face Match**: Comparison between the selfie and the document photo.
* **Verification Rules**: Compliance checks are based on predefined rules.
* **Quality & Analysis**: Evaluation of the document's quality and authenticity.
* **AML/PEP**: Screening against Anti-Money Laundering (AML) and Politically Exposed Persons (PEP) lists.

<figure><img src="/files/d40oMXrc4ke7uQvTSuWX" alt=""><figcaption></figcaption></figure>

### Documents Information:

* **Person Name**: The full name of the individual undergoing verification, which is essential for identity confirmation.
* **Document Type**: The category of identification document provided, such as an identity card, which indicates the type of identity being verified.
* **Document Number**: A unique identifier assigned to the document, used for tracking and verification purposes.
* **Personal No. / Document Additional No.**: An additional identification number associated with the document, which may serve various administrative or verification functions.
* **Document & Selfie Face Match Score**: The percentage score indicating the match quality between the submitted selfie and the document photo, reflecting the accuracy of facial recognition.
* **Full Name**: The complete name as it appears on the identification document, is crucial for verification against submitted data.
* **First Name**: The individual's first name, which helps in personal identification.
* **Middle Name**: The individual's middle name, if applicable, providing additional context to the person’s identity.
* **Last Name**: The family name of the individual, necessary for formal identification.
* **Local Name**: The name in the local language or script, if applicable, which may be relevant in specific contexts.
* **Gender**: The individual's gender, as recorded on the identification document, is important for demographic purposes.
* **Date of Birth**: The birth date of the individual, which is critical for age verification.
* **Expiry Date**: The date on which the document becomes invalid, necessary for assessing the document's current status.
* **Issue Date**: The date when the document was issued, which may be relevant for determining the document's validity period.
* **Nationality**: The individual's nationality as stated in the document, is important for compliance and regulatory purposes.
* **Nationality Local**: The local designation of nationality, if provided, is useful for cultural or legal contexts.
* **Document Issuer**: The authority or country that issued the document, is significant for verifying the document's authenticity.
* **MRZ (Machine Readable Zone)**: The section of the document containing encoded data for machine reading, essential for automated verification processes.

**Actions**

* **Copy JSON Object**: A feature that allows users to copy the verification details in JSON format for further use or integration into other systems.

<figure><img src="/files/hpSzwff8jTr1uUjHc0Yc" alt=""><figcaption></figcaption></figure>

### Documents Images

* **Selfie Image:** The image captured of the individual’s face during the verification process. This is used for facial recognition to match with the document photo.
* **Document Front Image:** The full image of the front side of the identification document. This image contains essential information such as the holder's name, document number, and expiration date.
* **Document Back Image:** The full image of the back side of the identification document. This may include additional information, such as security features or barcodes.
* **Document Back Image:** The full image of the back side of the identification document. This may include additional information, such as security features or barcodes.
* **Document Front Cropped Image:** A cropped version of the front image that focuses on key identifying features, facilitating easier review and processing.
* **Document Back Cropped Image:** A cropped version of the back image that highlights important details while eliminating unnecessary background, improving clarity for verification.
* **Signature:** The image of the individual's signature, usually taken from the document. This is used to verify authenticity and confirm identity.
* **Document Portrait:** A portrait-style image of the identification document, ensuring that all relevant details are captured and presented clearly for verification purposes.

<figure><img src="/files/qO2MIvmDg3CMTPODvgC1" alt=""><figcaption></figcaption></figure>

### AML Information:

<figure><img src="/files/ezgygrI6dZGKQ0H108xU" alt=""><figcaption></figcaption></figure>

### Device Fingerprints:

**Device Information**

* **Type**: Specifies the category of the device being used (e.g., smartphone, tablet, desktop), which helps tailor the verification process to device capabilities.
* **Brand**: The manufacturer of the device (e.g., Apple, Samsung), useful for assessing device authenticity and security features.
* **Model**: The specific model of the device, provides insight into its hardware capabilities and software compatibility.
* **Client Type**: Indicates the type of client application being used (e.g., web browser, mobile app), important for understanding the user experience during verification.
* **User Agent**: A string of data that provides information about the browser and operating system, assisting in identifying potential compatibility issues or anomalies.

**IP Information**

* **IP Address**: The unique address assigned to the device, used for geolocation and security checks to verify the user's location.
* **ISP (Internet Service Provider)**: The company providing internet access to the user, which can give context about the reliability and security of the connection.
* **Region/City**: The geographical location of the user based on their IP address, is important for compliance with regional regulations.
* **Timezone**: The local time zone of the user, which can be relevant for timing-related verification processes and behavioral analysis.
* **Additional**: Any supplementary information related to the IP address

***

<figure><img src="/files/ilyYRbbNUWjHN7AKRN7L" alt=""><figcaption></figcaption></figure>

### Behavioral Insight & Risk:

**. Phone Information**

* **Phone Number**: This field records the mobile phone number being assessed for potential risks.
* **Country**: This field verifies the country in which the phone number is registered, confirming the location and providing carrier/provider information.
* **Carrier/Provider**: This field identifies the service provider associated with the phone number (e.g., AT\&T, Vodafone), helping to determine legitimacy.
* **Type**: This field classifies the phone number as a mobile line or other types (e.g., landline, VoIP).
* **WhatsApp Last Seen**: This field records the last known activity or usage associated with the phone number on WhatsApp, helping to assess recent usage.
* **Risk Level**: This field evaluates the risk level of the phone number, with "Low" indicating no suspicious activity or fraud detected.
* **Disposable Phone**: This field checks whether the phone number is linked to a disposable or temporary account, which would indicate a higher risk of fraud.

**Email Information**

* **Email Provider**: This field identifies the domain of the email address (e.g., Gmail, Yahoo) to determine if it's associated with a common and trusted provider.
* **Risk Level**: This field assesses the overall risk of the email address, considering factors like data breaches or suspicious activity.
* **Data Breaches**: This field checks if the email address has been involved in any known data breaches, which would indicate a potential security risk.
* **Domain Info**: This field provides information about the domain associated with the email address, ensuring it's a legitimate and trusted provider.
* **Additional Information**: This field confirms whether the email address is linked to a free mail provider, which is common for personal use.
* **Social Media Profiles**: This field identifies any active social media profiles connected to the email address, verifying the user's presence across trusted platforms.
* **Temporary Email**: This field checks if the email address is a disposable or temporary account, which could be a sign of fraudulent behavior.

**IP Address Information**

* **IP Address**: This field records the specific IP address under evaluation for potential security risks.
* **Country**: This field confirms whether the IP address matches the expected country, ensuring geographical consistency.
* **Risk Level**: This field indicates the overall risk associated with the IP address, based on various factors such as suspicious activity or known threats.
* **VPN/Proxy/Tor Detection**: This field checks for any evidence that the IP address is using VPNs, web proxies, or Tor networks, which could indicate attempts to conceal the user's true location.
* **Public Proxy**: This field identifies whether the IP address is being routed through a public proxy, which could be a sign of anonymous or potentially malicious behavior.
* **Open Ports and Spam Lists**: This field checks if the IP address is associated with any open ports or listed in spam databases, helping to determine its legitimacy.

<figure><img src="/files/mIzxBxs8HppMmrjjsVUR" alt=""><figcaption></figcaption></figure>

### Timeline & Notes:

**Audit Trail**

The **Audit Trail** provides a detailed log of system interactions, capturing the following information:

* **Timestamp**: The exact time an action occurred.
* **Email**: The email address of the individual who performed the action.
* **Action Detail**: A brief description of the action taken, such as logging in, updating settings, or modifying permissions.

**Notes**

The **Notes** section captures additional comments or updates made by users, including:

* **Timestamp**: The time the note was added.
* **Note**: A brief description or comment&#x20;
* **Who Added the Note**: The email address of the user who added the note.

<figure><img src="/files/beorF7ZzCne5jVbATmfv" alt=""><figcaption></figcaption></figure>

### Actions:

You can update the verification as per your need.

<figure><img src="/files/AG1CcYDGL0ZNlbZvvynN" alt=""><figcaption></figcaption></figure>


# API Credentials

A guide on how to access the dashboard and create a JWT secure token for integrations.

To Authenticate with the FACEKI APIs, you need the Client ID and Client Secret:

* Login into the portal
* Navigate to **Integration ->** [**`Credentials`**](https://intelligence.faceki.com/customer/integrations/credentials)

<figure><img src="/files/56zle9y1SmIkaQaz57aI" alt=""><figcaption></figcaption></figure>

Now you can copy the Client ID and Client Secret for further use with the APIs

{% hint style="info" %}
Please don't share the token with anybody, keep it highly secure and confidential &#x20;
{% endhint %}


# Webhook Setup

Guide to setup a webhook for EKYC & AML

**Webhook Configuration Fields**

* **Webhook Name**:\
  This field allows you to specify a custom name for your webhook, making it easily identifiable in your system.
* **Webhook URL**:\
  The endpoint URL of your server where the webhook data will be sent. Ensure this URL is accessible and can process incoming data. The URL must support the required HTTP method (e.g., POST).
* **Webhook HTTP Method**:\
  Specifies the HTTP method the webhook will use to send data. The most commonly used method is **POST**, which sends data in the body of the request. Ensure that your server is set up to accept this method.
* **Headers (Key-Value Pairs)**:\
  Custom headers that can be added to the webhook request. These headers can include authorization tokens, content type, or any other information necessary to authenticate or process the webhook on your server. Example:
  * **Authorization**: `mysecret`
  * **Content-Type**: `application/json`

**Webhook Usage**

Once the webhook is configured, it will receive notifications for the following scenarios:

1. **eKYC Response**:\
   After the eKYC verification process is completed, the webhook will receive a response containing the final status and details of the verification. This enables your system to act upon successful verification or handle failures accordingly.
2. **eKYC Status Updates**:\
   Any changes or updates to the eKYC process (e.g., a status change from "pending" to "approved" or "rejected") will trigger a webhook notification. This keeps your system informed of real-time status changes.
3. **AML Ongoing Monitoring Updates**:\
   If there are any updates related to ongoing AML monitoring (e.g., detection of suspicious activity or an alert on a monitored case), the webhook will be notified. This ensures that your system stays up-to-date with potential AML-related issues.
4. **AML Status Update:**\
   If there are any changes in the AML Status done through our FACEKI Intelligence Platform by any user it will be sent to the webhook

Sample EKYC [response](/api-integration/verification-apis/perform-kyc-verification)

<figure><img src="/files/MO1gvI58tYY6nikTfZOi" alt=""><figcaption></figcaption></figure>


# Integrations

Get started quickly using FACEKI's SDK to integrate identity verification into your app.

## API Integration

Integrate FACEKI document verification solution to any platform, software, or app using our APIs

* [API Documentation](#api-integration)

## Web App Integration

Integrate your web app and web platform using FACEKI SDK

* [React SDK](/web-sdk/react)

## Mobile App Integration

Integrate your web app and web platform using FACEKI SDK

* [React Native SDK](/mobile-sdk/react-native-sdk-plugin)
* [iOS Native SDK](/mobile-sdk/ios-sdk)
* [Android Native SDK](/mobile-sdk/android-sdk)

## Zero Integration (No Code)

A no integration option for identity verifications. it can be used in a variety of scenarios, or during development.

* [Zero Integration Part / Generate KYC Link](#zero-integration)

{% hint style="info" %}
This function is available directly from the FACEKI dashboard. Zero (No) integration is required at all.
{% endhint %}


# Zero Integration (via a Link)

Start Verifying documents without the need for any integration.

This feature allows you to generate a [KYC verification link](https://apps.faceki.com/Workflow/Verification-Link) from the user dashboard to verify users without the need for integration. The generated link can be sent directly to the users for verification, which they can use on any device having a camera via a web browser.

## **Step 1: Getting Started (Create Workflow)**

From the [FACEKI dashboard](https://apps.faceki.com/login), navigate to **Workflows**. Here, you can create and configure the verification workflows.&#x20;

1. Click the Create Workflow Button then enter the workflow name, once completed you can configure the Rules/Configuration by clicking on the setting icon in the action column.

<figure><img src="/files/6MGc4q9RUesxAJqOQW1L" alt=""><figcaption><p>Create Workflow</p></figcaption></figure>

## **Step 2: Configure Workflow Rules and Configuration**

* Setting up Business Rules:
  * **Documents:** Select one or more documents according to your business needs. If you want the customer to choose between any one of your selected documents turn on the "Allow User To Choose One Document" otherwise, they need to provide all the documents selected.
  * **Branch:** if you are running the Multi Branch System, you can select the branch here for which you are creating this workflow.
  * **Nationality**: Select the nationality if you want to allow only specific nationalities to be accepted, **Only select this if the document has the nationality mentioned otherwise leave it empty.**
  * **Issuer Country**: Select the issuer country if you want to allow only specific issuer country's documents to be accepted
  * **Min Age**: Define the minimum age for a person to be accepted. This will only work if the document has the Date of Birth mentioned
  * **Max Age**: Define the maximum age for a person to be accepted. This will only work if the document has the Date of Birth mentioned

<figure><img src="/files/syWcOR0SeKnlVieaaF3z" alt=""><figcaption></figcaption></figure>

* Setting up the KYC Engine:
  * **AML Type**: You can choose between two AML Engines
    * Standard (Included in Package): Basic AML Checks
    * Plus: On-Demand Paid Service, which will be charged separately. For further details, please contact [Sales](/need-help/support)&#x20;
  * **Data Storage:** You can select between the data centers provided by FACEKI, For further details, please contact [Sales](/need-help/support)
  * **CallBack/Redirection URL:** Enter the URL for redirection, once the verification process is completed, it will be redirected to your entered URL with the LINK ID as a query param.
  * **Face Match:** You can define the face match score between (0-100) for the document and the selfie. The default score is 95%
  * **Store Data with FACEKI:** if switched off, the verification data will not be stored on the FACEKI instead data will be sent through the Webhook configured, if no webhook is configured, no data will be provided.

<figure><img src="/files/Ay1jwP97p4qHzbtYh0WV" alt=""><figcaption></figcaption></figure>

* Color Setting / Branding:

You can define your customized branding according to your brand guidelines. You can check the info icon next to each field for further information.

<figure><img src="/files/rdFWYZSRUa3cHCBzauWY" alt=""><figcaption></figcaption></figure>

## **Step 3: Generate KYC Link**

Finally, go to **Verifications -> Generate Verification Link** to generate the KYC verification link. Set the desired validity period for the link (how long it will remain active), specify the usage count (how many times the link can be used, 0 for unlimited), and select the workflow.

You can then copy the generated link and send it to the user for verification. The user will be able to follow the link to complete the KYC verification process.

<figure><img src="/files/HxBuVUnOYet6my8hnC8c" alt=""><figcaption></figcaption></figure>

## Need Support?&#x20;

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


# Verification APIs

`Note: If you're currently using our older Version(v1) at`**`api.faceki.com`**`we kindly ask that you switch to our new endpoint at`**`sdk.faceki.com`**`to take advantage of the latest features and improvements in FACEKI BLAZE 3.0`

The FACEKI API follows the principles of Representational State Transfer (REST) architecture. This means that it utilizes commonly used HTTP response codes and verbs to facilitate communication between client and server. To ensure secure access, the API also uses token-based authentication. By adhering to these industry standards, FACEKI API aims to provide a reliable and familiar experience for developers integrating with our service.<br>

## Base URL

```
sdk.faceki.com
```

### Postman Collection

```
https://www.postman.com/facekiteam/workspace/official-faceki/collection
```


# Authentication

Get an Authroization Bearer Token.

Base URL

```
sdk.faceki.com
```

### Token Generation End Point

```
https://sdk.faceki.com/auth/api/generate-token
```

Authentication for the Faceki API is achieved through token-based authentication. To authenticate requests made to the API, you must include an API token in the **Authorization** of your requests.

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

Authorization: Bearer Token

**Body:**

&#x20;clientId  \*(mandatary)

&#x20;clientSecret   \*(mandatory)
{% endhint %}

<figure><img src="/files/KKRuDeHXNy4YognoPdX7" alt=""><figcaption></figcaption></figure>

<mark style="color:blue;">`POST`</mark> `https://sdk.faceki.com/auth/api/generate-token`

#### Headers

| Name                                           | Type   | Description                                                                                                                                                                    |
| ---------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| clientSecret<mark style="color:red;">\*</mark> | String | <p>clientSecret will be found in the integration section.</p><p> <em>Example: <code>"clientSecret":"00nl0cuq780ur007spqspa94kq6rkn1fap1e0kdre7gdl97lvspk".</code></em><br></p> |
| clientId<mark style="color:red;">\*</mark>     | String | <p>(string, required) Client Id from integration settings.</p><p> <em>Example: <code>"client\_id":"0NTS4CBV8MVII02VGVSPICB00"</code>.</em><br></p>                             |
| Content-Type                                   | String | application/json                                                                                                                                                               |

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

```json
    "responseCode": 0,
    "data": {
        "access_token": "<Your API Token>",
        "expires_in": 3600,
        "token_type": "Bearer"
    }
}
```

{% endtab %}

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

```javascript
{
  "status": false,
  "message": "",
  "statusCode": 422,
  "data": {}
}
```

{% endtab %}

{% tab title="402 " %}

```javascript
{
  "clientSecret": ""
}
```

{% endtab %}

{% tab title="403 " %}

```javascript
{
  "status": false,
  "message": "client id is required",
  "statusCode": 422,
  "data": {}
}
```

{% endtab %}
{% endtabs %}

### <mark style="color:$danger;">Usage Policy:</mark>

* <mark style="color:$danger;">**Never use this API on Client Side Application (i.e Mobile SDKs, Web Browsers)**</mark>
* <mark style="color:$danger;">**Always use this API for Server to Server call ( Backend ONLY)**</mark>
* <mark style="color:$danger;">**Secure your credentials in .env**</mark>
* <mark style="color:$warning;">**Token Expiry:**</mark> <mark style="color:$warning;"></mark><mark style="color:$warning;">Tokens must be regenerated</mark> <mark style="color:$warning;"></mark><mark style="color:$warning;">**only after they expire**</mark><mark style="color:$warning;">. The</mark> <mark style="color:$warning;"></mark><mark style="color:$warning;">**default expiration time**</mark> <mark style="color:$warning;"></mark><mark style="color:$warning;">is</mark> <mark style="color:$warning;"></mark><mark style="color:$warning;">**3600 seconds (1 hour)**</mark><mark style="color:$warning;">.</mark>
* <mark style="color:$warning;">**Billing Notice:**</mark> <mark style="color:$warning;"></mark><mark style="color:$warning;">For</mark> <mark style="color:$warning;"></mark><mark style="color:$warning;">**high-volume requests**</mark><mark style="color:$warning;">,</mark> <mark style="color:$warning;"></mark><mark style="color:$warning;">**additional charges**</mark> <mark style="color:$warning;"></mark><mark style="color:$warning;">will apply based on the</mark> <mark style="color:$warning;"></mark><mark style="color:$warning;">**number of requests made per day**</mark><mark style="color:$warning;">.</mark>

<mark style="color:$danger;">Please ensure compliance to avoid service interruptions or unexpected billing.</mark>


# Generate KYC Link

This API allows clients to generate a unique KYC link for their users to verify their identity. The generated link can be sent to the user. Once the user follows the link, they can continue the verification process via a web browser.

### Base URL

```
sdk.faceki.com
```

### Generate KYC Link End Point API

```
https://sdk.faceki.com/kycverify/api/kycverify/kyc-verify-link
```

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

Authorization: Bearer Token

Content-Type: application/json
{% endhint %}

<figure><img src="/files/nrkaTLn7bnu2aEdwpB8u" alt=""><figcaption></figcaption></figure>

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

#### Headers

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

#### Request Body

| Name                                         | Type   | Description                                                                                 |
| -------------------------------------------- | ------ | ------------------------------------------------------------------------------------------- |
| expiryTime                                   | Number | expiryTime in minutes                                                                       |
| applicationId                                | String | Unique Identifier for record                                                                |
| redirect\_url                                | String | Redirect URL After KYC                                                                      |
| 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 |

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

<pre><code>{
    "responseCode": 0,
    "data": "LINKID",
    "url": "Verification URL"
<strong>}
</strong></code></pre>

{% endtab %}

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


# Perform KYC Verification

<figure><img src="/files/BKk6zHhndLjW5hw4Cy8m" 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](/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](/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="/files/LkNuccZ46nVjFPjgtt4g" 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](/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](/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)


# Fetch Records

API to fetch KYC record

This API allows clients to fetch  KYC records

### Base URL

```
sdk.faceki.com
```

### Fetch KYC Records

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

{% hint style="info" %}
Method: GET

Authorization: Bearer Token

Content-Type: application/json
{% endhint %}

<figure><img src="/files/eZn79Q7UreLoCncRx07i" alt=""><figcaption></figcaption></figure>

<mark style="color:blue;">`GET`</mark> `https://sdk.faceki.com/kycverify/api/kycverify/records`

#### Query Parameters

| Name               | Type   | Description                                            |
| ------------------ | ------ | ------------------------------------------------------ |
| requestId          | String | UniqueID generated by Faceki                           |
| face\_id           | String | Unique FaceID for user generated upon KYC verification |
| link               | String | Generated Link                                         |
| record\_identifier | String | Record Identifier by Customer for KYC Verification     |

#### Headers

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

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

```
{
    "status": true,
    "code": 200,
    "message": "OK",
    "appVersion": "v3.0.0",
    "result": [
        {
            "link": "unique-val",
            "record_identifier": "unique-val",
            "requestId": "XXXXX-ffa0-XCXXXX-9dfc-XXXXXXXXX",
            "document_data": [
                {
                    "reference": "XXXXXXXXX",
                    "full_name": "XXXXXX XXXX XXXXXX",
                    "first_name": "XXXXX XXXXX",
                    "local_name": "ا",
                    "last_name": "XXXXXXXX",
                    "middle_name": "",
                    "nationality": "XXXXXX",
                    "nationality_iso": "XX",
                    "nationality_iso2": "XXX",
                    "issuer": "Bahrain",
                    "issuer_iso": "BH",
                    "issuer_iso2": "BHR",
                    "gender": "M",
                    "dob": "03",
                    "age": "26",
                    "expiry": "XXXX-XX-30",
                    "expiryDay": "30",
                    "expiryMonth": "XX",
                    "expiryYear": "XXXX",
                    "issued": "",
                    "issuedDay": "",
                    "issuedMonth": "",
                    "issuedYear": "",
                    "documentAdditionalNumber": "",
                    "document_number": "XXXXXXXXX",
                    "document_type": "I",
                    "document_type_full": "Identity Card",
                    "mrz": "IDBHRXXXXXXXXX5<<<<<<<<<<<<<<<^97XXXXXX0530XXXX<<<<<<<<<<4^XXXXXER<<XXXXD<HXXXXX<<<<<<<",
                    "document_face_match": {
                        "similarity": 99.98751831054688,
                        "confidence": 99.99876403808594
                    },
                    "passed": true,
                    "date_of_birth": "XX-03-XX",
                    "date_of_birth_day": "XX",
                    "date_of_birth_month": "03",
                    "date_of_birth_year": "XX"
                }
            ],
            "selfie_data": {
                "liveness_pass": true
            },
            "warnings": [],
            "notes": [],
            "aml": [],
            "verification_summary": {
                "face_verified": true,
                "selfie_liveness_verified": true,
                "document_verified": true,
                "verification_rules_passed": true,
                "document_liveness_verified": true,
                "image_quality": true
            },
            "document_data_confidence": [
                {
                    "reference": "XXXXXXXXX",
                    "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": "DECLINED",
            "errorCodes": [],
            "deviceDetails": {
                "useragent": "PostmanRuntime/7.36.1",
                "detectResult": {
                    "client": {
                        "type": "library",
                        "name": "Postman Desktop",
                        "version": "7.36.1"
                    },
                    "device": {
                        "id": "",
                        "type": "",
                        "brand": "",
                        "model": ""
                    }
                }
            },
            "createdAt": "2024-01-22T21:17:41.556Z",
            "updatedAt": "2024-01-22T21:18:09.137Z",
            "__v": 0,
            "images": [
                {
                    "documentName": "ID_Card",
                    "side": "cropped_signature",
                    "key": "https://prodstorage.faceki.com/XXXXXXXXXXXXXXXX"
                },
                {
                    "documentName": "ID_Card",
                    "side": "cropped_portrait",
                    "key": "https://prodstorage.faceki.com/XXXXXXXXXXXXXXXX"
                },
                {
                    "documentName": "ID_Card",
                    "side": "cropped_front",
                    "key": "https://prodstorage.faceki.com/XXXXXXXXXXXXXXXX"
                },
                {
                    "documentName": "ID_Card",
                    "side": "front",
                    "key": "https://prodstorage.faceki.com/XXXXXXXXXXXXXXXX"
                },
                {
                    "documentName": "ID_Card",
                    "side": "back",
                    "key": "https://prodstorage.faceki.com/XXXXXXXXXXXXXXXX"
                },
                {
                    "documentName": "ID_Card",
                    "side": "cropped_back",
                    "key": "https://prodstorage.faceki.com/XXXXXXXXXXXXXXXX"
                },
                {
                    "documentName": "Selfie",
                    "side": "Selfie",
                    "key": "https://prodstorage.faceki.com/XXXXXXXXXXXXXXXX"
                }
            ],
            "face_id": "XXXXXXXXXXX-4f27-4744-XXXXX-7XXXXXXXXXXX3",
            "updateBy": "XXXXXXXXXXXXXXXXX"
        }
    ]
}
```

{% endtab %}

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


# Face Match API (💲)

Allows users to log in using facial recognition technology. It matches the selfie captured by the user during login with the facial image on file for that user, providing an extra layer of se

This API is used to verify a user who has already undergone KYC verification. It verifies the user's identity by comparing their face with the previously submitted documents, eliminating the need for the user to undergo KYC onboarding again. If the user is already verified, the API will prevent them from undergoing the verification process again.

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

Authorization: Bearer Token

Parameter:

selfie  (Image File) (\*Mandatory)
{% endhint %}

<figure><img src="/files/BAFNbiUEFvlbxSYuOUcV" alt=""><figcaption></figcaption></figure>

<mark style="color:green;">`POST`</mark> `http://sdk.faceki.com/api/v3/kyc_verification/search-by-face`

#### Headers

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

#### Request Body

| Name                                     | Type  | Description                |
| ---------------------------------------- | ----- | -------------------------- |
| selfie<mark style="color:red;">\*</mark> | Image | <p>Upload image</p><p></p> |

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

```
{
    "status": true,
    "code": 200,
    "message": "OK",
    "appVersion": "v3.0.0",
    "result": [
        {
            "link": "unique-val",
            "record_identifier": "unique-val",
            "requestId": "XXXXX-ffa0-XCXXXX-9dfc-XXXXXXXXX",
            "document_data": [
                {
                    "reference": "XXXXXXXXX",
                    "full_name": "XXXXXX XXXX XXXXXX",
                    "first_name": "XXXXX XXXXX",
                    "local_name": "ا",
                    "last_name": "XXXXXXXX",
                    "middle_name": "",
                    "nationality": "XXXXXX",
                    "nationality_iso": "XX",
                    "nationality_iso2": "XXX",
                    "issuer": "Bahrain",
                    "issuer_iso": "BH",
                    "issuer_iso2": "BHR",
                    "gender": "M",
                    "dob": "03",
                    "age": "26",
                    "expiry": "XXXX-XX-30",
                    "expiryDay": "30",
                    "expiryMonth": "XX",
                    "expiryYear": "XXXX",
                    "issued": "",
                    "issuedDay": "",
                    "issuedMonth": "",
                    "issuedYear": "",
                    "documentAdditionalNumber": "",
                    "document_number": "XXXXXXXXX",
                    "document_type": "I",
                    "document_type_full": "Identity Card",
                    "mrz": "IDBHRXXXXXXXXX5<<<<<<<<<<<<<<<^97XXXXXX0530XXXX<<<<<<<<<<4^XXXXXER<<XXXXD<HXXXXX<<<<<<<",
                    "document_face_match": {
                        "similarity": 99.98751831054688,
                        "confidence": 99.99876403808594
                    },
                    "passed": true,
                    "date_of_birth": "XX-03-XX",
                    "date_of_birth_day": "XX",
                    "date_of_birth_month": "03",
                    "date_of_birth_year": "XX"
                }
            ],
            "selfie_data": {
                "liveness_pass": true
            },
            "warnings": [],
            "notes": [],
            "aml": [],
            "verification_summary": {
                "face_verified": true,
                "selfie_liveness_verified": true,
                "document_verified": true,
                "verification_rules_passed": true,
                "document_liveness_verified": true,
                "image_quality": true
            },
            "document_data_confidence": [
                {
                    "reference": "XXXXXXXXX",
                    "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": "DECLINED",
            "errorCodes": [],
            "deviceDetails": {
                "useragent": "PostmanRuntime/7.36.1",
                "detectResult": {
                    "client": {
                        "type": "library",
                        "name": "Postman Desktop",
                        "version": "7.36.1"
                    },
                    "device": {
                        "id": "",
                        "type": "",
                        "brand": "",
                        "model": ""
                    }
                }
            },
            "createdAt": "2024-01-22T21:17:41.556Z",
            "updatedAt": "2024-01-22T21:18:09.137Z",
            "__v": 0,
            "images": [
                {
                    "documentName": "ID_Card",
                    "side": "cropped_signature",
                    "key": "https://prodstorage.faceki.com/XXXXXXXXXXXXXXXX"
                },
                {
                    "documentName": "ID_Card",
                    "side": "cropped_portrait",
                    "key": "https://prodstorage.faceki.com/XXXXXXXXXXXXXXXX"
                },
                {
                    "documentName": "ID_Card",
                    "side": "cropped_front",
                    "key": "https://prodstorage.faceki.com/XXXXXXXXXXXXXXXX"
                },
                {
                    "documentName": "ID_Card",
                    "side": "front",
                    "key": "https://prodstorage.faceki.com/XXXXXXXXXXXXXXXX"
                },
                {
                    "documentName": "ID_Card",
                    "side": "back",
                    "key": "https://prodstorage.faceki.com/XXXXXXXXXXXXXXXX"
                },
                {
                    "documentName": "ID_Card",
                    "side": "cropped_back",
                    "key": "https://prodstorage.faceki.com/XXXXXXXXXXXXXXXX"
                },
                {
                    "documentName": "Selfie",
                    "side": "Selfie",
                    "key": "https://prodstorage.faceki.com/XXXXXXXXXXXXXXXX"
                }
            ],
            "face_id": "XXXXXXXXXXX-4f27-4744-XXXXX-7XXXXXXXXXXX3",
            "updateBy": "XXXXXXXXXXXXXXXXX"
        }
    ]
}
```

{% endtab %}

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


# Fetch PDF Report

PDF Report for EKYC Result

{% hint style="info" %}
Method: GET

Authorization: Bearer Token

Query Parameter:

requestId  (\*Mandatory)
{% endhint %}

<figure><img src="/files/C8sigtiQLKkXpsG2lc8r" alt=""><figcaption></figcaption></figure>

<mark style="color:green;">`GET`</mark> `http://sdk.faceki.com/api/v3/kyc_verification/report?requestId=<requestId>`

#### Headers

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

#### Query Param

| Name                                        | Type   | Description                     |
| ------------------------------------------- | ------ | ------------------------------- |
| requestId<mark style="color:red;">\*</mark> | String | Request ID from the EKYC Record |


# Verification Data

When you perform a Know Your Customer (KYC) verification using the Faceki API, you receive a detailed verification response containing valuable information about the verification process, document authenticity, facial matching, and more. This documentation aims to help you understand the different fields present in the response and their significance.

### Document Verification Result Structure

#### `link`

A unique identifier or reference for the document.

#### `record_identifier`

A unique identifier is associated with the record by a customer while requesting through API or SDK

#### `requestId`

A unique identifier for the request associated with the document generated by Faceki (UUIDV4)

#### `document_data`

An array containing information about the document. Each element represents a document with the following details:

* **`reference`**: A unique identifier for the document.
* **`full_name`**: Full name of the individual.
* **`first_name`**: First name of the individual.
* **`local_name`**: Local name (In Local Language)
* **`last_name`**: Last name of the individual.
* **`middle_name`**: Middle name of the individual.
* **`nationality`**: Nationality of the individual.
* **`nationality_iso`**: ISO code for nationality. (corresponds to ISO2)
* **`nationality_iso2`**: Another ISO code for nationality. (corresponds to ISO3)
* **`issuer`**: Entity or country that issued the document.
* **`issuer_iso`**: ISO code for the issuer. (corresponds to ISO2)
* **`issuer_iso2`**: Another ISO code for the issuer. (corresponds to ISO3)
* **`gender`**: Gender of the individual.
* **`dob`**: Date of birth in a partial format.
* **`age`**: Age of the individual.
* **`expiry`**: Expiry date of the document.
* **`issued`**: Date when the document was issued.
* **`document_number`**: Document number.
* **`document_type`**: Type code for the document.
* **`document_type_full`**: Full name or description of the document.
* **`mrz`**: Machine Readable Zone information from the document.
* **`document_face_match`**: Information about the match between the document photo and facial image.
* **`passed`**: Boolean indicating if document verification passed.
* **`date_of_birth`**: Date of birth in formatted form.
* **`date_of_birth_day`**: Day component of the date of birth.
* **`date_of_birth_month`**: Month component of the date of birth.
* **`date_of_birth_year`**: Year component of the date of birth.
* **`sponsor_local`**: Local name or identifier of the sponsor (in the local language) associated with the individual’s document. This field is optional and only used in cases where a sponsor is involved.
* **`sponsor`:**  Name of the sponsor related to the individual. This could refer to a person or organization responsible for or linked to the document's issuance or the individual's verification process.
* **`nationality_local`**: The nationality of the individual in a local language or code, used in systems where the local representation of the nationality is needed alongside standard ISO codes.
* **`profession_local`**: The individual's profession in a local language or format, which may differ from standardized professions, used in local contexts.
* **`profession`**:  Name representing the individual’s profession, used for verification and record purposes.
* **`serial_number`**: A serial number linked to the document or verification process, typically used to track the document or verification instance.
* **`additionalExpiry`**: An additional expiry date for the document or related verification, used when there are multiple layers of expiry associated with different parts of the document (e.g., visa expiry versus passport expiry).

#### `selfie_data`

Information about selfie verification.

* **`liveness_pass`**: Boolean indicating if the selfie liveness verification passed.

#### `warnings`

Array of warnings associated with the document verification.

#### `notes`

Array of notes associated with the document verification.

#### `aml`

An array of Anti Money Laundering (AML) information is associated with the document verification.

* **`name`**: The full name of the individual as recorded.
* **`localName`**: The local or native name of the individual, if different from the full name.
* **`first_name`**: The individual's given (first) name.
* **`last_name`**: The individual's family (surname) or last name.
* **`middle_name`**: The individual's middle name, if applicable.
* **`type`**: The type of individual; in this case, it is a PEP (Politically Exposed Person). SANCTION, WATCHLIST, CUSTOM BLACK LIST
* **`positions`**: The political position or role held by the individual, along with the start date of the position.
* **`name_title`**: A title associated with the individual, such as Mr., Dr., or any honorific. In this
* **`listed_on`**: The date when the individual was listed as a Politically Exposed Person (PEP).
* **`nationality`**: The country of nationality of the individual.
* **`year_of_birth`**: The birth year of the individual, if available.
* **`place_of_birth`**: The place where the individual was born, if available.
* **`place_of_birth_city`**: The specific city where the individual was born, if available.
* **`place_of_birth_state`**: The specific state or region where the individual was born, if available.
* **`alias_name`**: Alternative names or aliases by which the individual is known.
* **`list_name`**: The name of the list that the individual is part of.
* **`reason`**: The reason for the individual being listed or classified, often indicating their role or position of influence
* **`additional`**: Additional information or notes regarding the individual, if any.
* **`entity`**: Indicates whether the record pertains to an individual or organization.&#x20;
* **`documents`**: Any documents or supporting files attached to the record.
  * **`doc_type`**: Turkish Identification Number
  * **`doc_number`**: `15673320164`
  * **`doc_country`**: Turkey

#### `verification_summary`

Summary of various verification checks.

* **`face_verified`**: Boolean indicating if face verification passed.
* **`selfie_liveness_verified`**: Boolean indicating if selfie liveness verification passed.
* **`document_verified`**: Boolean indicating if document verification passed.
* **`verification_rules_passed`**: Boolean indicating if general verification rules passed.
* **`document_liveness_verified`**: Boolean indicating if document liveness verification passed.
* **`image_quality`**: Boolean indicating if image quality is satisfactory.

#### `document_data_confidence`

An array provides confidence levels for different fields in the document.

* Each field in the document has a confidence score ranging from 0 to 1.

#### `decision`

The decision is based on the verification process (e.g., "DECLINED").

#### `errorCodes`

The array of error codes associated with the verification process.

#### `deviceDetails`

Information about the device used for the verification.

* **`useragent`**: User-agent information.
* **`detectResult`**: Details about the client and device.

#### `createdAt`

A timestamp indicating when the document verification request was created.

#### `updatedAt`

A timestamp indicating when the document verification request was last updated.

#### `images`

The array of objects contains the following information:

**1. Cropped Signature Image**

* **`documentName`**: "Type of document (ID\_Card, Passport, Driving License)"
* **`side`**: "cropped\_signature"
* **`key`**: \[Image URL]

**2. Cropped Portrait Image**

* **`documentName`**: "Type of document (ID\_Card, Passport, Driving License)"
* **`side`**: "cropped\_portrait"
* **`key`**: \[Image URL]

**3. Cropped Front Image**

* **`documentName`**: "Type of document (ID\_Card, Passport, Driving License)"
* **`side`**: "cropped\_front"
* **`key`**: \[Image URL]

**4. Front Image**

* **`documentName`**:"Type of document (ID\_Card, Passport, Driving License)"
* **`side`**: "front"
* **`key`**: \[Image URL]

**5. Back Image**

* **`documentName`**: "Type of document (ID\_Card, Passport, Driving License)"
* **`side`**: "back"
* **`key`**: \[Image URL]

**6. Cropped Back Image**

* **`documentName`**: "Type of document (ID\_Card, Passport, Driving License)"
* **`side`**: "cropped\_back"
* **`key`**: \[Image URL]

#### Selfie Image:

**7. Selfie Image**

* **`documentName`**: "Selfie"
* **`side`**: "Selfie"
* **`key`**: \[Image URL]

#### `face_id`

Unique identifier for the face image.

#### `updateBy`

Information about who updated the document verification record.

### Need Support?&#x20;

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


# EKYC Webhook Structure

When the EKYC (Electronic Know Your Customer) process is completed, a webhook will be triggered with the results. The EKYC Webhook Response contains critical information about the status of the KYC request, as well as the user details involved.

####

```json
{
    "requestId": "973f1bb2-c4a6-424c-ae61-d220202b0611",  
    "fullName": "JOHN",                 
    "status": "ACCEPTED",                                  
    "kycData": {}
}

```

#### Response Fields

* **requestId**: A unique identifier for the specific KYC request. This ID can be used for tracking, logging, and troubleshooting.
* **fullName**: The full name of the person undergoing the KYC verification.
* **status**: Indicates the result of the KYC verification. Common values are:
  * `ACCEPTED`: The KYC process was successful.
  * `DECLINED`: The KYC process failed.
  * `REVIEW`: The KYC process need manual review.
* **kycData**: This section will contain detailed information about the verified individual, including identity information, documents, and other relevant KYC data. For the full structure of `kycData`, refer to the detailed KYC data structure [Link](/data-fields/verification-data).

## EKYC Update from Portal Webhook Response

The **EKYC Update from Portal** webhook is triggered when there is an update to the KYC status on the portal. This response contains updated information, including the new status of the KYC verification and details about the modification.

```json
{
    "requestId": "da870610-2311-42c7-9d8b-85accb14b399",     // Unique identifier for the KYC request
    "fullName": "JOHN",              // Full name of the individual
    "status": "DECLINED",                                     // Updated status of the KYC verification (DECLINED/APPROVED)
    "modifiedByEmail": "example@example.com"             // Email address of the user who made the update
}

```

#### Response Fields

* **requestId**: A unique identifier for the KYC request. This ID is used to track and correlate the update.
* **fullName**: The full name of the individual whose KYC verification status has been updated.
* **status**: The updated status of the KYC verification. The status could be:
  * `APPROVED`: The KYC process has been approved.
  * `DECLINED`: The KYC process has been declined.
  * `REVIEW`: The KYC status changed to review.
* **modifiedByEmail**: The email address of the user who made the update or modification to the KYC status. This helps identify who is responsible for the status change.


# Error Codes

### Information about the Error Code in the Faceki System

#### `UNAUTHORIZED/INVALID URL` (Code: 1)

* **Description**: The request made is having invalid URL or unauthorized

#### `BAD_REQUEST` (Code: 400)

* **Description**: The request sent to the API is malformed or incorrect.

#### `INTERNAL_SYSTEM_ERROR` (Code: 500)

* **Description**: An internal server error occurred during the processing of the request. You can contact us at <support@faceki.com> with the complete log of the request made.

#### `WORKFLOW_RULES_MISSING` (Code: 5001)

* **Description**: Workflow rules necessary for processing are missing.

#### `INVALID_MISSING_REQUEST_FIELDS` (Code: 5002)

* **Description**: Required fields in the request are either invalid or missing as per rules defined in the workflow

#### `NOT_ENOUGH_WALLET_CREDIT` (Code: 5003)

* **Description**: There is insufficient credit in the wallet to perform the document verification.

#### `SELFIE_LIVENESS_FAILED` (Code: 5004)

* **Description**: Selfie liveness verification failed.

#### `DOCUMENT_FACE_MATCH_FAILED` (Code: 5005)

* **Description**: The face in the document does not match the facial image provided.

#### `REQUIRED_DOCUMENT_MISSING` (Code: 5006)

* **Description**: A required document for verification is missing as per the rules defined in the workflow

#### `MISMATCH_AS_PER_RULES` (Code: 5007)

* **Description**: There is a mismatch in the information as per verification rules defined in the workflow

#### `KYC_FAILED` (Code: 5008)

* **Description**: Know Your Customer (KYC) verification failed. You can check the report in the Portal for more information

#### `LINK_LIMIT_REACH` (Code: 5009)

* **Description**: The maximum limit for document verification links has been reached.

#### `EXPIRED_DOCUMENT` (Code: 5010)

* **Description**: The document has expired.

#### `EXPIRY_NOT_FOUND` (Code: 5011)

* **Description**: The expiry date for the document was not found.

#### `DOCUMENT_LIVENESS_FAILED` (Code: 5012)

* **Description**: Document liveness verification has failed.

#### `DOCUMENT_DATA_MISMATCH` (Code: 5013)

* **Description**: There is a mismatch in the document data.

#### `FACE_CROPPED` (Code: 8004)

* **Description**: The facial image provided is cropped. Please check the following [Image Guidelines](/quick-guides/image-guidelines)

#### `FACE_TOO_CLOSED` (Code: 8005)

* **Description**: The face in the image is too close for accurate verification. Please check the following [Image Guidelines](/quick-guides/image-guidelines)

#### `FACE_NOT_FOUND` (Code: 8006)

* **Description**: The API couldn't find a face in the provided image. Please check the following [Image Guidelines](/quick-guides/image-guidelines)

#### `FACE_CLOSED_TO_BORDER` (Code: 8007)

* **Description**: The detected face is too close to the image border. Please check the following [Image Guidelines](/quick-guides/image-guidelines)

#### `FACE_TOO_SMALL` (Code: 8008)

* **Description**: The size of the face in the image is too small for verification. Please check the following [Image Guidelines](/quick-guides/image-guidelines)

#### `POOR_LIGHT_OR_COVERED_FACE` (Code: 8009)

* **Description**: Verification failed due to poor lighting conditions in the images. Please check the following [Image Guidelines](/quick-guides/image-guidelines)

#### `AGE_MISMATCH` (Code: 5014)

* **Description**: There is a mismatch in the age information as per the verification rules.<br>

`USER_ALREADY_VERIFIED` (Code: 8024)

* **Description**: The user has already been successfully verified.

### Need Support?&#x20;

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

###


# React Native SDK / Plugin

SDK For React Native

### Installation (RN >= 0.74)

```
npm i @faceki/blaze-react-native
npm i react-native-vision-camera
npm i lottie-react-native
npm i @bam.tech/react-native-image-resizer@3.0.7
```

This SDK is tested with @bam.tech/react-native-image-resizer version 3.0.7, you can use latest if doesn't work. Kindly use version 3.0.7

### Permissions

**Android:**

Add the following uses-permission to your AndroidManifest.xml (usually found at: android/app/src/main/)

```
<uses-permission android:name="android.permission.CAMERA" />
```

**IOS**

Add the following usage descriptions to your Info.plist (usually found at: ios/PROJECT\_NAME/)

```
<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) needs access to your Camera.</string>
```

### Add Support for Gif in Android

Add to your dependencies in android/app/build.gradle

```
dependencies {
 // For animated GIF support
 implementation ("com.facebook.fresco:animated-gif:2.5.0")
}
```

More information: <https://reactnative.dev/docs/image?syntax=functional#gif-and-webp-support-on-android>

### Troubleshoot for react-native-vector-icons

**Android**

Add this in your android/app/build.gradle If not already added.

```
apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
```

**IOS**

Add this to info.plist if you have issues in showing icons from react native vector icons

```
<key>UIAppFonts</key>
    <array>
		<string>AntDesign.ttf</string>
		<string>Entypo.ttf</string>
		<string>EvilIcons.ttf</string>
		<string>Feather.ttf</string>
		<string>FontAwesome.ttf</string>
		<string>FontAwesome5_Brands.ttf</string>
		<string>FontAwesome5_Regular.ttf</string>
		<string>FontAwesome5_Solid.ttf</string>
		<string>Fontisto.ttf</string>
		<string>Foundation.ttf</string>
		<string>Ionicons.ttf</string>
		<string>MaterialCommunityIcons.ttf</string>
		<string>MaterialIcons.ttf</string>
		<string>Octicons.ttf</string>
		<string>SimpleLineIcons.ttf</string>
		<string>Zocial.ttf</string>
	</array>
```

Add this in your podfile

```
target 'targetPackage' do
config = use_native_modules!

  pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons'
end
```

For More Information & Detailed Guide About Icons: <https://www.npmjs.com/package/react-native-vector-icons>

RUN

```
cd ios && pod install && cd ..
```

### USAGE

You would need to generate EKYC Link through the API here:

<https://docs.faceki.com/api-integration/verification-apis/generate-kyc-link>

In the response use the key "data" to initiate the SDK

```
import FacekiApp from '@faceki/blaze-react-native';

<>
  <FacekiApp
    verification_url={"XXXX-XXXX-xxxX-XxXXX"}
    onError={onError}
    onComplete={onComplete}
    record_identifier="unique-id-from-your-side"
  />
</>;
```

Advance Usage

```
import FacekiApp from '@faceki/blaze-react-native';
import { Branding } from '@faceki/blaze-react-native/src/service/types/interfaces';

 const CustomBranding:Branding ={
    colors: {
      primary: '#F8B427',
      secondary: '#343333',
      buttonColor: 'rgba(253, 181, 40, 0.10)',
      success: '#59C547',
      danger: '#FF3B30',
      warning: '#FF9500',
      info: '#5AC8FA',
      light: '#F5F5F5',
      dark: '#1C1C1E',
      background: '#f5f5f5',
      backgroundSecondary: '#eeeeee',
      backgroundCaptureBtn: '#F6F6F7',
      textDefault: '#444343',
      textSecondary: '#3E3E3E',
      fontRegular:"Inter",
      fontMedium:"Inter-Medium",
      fontBold:"Inter-Bold"
    },
    images:{
      card_guidance:"", //optional
      selfie_guidance:"" //optional
    }
  }
  
<>
  <FacekiApp
  verification_url={"XXXX-XXXX-xxxX-XxXXX"}
  record_identifier="unique-id-from-your-side"
  onError={(error) => {
    console.log("ERROR", error);
  }}
  onComplete={(data) => {
    console.log("EKYCdata", data);
  }}
  onLivenessError={(imageBase64, response) => {
    console.log(imageBase64, response);
  }}
  resultContent={{
    success: {
      heading: "",
      subHeading: "",
    },
    fail: {
      heading: "",
      subHeading: "",
    },
  }}
  consenttermofuseLink="https://faceki.com"
  logoURL="http://xyz.com/zyx.png"
  skipFirstScreen={true} // true | false (If you want to disable first getting started screen)
  skipGuidanceScreens={true} // true | false (if you want to hide the guidance screens)
  skipResultScreen={true} // true | false (if you want to skip the result screen and manage your logic by onError or onComplete method)
  branding={CustomBranding}
/>;

</>;
```

### NOTE:

To request camera permissions from users on iOS in your app, you can utilize the 'react-native-permissions' package. However, for Android devices, the camera permission is by default handled by the package. [react-native-permissions](https://www.npmjs.com/package/react-native-permissions)

### Troubleshoot

Vector icons are causing an issue in the release build in version <= 9.2.0 in android. There is an ongoing discussion about it. Simple fix until the new version is released.

Go to node\_modules/react-native-vector-icons/fonts.gradle

Add this 👇

```
android.applicationVariants.all { def variant ->
    def targetName = variant.name.capitalize()
    def lintVitalAnalyzeTask = tasks.findByName("lintVitalAnalyze${targetName}")
    if (lintVitalAnalyzeTask) {
        lintVitalAnalyzeTask.dependsOn(fontCopyTask)
    }
    def generateAssetsTask = tasks.findByName("generate${targetName}Assets")
    generateAssetsTask.dependsOn(fontCopyTask)
}
```

You can read on 👉 [GitHub Discussion](https://github.com/oblador/react-native-vector-icons/issues/1508)

Sometimes it's better to reinstall all the node\_modules and pods again

```
rm -rf node_modules && rm -rf yarn.lock && watchman watch-del-all && cd ios && rm -rf Pods && rm -rf Podfile.lock && pod deintegrate && pod cache clean --all && cd ..
npm i
cd ios && pod install
```

### Change Log

* 2024-05-03 -- 1.0.7
  * Added Callback for LivenessFailed
* 2024-05-03 -- 1.0.6
  * Update for Vision Camera V4 (4.5.3)
  * Support for the React Native 0.74.X
* 2024-05-03 -- 1.0.5
  * Update For Removing Client ID and Secret replaced with Generated EKYC Link
* 2024-02-26 -- 1.0.4
  * Update For Issue 413, Resize/Compress Image Added
* 2024-02-25 -- 1.0.3
  * Update Guidance Gifs
* 2024-02-25 -- 1.0.2
  * Update Vector Icon to Latest
* 2024-02-14 -- 1.0.1
  * Upgraded React Vision Camera V2 to V3
* 2024-1-24 -- 1.0.0
  * Initial Release for FACEKI BLAZE 3.0

<br>

### Need Support?&#x20;

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


# iOS SDK

iOS SDK For FACEKI

## FACEKI-BLAZE-IOS SDK

### Overview

The FACEKI-BLAZE-IOS SDK is an iOS framework developed by Faceki, providing advanced eKYC (Electronic Know Your Customer) and Facial Recognition capabilities for iOS applications. This SDK enables seamless identity verification using document and selfie verification.

### Installation

CocoaPods

To integrate FACEKI-BLAZE-IOS SDK into your Xcode project using CocoaPods, add the following lines to your `Podfile`:

Latest Version: 3.2

````
```ruby
target 'YourProjectName' do
  pod 'FACEKI-BLAZE-IOS', '~> 3.0.0'
end
````

Then, run the following command:

```
$ pod install
```

### Manual Installation

You can also manually integrate the FACEKI-BLAZE-IOS SDK into your project. Download the SDK from [GitHub releases](https://github.com/faceki/blaze-ios-sdk/releases) and follow the instructions provided in the documentation.

**Permission**

Add the following usage descriptions to your Info.plist

```
<key>NSCameraUsageDescription</key>
<string>For taking photos for kyc</string>

```

#### Initialization

You would need to generate EKYC Link through the API here:

<https://docs.faceki.com/api-integration/verification-apis/generate-kyc-link>

In the response use the key "data" to initiate the SDK

```swift
import FACEKI_BLAZE_IOS

class YourViewController: UIViewController {

    @IBAction func captureAction(_ sender: Any) {
        let smManagerVC = Logger.initiateSMSDK(
            verificationLink: "Verification UUID Generate By API",
            workflowId: "Workflow ID",
            setOnComplete: onComplete,
            redirectBack: onRedirectBack,
            selfieImageUrl: nil,
            cardGuideUrl: nil
        )
        navigationController?.pushViewController(smManagerVC, animated: true)
    }

    // ... (rest of your ViewController code)

}
```

### Usage

#### Callbacks

Implement the following callbacks to handle the SDK responses:

Callback that will recieve the response back from the API for data level information [https://docs.faceki.com](https://docs.faceki.com/)

```
func onComplete(data:[AnyHashable:Any]){
    print("API Response")
    print(type(of: data))

    if let dataObject = data["result"] as? [AnyHashable: Any]{
        print(dataObject["requestId"]!)
        print(dataObject["decision"]!)

    }
    
}

// Redirect After Result Screen

func onRedirectBack() {
    DispatchQueue.main.async {
        // Perform UI work here
        self.navigationController?.popToRootViewController(animated: true)
    }
}
```

### Requirements

* Swift 5.0
* iOS 13.0 and later

### Need Support?&#x20;

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


# Android SDK

Android SDK For FACEKI

## Getting Started:

The minimum requirements for the SDK are:

* Android 5.0 (API level 21) or higher
* Internet connection

### Permissions

Required permissions are linked automatically by the SDK.

### Integration by sdk

Use the SDK in your application by including the Maven repositories with the following `build.gradle` configuration in Android Studio:

```
repositories {
	...
	maven { url 'https://jitpack.io' }
}
```

### Integration by library

Use the Library in your application by implemention lib with the following `build.gradle` project module in Android Studio:

```
	implementation 'com.github.faceki:blaze-android-sdk:Tag'

```

or

```
    implementation("com.github.faceki:blaze-android-sdk:Tag")

```

and including the Maven repositories with the following `build.gradle` configuration in Android Studio:

```
repositories {
	...
	maven { url 'https://jitpack.io' }
}
```

### Example

```
import com.faceki.android.FaceKi
```

### Kotlin

```
     FaceKi.startKycVerification(
                context = this@MainActivity,
                verificationLink = TEST_VERIFICATION_LINK,
                recordIdentifier = TEST_RECORD_IDENTIFIER,
                kycResponseHandler = kycResponseHandler
            )

//custom logo
FaceKi.setCustomIcons(
                iconMap = hashMapOf(
                    FaceKi.IconElement.Logo to FaceKi.IconValue.Resource(R.drawable.logo)
                )
            )

//custom colors
FaceKi.setCustomColors(
                colorMap = hashMapOf(
                    FaceKi.ColorElement.BackgroundColor to FaceKi.ColorValue.StringColor("#FFFFFF")
                )
            )
```

**To Get the response back from the SDK.**

```
    private val kycResponseHandler: KycResponseHandler = object : KycResponseHandler {
        override fun handleKycResponse(
            json: String?,
            result: VerificationResult
        ) {
            when (result) {
                is VerificationResult.ResultOk -> {
                    Toast.makeText(this@MainActivity, "ResultOk", Toast.LENGTH_SHORT).show()
                }

                is VerificationResult.ResultCanceled -> {
                    Toast.makeText(this@MainActivity, "ResultCanceled", Toast.LENGTH_SHORT).show()
                }
            }

            Toast.makeText(this@MainActivity, "kycResponseHandler $json", Toast.LENGTH_SHORT).show()
        }
    }
```

### Java

```
import java.util.HashMap;

// Inside your MainActivity class

// Call startKycVerification
FaceKi.startKycVerification(
        this,
TEST_VERIFICATION_LINK,
        TEST_RECORD_IDENTIFIER,
        kycResponseHandler
);

// Set custom logo
HashMap<FaceKi.IconElement, FaceKi.IconValue> iconMap = new HashMap<>();
iconMap.put(FaceKi.IconElement.Logo, new FaceKi.IconValue.Resource(R.drawable.logo));
FaceKi.setCustomIcons(iconMap);

// Set custom colors
HashMap<FaceKi.ColorElement, FaceKi.ColorValue> colorMap = new HashMap<>();
colorMap.put(FaceKi.ColorElement.BackgroundColor, new FaceKi.ColorValue.StringColor("#FFFFFF"));
FaceKi.setCustomColors(colorMap);

// Define KycResponseHandler
private KycResponseHandler kycResponseHandler = new KycResponseHandler() {
    @Override
    public void handleKycResponse(String json, VerificationResult result) {
        if (result instanceof VerificationResult.ResultOk) {
            Toast.makeText(MainActivity.this, "ResultOk", Toast.LENGTH_SHORT).show();
        } else if (result instanceof VerificationResult.ResultCanceled) {
            Toast.makeText(MainActivity.this, "ResultCanceled", Toast.LENGTH_SHORT).show();
        }

        Toast.makeText(MainActivity.this, "kycResponseHandler " + json, Toast.LENGTH_SHORT).show();
    }
};
```

## Custom colors

Use `setCustomColors` to customize the color scheme.

### Kotlin

```
val colorMap = hashMapOf(
    FaceKi.ColorElement.ButtonBackgroundColor to FaceKi.ColorValue.IntColor(myColorInt),
    // Add other elements as needed
)
FaceKi.setCustomColors(colorMap)
```

### Java

```
HashMap<FaceKi.ColorElement, FaceKi.ColorValue> colorMap = new HashMap<>();
        colorMap.put(FaceKi.ColorElement.BackgroundColor, new FaceKi.ColorValue.StringColor("#FFFFFF"));
        FaceKi.setCustomColors(colorMap);
```

## Custom logo

Use `setCustomIcons` to customize the icons.

### Kotlin

```
val iconMap = hashMapOf(
    FaceKi.IconElement.Logo to FaceKi.IconValue.Resource(myDrawableResId),
    // Add other elements as needed
)
FaceKi.setCustomIcons(iconMap)
```

### Java

```
HashMap<FaceKi.IconElement, FaceKi.IconValue> iconMap = new HashMap<>();
        iconMap.put(FaceKi.IconElement.Logo, new FaceKi.IconValue.Resource(R.drawable.ic_launcher_background));
        FaceKi.setCustomIcons(iconMap);
```

#### Response Handling

* The response from KYC verification is a plain JSON object.
* You can convert this response into a JSON object using serialization libraries like Gson or Moshi.

### Methods

* **startKycVerification**: Initiates the KYC verification process.
* **setCustomColors**: Customizes the colors of various UI elements.
* **setCustomIcons**: Customizes the icons used in the UI.

### Enums and Sealed Classes

#### ColorElement

* Enum defining different UI elements that can have their colors customized.

#### ColorValue

* Sealed class representing a color value.
* Types:
  * `IntColor`: Represents color as an integer.
  * `StringColor`: Represents color as a string (e.g., "#FFFFFF").

#### IconElement

* Enum defining different UI elements that can have their icons customized.

#### IconValue

* Sealed class representing an icon value.
* Types:
  * `Resource`: Represents an icon as a resource ID.
  * `Url`: Represents an icon as a URL.


# Flutter SDK

Blaze Flutter SDK

The FACEKI eKYC SDK is designed to facilitate electronic Know Your Customer (eKYC) processes within applications using Flutter. This SDK simplifies the integration of document and selfie verification processes required for user identity verification.

Pub Dev: <https://pub.dev/packages/faceki_blaze_sdk>

Changelogs: <https://pub.dev/packages/faceki_blaze_sdk/changelog>

### Features&#x20;

* **Document and Selfie Verification:** Streamline the verification processes with easy integrations.
* **Guidance GIFs:** Provides visual guidance to help users capture documents and selfies correctly.
* **Customizable Thresholds and Callbacks:** Offers customization for verification thresholds and processes through callbacks.

### Getting Started&#x20;

#### Installation&#x20;

To add the FACEKI eKYC SDK to your Flutter project, include it in your `pubspec.yaml`: Always refer to GitHub for the latest version number.

```yaml
dependencies:
  faceki_blaze_sdk: <latest>
```

Run `flutter pub get` to install the new dependency.

### iOS&#x20;

#### Add these on ios/Runner/Info.plist:&#x20;

```xml
<key>NSCameraUsageDescription</key>
<string>Your own description</string>
```

#### Add these on ios/Podfile:&#x20;

```ruby
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
        '$(inherited)',
        'PERMISSION_CAMERA=1',
        'PERMISSION_PHOTOS=1',
      ]
    end
    flutter_additional_ios_build_settings(target)
  end
end
```

### Android&#x20;

#### Change the minimum SDK version to 21 (or higher) in android/app/build.gradle:&#x20;

```gradle
minSdkVersion 21
```

For more: <https://pub.dev/packages/camerawesome>

#### Basic Usage&#x20;

Import the package and initialize the SDK:

```dart
import 'package:faceki_blaze_sdk/faceki_blaze_sdk.dart';

Faceki_Blaze_SDK ekyc = Faceki_Blaze_SDK(
    verification_link: "2607ba32-c906-4e01-sdsd-abec9f56324b",
    record_identifier: "",
    turnGuidanceOff: false,
    language: "en",
    bgColor: 0xFF3D85C6,
    termsAndConditionUrl: "https://www.yourcompany.com/terms",
    onCompleteSelfie: (result) {
      print("Selfie Verification Result: $result");
    },
    screenTexts: {
      "getting_started": {
        "title": "توثيق الحساب",
        "secondary": "سنطلب منك التقاط صورة لوثيقتك وصورة سيلفي.",
        "third": "لأفضل نتيجة للصورة",
        "fourth": "ابحث عن منطقة ذات إضاءة جيدة.",
        "button": "ابدء"
      },
      "document_selection": {
        "title": "اختيار نوع الوثيقة",
        "secondary": "يرجى اختيار نوع الوثيقة",
        "button": "التالي"
      },
      "verification_process": {
        "title": "خطوات عملية التحقق",
        "secondary": "للتحقق، ستحتاج للقيام بما يلي",
        "third": "لقد قرأت الخطوات المذكورة أعلاه وأوافق على ",
        "fourth": "الشروط والأحكام",
        "button": "التالي"
      },
      "card_guidance": {
        "title": "الارشادات",
        "second": "يرجى اتباع إرشادات التقاط الوثائق للحصول على افضل النتائج",
        "button": "التالي"
      },
      "selfie_guidance": {
        "title": "الارشادات للسيلفي",
        "second": "يرجى اتباع إرشادات التقاط السيلفي",
        "button": "التالي"
      },
      "processing_screen": {
        "title": "جارٍ التحقق من هويتك",
        "secondary": "يتم معالجة مستنداتك",
        "third": "سيستغرق الأمر بضع ثوانٍ فقط",
        "button": "التالي"
      }
    }
);

ekyc.launchEKYCFlow(context, (verificationResponse) {
    Navigator.of(context).popUntil((route) => route.isFirst);
});

```

### Configuration Parameters&#x20;

This section details the various parameters that can be configured when initializing the FACEKI eKYC SDK.

#### `verification_link`&#x20;

* **Type:** `String`
* **Description:** Link generated from the API, use the value of the key named "data".

#### `onCompleteSelfie`&#x20;

* **Type:** `DynamicCallback`
* **Description:** A callback function that is triggered after the selfie verification process is completed. This function is used to handle the results of the verification.

#### `termsAndConditionUrl`&#x20;

* **Type:** `String`
* **Description:** A URL linking to the terms and conditions that the user must agree to before using the SDK for verification purposes.

#### `turnGuidanceOff`&#x20;

* **Type:** `Bool` (Optional)
* **Default:** `false`
* **Description:** A boolean to turn off the guidance GIFs if set to true. Useful in cases where custom UI/UX implementations are preferred.

#### `record_identifier`&#x20;

* **Type:** `String` (Optional)
* **Default:** `""`
* **Description:** An optional field used to provide an additional identifier which can be used to record or log the verification process for audit purposes.

#### `bgColor`&#x20;

* **Type:** `int`
* **Description:** Background color for the verification interface, defined as a hex integer.

#### `language`&#x20;

* **Type:** `String`
* **Default:** `"en"`
* **Description:** Language code for displaying text in the verification interface.

#### `screenTexts`&#x20;

* **Type:** `Map<String, Map<String, String>>`
* **Description:** A map containing localized text for different screens in the verification process. Each key corresponds to a specific screen, containing its title, secondary text, and button label.

**Sample: Arabic**

```json
{
  "getting_started": {
    "title": "توثيق الحساب",
    "secondary": "سنطلب منك التقاط صورة لوثيقتك وصورة سيلفي.",
    "third": "لأفضل نتيجة للصورة",
    "fourth": "ابحث عن منطقة ذات إضاءة جيدة.",
    "button": "ابدء"
  },
  "document_selection": {
    "title": "اختيار نوع الوثيقة",
    "secondary": "يرجى اختيار نوع الوثيقة",
    "button": "التالي"
  },
  "verification_process": {
    "title": "خطوات عملية التحقق",
    "secondary": "للتحقق، ستحتاج للقيام بما يلي",
    "third": "لقد قرأت الخطوات المذكورة أعلاه وأوافق على ",
    "fourth": "الشروط والأحكام",
    "button": "التالي"
  },
  "card_guidance": {
    "title": "الارشادات",
    "second": " يرجى اتباع إرشادات التقاط الوثائق للحصول على افضل النتائج",
    "button": "التالي"
  },
  "selfie_guidance": {
    "title": "الارشادات للسيلفي",
    "second": "يرجى اتباع إرشادات التقاط السيلفي",
    "button": "التالي"
  },
  "processing_screen": {
    "title": "جارٍ التحقق من هويتك",
    "secondary": "يتم معالجة مستنداتك",
    "third": "سيستغرق الأمر بضع ثوانٍ فقط",
    "button": "التالي"
  }
}

```

**Sample: English**

```json
{
    "getting_started": {
        "title": "Account Verification",
        "secondary": "We will ask you to take a picture of your document and a selfie.",
        "third": "For the best photo results",
        "fourth": "Find a well-lit area.",
        "button": "Start"
    },
    "document_selection": {
        "title": "Select Document Type",
        "secondary": "Please select the type of document",
        "button": "Next"
    },
    "verification_process": {
        "title": "Verification Process Steps",
        "secondary": "To verify, you will need to do the following",
        "third": "I have read the above steps and agree to",
        "fourth": "the terms and conditions",
        "button": "Next"
    },
    "card_guidance": {
        "title": "Guidelines",
        "second": "Please follow the guidelines for capturing documents to get the best results",
        "button": "Next"
    },
    "selfie_guidance": {
        "title": "Selfie Guidelines",
        "second": "Please follow the guidelines for taking a selfie",
        "button": "Next"
    },
    "processing_screen": {
        "title": "Verifying Your Identity",
        "secondary": "Your documents are being processed",
        "third": "It will only take a few seconds",
        "button": "Next"
    }
}

```

<br>


# React

React UI Package for KYC

### Installation

You can install the `@faceki/blaze-kyc-react-sdk` package using npm or yarn:

```
npm install @faceki/blaze-kyc-react-sdk
# or
yarn add @faceki/blaze-kyc-react-sdk
```

### Usage

To use the `<FacekiSDK>` component in your React application, follow these steps:

1. Import the component at the top of your component file:

```
import React from "react";
import FacekiSDK from "@faceki/blaze-kyc-react-sdk";
```

2. Configure the SDK by providing the necessary props:

**Read configurable Props before implementation of SDK**

```
const App = () => {
  const sdkConfig = {
    link="841ae640-ce9c-XXXX-XXXX-c6f4f2e68bd5", 
    theme: {
      mainColor: "#FF5733",
      secondaryColor: "#2ECC71",
      backgroundColor: "#F4F4F4",
      cardBackgroundColor: "#FFFFFF",
      headingTextColor: "#333333",
      secondaryTextColor: "#777777",
      secondaryBorderColor: "#DDDDDD",
      iconFillColor: "#555555",
      iconBorderColor: "#888888",
      iconTextColor: "#FFFFFF",
      logo: "https://example.com/logo.png",
      disableGuidance: false,
      failedText: "Operation failed. Please try again.",
      successText: "Operation successful!",
      buttonbg: "#F8B427",
      textBg: "#EFEFEF",
      verificationProcessingText: "Processing verification...",
      externalTermsUrl:"https://faceki.com"
    },
    onSuccess: (data) => {
      console.log("SDK operation successful:", data);
    },
    onFail: (data) => {
      console.error("SDK operation failed:", data);
    },
  };

  return <FacekiSDK {...sdkConfig} />;
};

export default App;
```

### NextJS

nextJSImages should be True for NextJS Applications

```
const App = () => {
  const sdkConfig = {
    link="your-generated-link", 
    theme: {
      nextJSImages: true  
    },
    onSuccess: (data) => {
      console.log("SDK operation successful:", data);
    },
    onFail: (data) => {
      console.error("SDK operation failed:", data);
    },
  };

  return <FacekiSDK {...sdkConfig} />;
};

export default App;

```

### Configurable Props

The `<FacekiSDK>` component accepts the following configurable props:

* `link` (required):  Generated Link ID from <https://docs.faceki.com/api-integration/verification-apis/generate-kyc-link>

**USE THE KEY   "data"  to start the SDK, not the URL key**

```
{
    "responseCode": 0,
    "data": "841ae640-ce9c-XXXX-XXXX-c6f4f2e68bd5",  // This Value will be used here
    "url": "Verification URL"
}
```

* `theme` (optional): An object to customize the visual appearance of the SDK. It includes properties like `mainColor`, `secondaryColor`, etc.
* `onSuccess` (optional): A callback function to be called when the SDK operation is successful. It receives data as a parameter.
* `onFail` (optional): A callback function to be called when the SDK operation fails. It receives data as a parameter.

#### Theme Configuration

The `theme` object can be customized with the following properties:

* `mainColor`: Main color used in the theme.
* `secondaryColor`: Secondary color for the theme.
* `backgroundColor`: Background color of the SDK component.
* `cardBackgroundColor`: Background color of cards within the SDK.
* `headingTextColor`: Color of text used in headings.
* `secondaryTextColor`: Color of secondary text.
* `secondaryBorderColor`: Color of secondary borders.
* `iconFillColor`: Fill color for icons.
* `iconBorderColor`: Border color for icons.
* `iconTextColor`: Color of text within icons.
* `logo`: URL for a custom logo image.
* `disableGuidance`: A boolean to disable guidance (if applicable).
* `failedText`: Text to display on failure.
* `successText`: Text to display on success.
* `buttonbg`: Background color for buttons.
* `textBg`: Background color for text elements.
* `verificationProcessingText`: Text to display during verification processing.
* `externalTermsUrl`: External Terms and Conditional URL. If you need users to agree to your terms and conditions before they continue verification
* `nextJSImages`: if you are using SDK on the NEXTJS App, make sure to pass it as True, if you are facing an issue with images.

### Example

Here's an example of how you can use the `<FacekiSDK>` component with minimal configuration:

```
<FacekiSDK link="your-generated-link" />
```

For advanced customization, you can provide additional theme properties and callback functions as needed.

Feel free to explore and customize your `<FacekiSDK>` integration! 👩‍💻🚀

### Change Log

* 2024-02-28 -- 1.0.4
  * Added Support For NextJS
* 2024-02-28 -- 1.0.3
  * Read Me Updates
* 2024-02-28 -- 1.0.2
  * Added External Terms and Conditions URL.
  * Added Quality Check
  * Added Link Verification Replaced Client ID and Secret For Better Security

### Need Support?&#x20;

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


# Support

Got an issue or a suggestion? you can reach us in three easy ways.

### WhatsApp Support:

**`You can contact us through our Official WhatsApp Support`** [**`Click Here`**](https://wa.me/+13026131330)

**`If you can't access the link use the number: +13026131330`**

### Email Support:

`You can always contact our support department for any inquiries or questions that you may have. You can email us at`&#x20;

**`support@faceki.com`**

### Contact Sales Department:

`You can always contact our sales department for any inquiries or questions that you may have. You can email us at`&#x20;

**`sales@faceki.com`**


# FAQ's

## Compliance and Data Security

<details>

<summary>Are all data encrypted during transfer to/from FACEKI?</summary>

All SDK related traffic is encrypted and sent over HTTPS using TLS 1.2.

</details>

<details>

<summary>What happens to my ID data? Does FACEKI share or Sell user's data?</summary>

Complying with the EU and UK GDPR, FACEKI does not sell data to any third parties. The processed data is stored encrypted, in secure data servers under strict security measures to provide maximum data protection for our clients and in compliance with security standards.

</details>

<details>

<summary>Does FACEKI comply with GDPR?</summary>

Yes, FACEKI comply with all the GDPR Standards

</details>

<details>

<summary>Does FACEKI store any data?</summary>

You can define the while creating the workflow that you want to store the data. for further information click [here](/quick-guides/workflow-setup)

</details>

<details>

<summary>What kind of checks do you perform to validate the authenticity of the document?</summary>

FACEKI uses multiple authentication modules to identify fake documents. Our checks include Data visibility, image quality, feature referencing, edits and text checks, and country-specific security checks.

</details>

## Integration

<details>

<summary>What type of integration does FACEKI offer?</summary>

You can check the integration part [here](/integrations)

</details>

<details>

<summary>Do I get any tech support for installation?</summary>

Our technical team can guide you through the integration and implementation process, you can contact us on [Support@faceki.com](mailto:support@faceki.com)

</details>

## Support

<details>

<summary>Can I request additional documents for the countries that are not included in the supported countries?</summary>

Yes, if documents are relevant and there is a demand, you may request supporting additional documents from the said country.

</details>

<details>

<summary>Will I be able to upgrade my package to a more suitable solution when I need to?</summary>

Yes. As a first step, we will help you choose the right plan for your needs accordingly to ensure that you are not overcharged or rushed.

As you grow and start progressing, your needs will change. Contact us again and we will adjust you to a solution that better fits your needs.

</details>

## Process

<details>

<summary>What do I need to start the verification process?</summary>

You must have a laptop or mobile with an operational camera and government-issued ID documents to begin the verification. These documents could be an ID card, passport, driving license or any other ID document that is supported by FACEKI.&#x20;

[View Supported Documents ](https://faceki.com/supported-documents/)

</details>

<details>

<summary>How long does the verification process take?</summary>

Your end-users can get themselves verified within 10-40 seconds.

</details>

<details>

<summary>Which Documents are acceptable for KYC?</summary>

Government-issued ID documents are acceptable that are not expired. Passports, ID cards, driving license. [View Supported Documents ](https://faceki.com/supported-documents/)

The choice of ID document to the merchant. If the merchant has chosen an ID card, all customers have to show their government-issued ID card for the process. Moreover, we allow merchants to choose more than one document for customer verification.

</details>

<details>

<summary>Does the required data fields differ according to the country?</summary>

Yes, the data fields that a person must provide in order to get verified vary from country to country as per their government-issued identity documents and regulatory framework. The format of ID documents differs between countries.

</details>

<details>

<summary>Can I re-verify my customers against AML watchlist?</summary>

Yes, manual AML/PEP verifications are available, you can find it in the dashboard under the verification bar.

</details>

<details>

<summary>Do I get the full verification details if the customer or regulator come knocking?</summary>

Yes, a whole report can be downloaded when you click on view full details of the users in the Verification Monitoring page.&#x20;

</details>

<details>

<summary>What can I do if I get stuck?</summary>

Step 1: Breathe.

Step 2: You can contact us on our [WhatsApp](/need-help/support) for a Faster Response

</details>


