# Introduction

Welcome. This documentation will help you understand how our Atlas customer onboarding solution works and how you can integrate our APIs and SDKs into your mobile and web applications.

## What is Atlas&#x20;

**Atlas** is an all in one customer onboarding platform which allows businesses to collect identity details digitally and verify them instantly. Atlas platform uses advanced deep learning and computer vision technologies to automatically [scan documents](https://www.frslabs.com/text-recognition-ocr/) (OCR), [verify such documents](https://www.frslabs.com/id-verification/) against issuing authorities, [mask documents](https://www.frslabs.com/aadhaar-masking/) as per regulations, capture [face with liveness](https://www.frslabs.com/face-recognition/) checks and match them against identity documents with high accuracy, [check for fraudulent applications](https://www.frslabs.com/identity-fraud/) and allow the customer to [eSign](https://www.frslabs.com/aadhaar-esign/) the documents to complete the onboarding steps. The platform allows you to custom build a workflow using the following features.

<figure><img src="/files/yODB6QcK9VI9XyCbZm9b" alt=""><figcaption><p>Atlas Platform</p></figcaption></figure>

## Atlas Key Features

### 1. Document Recognition

A machine learning service to do a variety of tasks on documents using our advanced AI powered text extraction engine. Available as both API and SDK.

<mark style="color:red;">**Extract Data (OCR)**</mark>

Extract data from global ID documents (singled sided and multi-sided). Indian documents supported for OCR are PAN, Aadhaar, Passport, Voter ID, Driving Licence (new chip formats), Registration Certificate (new chip formats), Cheque, GST certificate, e-mandate and Form 16.

<mark style="color:red;">**Convert Documents**</mark>

Convert multiple input file formats (e.g. jpg, tiff, pdf, png, bmp, webp etc) to a standard out format (e.g. PDF or JPG).

<mark style="color:red;">**Compress Documents**</mark>

Compress your files to save valuable space in your document management systems for more digital documents to occupy the same unit space.

<mark style="color:red;">**Split Documents**</mark>

Split PDF/TIFF file into its constituent parts (e.g. Single customer PDF file will split into PAN, Aadhaar, Payslip, Bank Statement, Application, Photograph and so on as separate files).

<mark style="color:red;">**Classify Document**</mark>

Minimise upload errors by classifying the documents correctly. For instance, verify that a Passport image has been uploaded by the customer during digital upload.

<mark style="color:red;">**Crop Signature**</mark>

Capture static signature from Application form or blank sheet of paper. Removes noise and converts the image to JPG or PNG and provides high resolution and low-resolution images as output. The high-resolution images can be used for signature verification and low resolution for CKYC uploads which needs to be below 15KB in size.

<mark style="color:red;">**E-mandate**</mark>&#x20;

Scan and crop the e-mandate portion of the physical e-mandate form as specified by NPCI (needs our Android or iOS SDK for this). Further, make an API call to the server to validate whether the fields in the form are populated or left empty. Also validate if the key numeric values matches with the extracted (OCR) values in the form (e.g. Account or Policy Number and Amount).

### 2. Face Recognition

With our face models trained for over 7 years, you can increase compliance when it comes to face liveness and face matching as per prevailing regulations. Furthermore, you can increase productivity and minimize errors by augmenting cumbersome, repetitive manual review tasks with our pre built AI and ML models. Available as both API and SDK.

<mark style="color:red;">**Capture Face with Liveness**</mark>

A unique design with clear instructions to capture a KYC compliant face with liveness checks. The image is cropped and compressed to a standard size irrespective of devices or cameras. The consistency in images allows for easy searches and precise and reduced storage costs.

<mark style="color:red;">**Measure Face Quality**</mark>

Takes an input image and assesses for multiple input quality parameters including the presence of blur, reflection, sharpness, exposure, orientation (pitch, yaw, roll), eye and mouth positions and returns a quality score.

<mark style="color:red;">**Compare Face (one to one match)**</mark>

Takes two input images, detects and crops the face images, extracts the face features from the face landmarks, compares both the images and provides a match score.

<mark style="color:red;">**Identify Face (one to many match)**</mark>

Takes the input image, detects and crops the face image, extracts the face features from the face landmarks and compares the image with all the image templates already stored in your database.

<mark style="color:red;">**Find Face (one to many match)**</mark>

Takes a reference input image and a set of images to be matched in a single API call. This is useful for de-duplicating incoming application date to ascertain a single master record.

<mark style="color:red;">**Crop Face**</mark>

Takes an input image or a video and identifies the face image and crops the image. This is useful for cropping face images from ID cards for face comparison against selfie of video face.

### 3. Aadhaar Services

Aadhaar is the unique identity document issued to Indian citizens. Aadhaar services includes Aadhaar OCR, Aadhaar Offline verification, Aadhaar image and video masking and Aadhaar eSign.

<mark style="color:red;">**Aadhaar OCR**</mark>

Extracts data from multiple Aadhaar card versions issued by UIDAI. Extracts data accurately from both sides of the original Aadhaar image.

<mark style="color:red;">**Aadhaar Encrypted QR**</mark>

Extracts data from multiple QR codes (QR encrypted, QR plain, and QR with photo) versions issued by UIDAI. Extracts data accurately from original Aadhaar images.

<mark style="color:red;">**Aadhaar Offline**</mark>

Allows the customer to seamlessly verify Aadhaar using our unique in-app flow without redirection to UIDAI website and verify the XML signature and extract data and photograph from the XML file.

<mark style="color:red;">**Aadhaar Masking**</mark>

Aadhaar masking refers to redacting the first 8 digits of the Aadhaar Number in the Aadhaar card. The masking caters to short form and full form Aadhaar images and segregates them into multiple output folders.

<mark style="color:red;">**Aadhaar eSign**</mark>

Allows for customers to digitally sign documents using Aadhaar and OTP seamlessly. We are an approved ASP and the Aadhaar signed documents are accepted on par with physical signatures in a court of law. Learn more about [esign here](https://www.frslabs.com/aadhaar-esign/).

<mark style="color:red;">**DigiLocker**</mark>

Allows customers to download documents directly from DigiLocker. Note that a DigiLocker account is not mandatory to start the process for your customers as DigiLocker will create a new account if one doesn't already exist (built in as part of the user consent).This is particularly useful for downloading an already verified ID proof such as Aadhaar, PAN, VID, DL etc.

### 4. Video Verification

Verify customers remotely using assisted and unassisted video KYC flows customised to your exact needs. For instance, you can initiate a check flow that captures POI, POA and photograph with liveness for your end user without writing a line of code.&#x20;

<mark style="color:red;">**Video KYC Check (Assisted or Unassisted)**</mark>

Initiates a check with the exact KYC steps needed to be completed by the customer. For example, you can initiate a check for capturing PAN, Aadhaar, Photo etc as part of the flow. The check flow is available as Unassisted (where the user completes all the steps) or Assisted (where the user is verified over a live video call). View the full documentation [here](https://www.frslabs.com/video-kyc/#assisted-video-kyc).

<mark style="color:red;">**Video Customer Declaration (Multilingual) - PIVC**</mark>

Initiates a secure link to the customer and displays the declaration text in multiple supported Indian languages. The entire PIVC is recorded in the language chosen by the customer. Currently we support 9 languages including English, Hindi, Tamil, Telegu, Kannada, Malayalam, Gujarati, Bengali and Marathi.

<mark style="color:red;">**Video Liveness Check**</mark>

Verifies the liveness of the customer through a live video and a one-time password (OTP) spoken and verified in the video. Useful for majority of the current compliance requirements for liveness checks.

<mark style="color:red;">**Live Video Call**</mark>

The video verification is completed by the customer with the assistance of a trained agent over a live video call. The pricing refers to initiating the video call (fair usage will apply for each verification call). Note that the checks to be carried out as part of the video verification will be priced individually for what you actually use.&#x20;

### 5. ID Verification

Verifies the legitimacy of the details in the ID document presented by the customer for verification. Checks the legitimacy of the document by matching it against the issuing authority.

<mark style="color:red;">**Bank Verification (Penny Drop)**</mark>

Verifies the legitimacy of the Bank Account (for all Bank Accounts in India) by dropping INR 1 into the beneficiary’s Bank Account. The verified Bank Account will return the beneficiary’s name.

<mark style="color:red;">**PAN Verification**</mark>

Verifies the legitimacy of the Permanent Account Number (PAN) against the issuing authority (Income Tax Department of India).

<mark style="color:red;">**PAN KRA Status Verification**</mark>

Verifies the registration of the Permanent Account Number (PAN) against the KRA (Know Your Customer Registration Agencies of India).

<mark style="color:red;">**Business Verification (GST)**</mark>

Verifies the legitimacy of the Goods and Services Tax Number (GST) against the issuing authority (GSTIN). Verified GSTIN returns the full business details of the GST number.

<mark style="color:red;">**Voter ID Verification**</mark>

Verifies the legitimacy of the Voter ID (EPIC – Electors Photo ID Card) against the issuing authority.

<mark style="color:red;">**Driving Licence Verification**</mark>

Verifies the legitimacy of the Driving License against the issuing authority (Parivaahan). Verified Driving Licence returns the demographic details and the photo of the driver.

<mark style="color:red;">**Passport Status Verification**</mark>

Verifies the Passport status of an Applicant. Note that this is applicable only for Indian passports with a File Number printed on the back page of the passport.

<mark style="color:red;">**Basic Aadhaar Verification**</mark>

Verifies the basic validity of Aadhaar. This will not provide the full details of the Aadhaar holder instead will validate if the Aadhaar is still valid with the issuer.

<mark style="color:red;">**Company Verification**</mark>

Verifies the Company Name/CIN and returns relevant details like Company Data, Director details and Charges existing on Company/LLP. You will need to enter a valid Company Name 'or' CIN. Applies only for companies registered in India with the Registrar of Companies.

<mark style="color:red;">**Director Verification**</mark>

Verifies the DIN (Director Identification Number) and PAN (Permanent Account Number) of the Director and if valid, returns the relevant details with the status. Applies only for companies and Directors registered in India with the Registrar of Companies.

<mark style="color:red;">**MSME Udyam Verification**</mark>

Verifies the Udyam Registration number (MSME India) and returns relevant details like Company Name, Unit details and Address of the Company. Applies only for MSMS companies registered in India.

<mark style="color:red;">**FSSAI Verification**</mark>

Issued by the food safety standards of India, FSSAI verifies the businesses registered under FSSAI and their current validity. This is particularly helpful if you are onboarding food and beverage suppliers including restaurants. Applies only for companies registered in India. &#x20;

### 6. Fraud Prevention

Verifies the details of the incoming customer data against internal and global databases to screen for potential organised fraud.

<mark style="color:red;">**Data Match (dedupe)**</mark>

Verifies names and addresses from multiple ID documents and application form to verify the true identity of the customer. We provide a data search tool alongside for faster referral checks when they are flagged as suspicious by the machine at the point of onboarding.

<mark style="color:red;">**Image Match (image dedupe)**</mark>

Verifies face images from multiple ID documents and application form to verify the true identity of the customer.

<mark style="color:red;">**Identity Fraud**</mark>

Enables rich visualisation and link maps for identifying sophisticated fraud networks. Our award-winning network mapping software builds links using demographic, claims, call records and images. This is available only for enterprise on-premises customers.

<mark style="color:red;">**Sanctions, Watchlist, PEP and Adverse Media Check**</mark>

Verifies applicant data against multiple global databases to identify potential fraud. Provided through third parties on request. This is available only for enterprise on-premise customers.

## **Atlas Support**

We provide a stress-free world class support. Our support services include updates, bug fixes and common changes to regulatory norms affecting the standard use of our software. We promptly react to all eventual client feedback regarding potential bugs or optimizations needed to our software. We adopt the highest quality standards and are ISO 9001 and ISO 27001 certified.

If the software runs in your own premises, we will have dedicated support to help you with regular updates, performance optimisation and take part in change reviews for our software with your team.

{% hint style="info" %}
You will need to create an account and generate API or SDK keys to use the services.
{% endhint %}

Once you are ready, click on Start Here to build your own customer onboarding journey. And if there is anything we can do to help, you can always write to <support@frslabs.com>.

###


# Start Here

If you are new to integrating our API and SDK services, please follow these steps to get started.

### **Get a Demo**

Seeing is believing. Therefore, seeing a demo or trying out our services can open a raft of possibilities to understand how our software works and how you can imagine it to be integrated into your own identity verification flow. You can book a free trial or a demo [here](https://www.frslabs.com/book-demo/).

### **Create Account**

Once we have a quick chat with you about your needs, we will create an account for you to login to the dashboard and get started.&#x20;

### **Activate Account**

Once you have logged into the dashboard, and changed your default password upon first login, you will need to activate the account by filling out a few company and contact details and accepting our standard subscription agreement and privacy policy. If you are a large enterprise with very high volumes and would like a separate contract to be executed, please write to us at <sales@frslabs.com>.

### **Test Services**&#x20;

Get started by testing the services in Postman (the easiest way to test without writing a line of code). You can also test our services through our no-code dashboard. You will be given a certain number of free credits to carry out your testing. If the free credits are not sufficient for your testing, you can also go for a developer license which gives you continued access with further free credits up to three months to complete your integration and testing.

### **Go Live**

Once you are ready, you can move to production seamlessly using the same Production keys or by generating a new key from the dashboard (or requesting through the support team). You will also have to complete your billing before you can access the production services. If you are a large enterprise with high volumes and would like monthly billing options with a purchase order, please write to us at <sales@frslabs.com>.

### **Get Support**&#x20;

Whatever plan you choose, you will automatically receive new updates and bug fixes as long as you have an active account and sufficient credits. You can raise a support ticket by writing a mail to <support@frslabs.com>.


# API v1.3 (deprecated)

Note that this is the older API version and has been deprecated. Please use API v2.

## The **Basics**

![Simple steps to integrate our APIs](/files/-MZaEMFhu6vtPsoXTVF9)

### **Authentication**

All server-side API requests need to be authenticated using the unique API Keys provided to the user. The API key is a combination of Key ID (as username) and Key Secret (as password). The keys must be stored securely as it carries many privileges and must not be shared in publicly accessible areas such as client-side code. All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

You should use a Content-Type: application/json header with all PUT and POST requests except when uploading documents or photos. For these requests, use a Content-Type: multipart/form-data header. API credentials must be included in the header of all requests made to the API. A sample header format and its details are given below.

### Environments

We provide two environments. A sandbox (pre-prod) environment for clients to integrate and test the APIs and a production environment for going live with your integration.

| Production base URL             | Pre-production base URL            |
| ------------------------------- | ---------------------------------- |
| <https://api.atlaskyc.com/prod> | <https://api.atlaskyc.com/preprod> |

{% hint style="info" %}
Note that all of the examples in this documentation points to the production environment. Your pre-production keys will not work in production and vice versa, so please take care when using the environment correctly.
{% endhint %}

### **Header**

| Key           | Description                                                                                                                                             |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Authorization | Hashed string of api\_key with timestamp using AES256 key\_id=abeb3372xxxxaf530,api\_key= (KEY\_ID\|KEY\_SECRET\|TIMESTAMP),timestamp=yyyyMMddHHmmssSSS |
| request\_id   | Any Unique Reference ID or Time in milliseconds format (e.g 1588695375434) to identify each request uniquely.                                           |

{% hint style="info" %}
**Authorization** consists of the key\_id, api\_key and the timestamp

**Key\_ID:** This is unique ID issued to identify the client application.

**Key\_Secret:** A unique string only known to the creator of the client ID.

**Timestamp:** Timestamp in yyyyMMddHHmmssSSS format.
{% endhint %}

{% hint style="info" %}
**API\_Key** is the encrypted value of key\_id, key\_secret and timestamp. You can get the sample Java code for AES256 encryption algorithm for the api\_key from our [git page](https://github.com/frslabs/atlas-api-sample-java).
{% endhint %}

{% hint style="info" %}
**Request\_ID** is any unique ID for the request. You can use a unique customer\_id and timestamp in milliseconds to make each request unique. No special characters are allowed as part of the request\_id.
{% endhint %}

| **Response**                                                 |
| ------------------------------------------------------------ |
| <p>Status Code: 200 OK<br>Content-Type: application/json</p> |

### Errors

Atlas uses conventional HTTP response codes to indicate the success or failure of an API request.

In general: codes in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted). Codes in the 5xx range indicate an error with Atlas servers (rare cases). The full list of error codes are listed below.

**Error Codes**

| Error Code | Message                                       | What to do                                                                                                                                                                                             |
| ---------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 200        | Success                                       |                                                                                                                                                                                                        |
| 400        | Invalid request - missing parameters.         | Please check API response for missing parameters.                                                                                                                                                      |
| 401        | Access denied.                                | Make sure you have entered your API token correctly. If issue persists then contact support at <support@frslabs.com>.                                                                                  |
| 403        | Access forbidden.                             | Client does not have the necessary permissions for the resource. Please contact support at <support@frslabs.com>                                                                                       |
| 404        | URL not found.                                | Make sure you have formatted the url correctly.                                                                                                                                                        |
| 405        | Invalid request-WRONG API REQUEST METHOD TYPE | GET method is not supported for this request. Make sure POST method is selected for your request.                                                                                                      |
| 408        | Request Timeout error.                        | Requests are not connected to atlas services. Please contact support at <support@frslabs.com>                                                                                                          |
| 413        | Request entity too large.                     | Make sure, size limit of your request does not exceed 100 MB. If issue persists then contact support at <support@frslabs.com>.                                                                         |
| 414        | Request URL too large.                        | URL for your request is longer than the server is willing to interpret. Please check URL.                                                                                                              |
| 415        | Invalid request, unsupported media type.      | Make sure format of your request is as per defined resource's content-type or content-encoding headers.                                                                                                |
| 429        | Invalid request, too many requests.           | The user has sent too many requests in a given amount of time. Please retry after specified time.                                                                                                      |
| 500        | Internal server error.                        | The server encountered an error. Please, try again. If issue persists then contact support at <support@frslabs.com>.                                                                                   |
| 502        | Bad gateway error.                            | The server has received an invalid response. If issue persists then contact support at <support@frslabs.com>.                                                                                          |
| 503        | Service unavailable.                          | The server is currently unable to handle your request due to a temporary overloading or maintenance of the server. Please, try again. If issue persists then contact support at <support@frslabs.com>. |
| 505        | HTTP version not supported.                   | The server can't handle the http version used in the request. We support http 2.0 and http 1.0 version. Please, contact support at <support@frslabs.com>.                                              |

**Error Response Parameters**

| Parameter | Description                                                  |
| --------- | ------------------------------------------------------------ |
| code      | <p>Data type: String.<br>Code of the error e.g. 400</p>      |
| message   | A human-readable message giving more details about the error |

**Sample Error Response**

```
{
    "status": "failed",
    "response_timestamp": "1595488026806",
    "data": null,
    "error": {
        "code": "500",
        "message": "Internal server error."
    }
}
```

### Document Types

The document ID types are given below. The full list of countries and the IDs supported can be found here.

| ID   | Abbreviation              | Type   |
| ---- | ------------------------- | ------ |
| PPT  | Passport                  | String |
| PAN  | Permanent Account Number  | String |
| NID  | National Identity Card    | String |
| DRV  | Driving Licence           | String |
| SSN  | Social Security Number    | String |
| VID  | Voter Identity            | String |
| ADR  | Aadhaar Card (India)      | String |
| RC   | Registration Card         | String |
| TIN  | Tax Identification Number | String |
| UMID | Unified Multi-Purpose ID  | String |

### Country Codes

The supported country codes to be passed as parameters are outlined below.

| Country              | Code |
| -------------------- | ---- |
| Australia            | AUS  |
| Austria              | AUT  |
| Bahrain              | BHR  |
| Belgium              | BEL  |
| Canada               | CAN  |
| Denmark              | DNK  |
| Egypt                | EGY  |
| Finland              | FIN  |
| France               | FRA  |
| Germany              | DEU  |
| Greece               | GRC  |
| Greenland            | GRL  |
| Hungary              | HUN  |
| Iceland              | ISL  |
| India                | IND  |
| Indonesia            | IDN  |
| Ireland              | IRL  |
| Israel               | ISR  |
| Italy                | ITA  |
| Japan                | JPN  |
| Malaysia             | MYS  |
| Philippines          | PHL  |
| Poland               | POL  |
| Portugal             | PRT  |
| United Arab Emirates | ARE  |
| United Kingdom       | GBR  |
| United States        | USA  |

## Test in Postman

Postman is a simple application to test the APIs without having to write a line of code. This is pretty useful to have our APIs tested for your business needs before beginning your integration work. You can follow these steps to test our APIs in about 10 minutes.

{% hint style="info" %}
Please ensure that you have Postman installed in your system from <https://www.postman.com/downloads&#x20>;
{% endhint %}

> For this example, let’s say that you would like to test our OCR API to extract text data from a Passport.

Step 1 – Once you have installed Postman, you can download our API collections by clicking on “Run in Postman” button from our API page.

![](/files/-MboCnEZW1JMAnoL_cMx)

Step 2 – Click on “Postman for Windows” in “Run in…” window.

![](/files/-MboD9y6iqDbvbZ5XM_P)

Step 3 – Now the “API Documentation” collection will be imported to your system postman.

![](/files/-MboDHqK2jtKPNI0TIFi)

Step 4 – To create environment and variables, click on “Create New” and select “Environment”.

![](/files/-MboDQgC_VlKdKrPlJZk)

![](/files/-MboDeP8D-1DFyJ7vSsf)

Step 5 – In “Manage Environments”, enter Environment Name (e.g. Atlas), and create variables and set your allocated values for KEY\_ID, KEY\_SECRET, AUTHORIZATION and REQUEST\_ID and then click on “Update”.

{% hint style="info" %}
Please read the introduction section of the documentation to understand the variables mentioned here and how to get your own credentials to get started.
{% endhint %}

![](/files/-MboDkYNRrDycq_VzX5t)

Step 6 – Now you have to pass values in “Params” and “Body”. These are the values that are needed to complete the data extraction task by the API.

![](/files/-MboDowp3nK-AnLOTuX4)

Step 7 – Pre-request script is added in each API request to generate “Authorization header” using API keys (KEY\_ID, KEY\_SECRET).&#x20;

{% hint style="info" %}
To generate the authorization header to use in postman, you can use this: <https://apps.atlaskyc.com/atlas/api/auth/get_auth?key_id=>your key ID\&key\_secret=your key secret. Please note that you will need to generate the authorization header for each individual API call you make.
{% endhint %}

![](/files/-MboDtepEg_pQhRHQb-3)

Step 8 – Now click on “Send” to get response after selecting appropriate environment (e.g. Atlas).

![](/files/-MboDxCjEBgG31-X8l4U)

## Core Resources

### **Text Recognition**

Powerful vision APIs and SDKs to extract data from ID cards and other supported documents.

#### Extract Data (OCR)

Extract data from globally supported documents (singled sided and multi-sided).&#x20;

[View API](https://documenter.getpostman.com/view/12409759/TVCZaWzp#97d9d904-e87a-4410-958c-535e2a5daf88)&#x20;

{% hint style="info" %}
**Indian documents supported for OCR are**&#x20;

* **PAN**
* **Aadhaar**
* **Passport**
* **Voter ID**
* **Driving License (new format)**
* **Registration Certificate (new format)**
* **Cheque**&#x20;
* **GST**
* **Form 16**
  {% endhint %}

{% hint style="info" %}
**Aside, we have also developed custom OCR for specific client needs using our pre-trained AI engine. Please reach out to us if you have a specific format that needs to be supported through our OCR engine.**
{% endhint %}

**Convert Documents**

Convert multiple input file formats (e.g. jpg, tiff, pdf, png, bmp, webp etc) to a standard out format (e.g. PDF or JPG).

View API (coming soon)

**Compress Documents**

Compress your files to save valuable space in your document management systems for more digital documents to occupy the same unit space.

View API (coming soon)

**Split Documents**

Unlock the potential of greater analytics from input KYC documents by splitting the PDF file into its constituent parts (e.g. Single customer PDF file will split into PAN, Aadhaar, Payslip, Bank Statement, Application, Photograph and so on).

View API (coming soon)

**Classify Document**

Minimise document upload errors by classifying the documents correctly. For instance, verify that a PAN image or an Aadhaar Front image has been uploaded by the customer during your digital onboarding journey (mobile and web).

[View API](https://documenter.getpostman.com/view/12409759/TVCZaWzp#d964b1a5-c0f4-459a-8081-7dcacb0d1e5e)

**Crop Signature**

Signature Crop API allows you to crop a signature image from a document. This is most helpful when you are not meeting the customer face to face but will need to collect the signature offline or through a video. Once the signature document is capture, this API can crop the signature from the uploaded document. The supported file formats are JPG and PNG.

[View API](https://documenter.getpostman.com/view/12409759/TVCZaWzp#4b5073ca-3abf-4c6f-b45a-05b2ab606a8d)

{% hint style="info" %}
[View all Text Recognition APIs](https://documenter.getpostman.com/view/12409759/TVCZaWzp#503e7a6c-f719-4b3f-8774-5440ada30896)
{% endhint %}

###

### **Face Recognition**

This service extracts the key features, landmarks and quality aspects of a face image. The face features can then be used for a wide variety of uses cases such as customer verification, customer identification and comparison between images.

\
**Face Quality**

Takes an input image and assesses for multiple input quality parameters including the presence of blur, reflection, sharpness, exposure, orientation (pitch, yaw, roll), eye and mouth positions and returns a quality score.

[View API](https://documenter.getpostman.com/view/12409759/TVCZaWzp#d4970f1a-6252-4576-a038-63be39f8fbec)

**Compare Face (one to one match)**

Takes two input images, detects and crops the face images, extracts the face features from the face landmarks, compares both the images and provides a match score.

[View API](https://documenter.getpostman.com/view/12409759/TVCZaWzp#15984112-d109-4ff5-89c9-aa5abacaa87f)

**Identify Face (one to many match)**

Takes the input image, detects and crops the face image, extracts the face features from the face landmarks and compares the image with all the image templates already stored in your database.

[View API](https://documenter.getpostman.com/view/12409759/TVCZaWzp#cae40546-dd71-454a-ba24-0e0da4062c56)

**Crop Face**

Takes an input image or a video and identifies the face image and crops the image. This is useful for cropping face images from ID cards for face comparison against selfie of video face.

[View API](https://documenter.getpostman.com/view/12409759/TVCZaWzp#8cbdf44b-1143-45a6-a52c-2b848a54180e)

{% hint style="info" %}
[View all Face Recognition APIs](https://documenter.getpostman.com/view/12409759/TVCZaWzp#6ef15b90-0dc2-4fb1-a598-5ccc8789e00b)
{% endhint %}

###

### **Aadhaar Services**

Aadhaar is the unique identity document issued to Indian citizens. Aadhaar services includes Aadhaar OCR, Aadhaar Offline verification, Aadhaar image and video masking and Aadhaar eSign.

**Aadhaar OCR**

Extracts data from multiple Aadhaar card versions issued by UIDAI. Extracts data accurately from both sides of the original Aadhaar image.

[View API](https://documenter.getpostman.com/view/12409759/TVCZaWzp#97d9d904-e87a-4410-958c-535e2a5daf88)

**Aadhaar Encrypted QR**

Extracts data from multiple QR codes (QR encrypted, QR plain, and QR with photo) versions issued by UIDAI. Extracts data accurately from original Aadhaar images. This is part of our OCR API which can be invoked to extract data from Aadhaar QR.

[View API](https://documenter.getpostman.com/view/12409759/TVCZaWzp#97d9d904-e87a-4410-958c-535e2a5daf88)

**Aadhaar Offline**

Allows the customer to download the Aadhaar Offline XML file seamlessly and verify the digital signature and extract the data and photograph from the XML file.

[View API](https://documenter.getpostman.com/view/12409759/TVCZaWzp#11731c18-5337-4890-9c58-41a0716dca7d)

**Aadhaar Masking**

Aadhaar masking refers to redacting the first 8 digits of the Aadhaar Number in the Aadhaar card. The masking caters to short form and full form Aadhaar images and segregates them into multiple output folders. **Note that this function is also available to run as a batch for your legacy images.**&#x20;

[View API](https://documenter.getpostman.com/view/12409759/TVCZaWzp#09f6c4d2-8589-4134-be11-f837b5ce1102)

**Aadhaar eSign**

Allows for customers to digitally sign documents using Aadhaar and OTP seamlessly. We are an approved ASP and the Aadhaar signed documents are accepted on par with physical signatures in a court of law. **Note that this function is also available as part of our no-code dashboard.**&#x20;

[View API](https://documenter.getpostman.com/view/12409759/TVCZaWzp#585bd824-e74c-43d9-8ea7-e9d31b5ab3a1)

{% hint style="info" %}
[View all Aadhaar Services APIs](https://documenter.getpostman.com/view/12409759/TVCZaWzp#518f0858-f626-4619-863e-18948733013f)
{% endhint %}

###

### **Video Verification**

As the name suggests video verification refers to verifying the identity of the User through a video. The verification can be unassisted, whereby all of the steps are carried out by the User for verification. Assisted verification is done through a live video call with a Bank official. Video verification removes the need for face to face meetings and can vastly reduce the cost of verification and improve customer experience.

#### Core features of Video Verification APIs

#### Video Validation

With a single input video captured of a customer, you can perform the following operations to validate and verify the person in the video.

* Crop face from the video recording
* Match multiple faces within the video
* Match face cropped from ID document against face in video
* Verify liveness of the person in the video

[View API](https://documenter.getpostman.com/view/12409759/TVCZaWzp#5955e736-2200-44fe-ae64-73de97c6b970)

#### Video KYC - Live Video Call

The video verification is completed by the customer with the assistance of a trained agent over a live video call. You can use this API to initiate a video call link that can then be used by the customer and the Agent to come on the call.

[View API](https://documenter.getpostman.com/view/12409759/TVCZaWzp#a116c888-53c1-42a3-8b01-5be5bc726e0f)

{% hint style="info" %}
Note that the video call can also be initiated from our no-code dashboard. A simple web link will be sent to the customer to take the call. You can learn more about the flow [here.](https://frslabs.com/video-kyc/#assisted-video-kyc)
{% endhint %}

{% hint style="info" %}
There are webhooks and additional APIs that you can invoke to check the status of a video call and download the video and the call details once the video is completed. Alternatively, you can login to our dashboard to view the complete video KYC record.
{% endhint %}

### **Post Issuance Verification (PIVC)**

Following pre-approval of many of the services, in particular for insurance products, a pre or post issuance verification call (PIVC or PCVC) is essential to confirm the details directly with the customer and remain compliant with current regulations. PIVC services provide a simple way to initiate such PIVC calls to customer and customer completing the verification over a recorded video call.

#### Core features of PIVC APIs

* [**Pre Approval Video Initiation**](https://documenter.getpostman.com/view/12409759/TVCZaWzp#80571e43-ebdc-4db0-ab80-d032273916b0) - Initiate PIVC links with customisable content templates.
* [**Pre Approval Video Download**](https://documenter.getpostman.com/view/12409759/TVCZaWzp#c4d951b7-12f2-40dd-b62e-72df82900369) - Download the uploaded video verification done by customers.

{% hint style="info" %}
[View all Video Verification APIs](https://documenter.getpostman.com/view/12409759/TVCZaWzp#8121b04a-ab4c-44b6-9e5b-710adf14f43f)
{% endhint %}

###

### **ID Verification**

ID verification refers to verifying the legitimacy of the details in the ID document presented by the customer against the issuing authority of those documents. It doesn’t check for document tampering but rather that the details in the ID has a legitimate match against the issuing authority. We offer the following  verification services.

**Bank Verification (Penny Drop)**

Verifies the legitimacy of the Bank Account (for all Bank Accounts in India) by dropping INR 1 into the beneficiary’s Bank Account. The verified Bank Account will return the beneficiary name. **Note that this function is also available as part of our no-code dashboard.**&#x20;

[View API ](https://documenter.getpostman.com/view/12409759/TVCZaWzp#805650aa-dd1a-4c42-869f-f6fbebdd8659)     &#x20;

**PAN Verification**

Verifies the legitimacy of the Permanent Account Number (PAN) against the issuing authority (Income Tax Department of India). **Note that this function is also available as part of our no-code dashboard.**&#x20;

[View API](https://documenter.getpostman.com/view/12409759/TVCZaWzp#5bb21f60-2f4b-4290-ae8a-19df3f0437ac)      &#x20;

**GSTIN Verification**

Verifies the legitimacy of the Goods and Services Tax Number (GST) against the issuing authority (GSTIN). Verified GSTIN returns the full business details of the GST number. **Note that this function is also available as part of our no-code dashboard.**&#x20;

[View API ](https://documenter.getpostman.com/view/12409759/TVCZaWzp#2c5bf688-c92e-4fed-ac11-3ae88d015118)     &#x20;

**Voter ID Verification**

Verifies the legitimacy of the Voter ID (EPIC – Electors Photo ID Card) against the issuing authority. **Note that this function is also available as part of our no-code dashboard.**&#x20;

[View API ](https://documenter.getpostman.com/view/12409759/TVCZaWzp#90832d47-7f3d-4a58-84b0-8e15c5ccfb0a)     &#x20;

**Driving Licence Verification**

Verifies the legitimacy of the Driving License against the issuing authority (Parivaahan). Verified Driving Licence returns the demographic details and the photo of the driver. **Note that this function is also available as part of our no-code dashboard.**&#x20;

[View API ](https://documenter.getpostman.com/view/12409759/TVCZaWzp#af084d2d-3726-4d7f-90a4-1d22d09a2784)     &#x20;

{% hint style="info" %}
[View all ID Verification APIs](https://documenter.getpostman.com/view/12409759/TVCZaWzp#e3350bb2-a8c8-4e3e-a4d8-15525f8d20f2)
{% endhint %}


# API v2

Use our API services as building blocks to create a seamless KYC and verification process for any business or industry. Get an account and get started in minutes.

Use our Atlas API services as building blocks for creating seamless KYC and verification steps for your customers. The flow can be integrated into your existing mobile and web applications. And can be customised to your exact needs. Our APIs are RESTful and all our responses are returned as JSON.

For instance, let’s say you would like your users to upload a proof of ID (e.g. PAN or Passport), a live photograph and verify the user’s location to be India. You can achieve this by calling the following APIs: The extract API to verify and extract the details from the proof of ID; The verify API to verify that the document uploaded is authentic; The liveness check API to check that the photo/video uploaded is the true likeness of the user and is real and not spoof; The face match API to match the live photograph from the photograph from the ID; and the location check API to ensure that the geo location is India.

As you can note, if you can imagine a flow, then you can build them exactly they way you want it using our APIs. In addition to the APIs, we also provide mobile SDKs for document capture and face capture and face liveness. You can refer to our SDK for more information. If you do not want any integration, you can use our no code dashboard. You can get access to the dashboard by writing to <support@frslabs.com>.

{% hint style="info" %}

### [<mark style="color:blue;">**View the full v2 API documentation**</mark>](https://documenter.getpostman.com/view/12409759/UVsMvkkY)

{% endhint %}

## Authentication

All Atlas APIs are authenticated using Basic Auth. Basic auth requires the following:

\[YOUR\_KEY\_ID] and \[YOUR\_KEY\_SECRET]

Basic auth needs an Authorization Header for each request in the base64 format. Here, base64token is a base64 encoded string of YOUR\_KEY\_ID:YOUR\_KEY\_SECRET. Please ensure that you get this format right to prevent API authentication errors.

All server-side API requests need to be authenticated using the unique API Keys provided to the user. The keys must be stored securely as it carries many privileges and must not be shared in publicly accessible areas such as client-side code. All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

You should use a Content-Type: application/json header with all PUT and POST requests except when uploading documents or photos. For these requests, use a Content-Type: multipart/form-data header. API credentials must be included in the header of all requests made to the API.&#x20;

## Environment

We provide a production environment with trial access. You can use the trial API key to integrate and test the APIs and use the production key for going live with your integration.

{% hint style="info" %}
Production: [https://api.atlaskyc.com/v2/prod](https://api.atlaskyc.com/prod)
{% endhint %}

{% hint style="info" %} <mark style="color:red;">Note that your trial keys will not work once you go live, so please ensure you use the correct keys in the production environment. Trial keys are valid for short durations for testing. Production keys by default are valid for a year.</mark>
{% endhint %}

## Errors

Atlas uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Codes in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was missing or invalid). Codes in the 5xx range indicate an error with our backend AWS servers.

All successful responses are returned with HTTP Status code 200. In case of failure, Atlas API returns a JSON error response with the parameters that detail the reason for the failure.

For V2 we are maintaining standard error format, where "type", "message", "fields" are constant for all errors. The value "fields" are mentioned for validation schema errors to say that this particular input param is wrong , for other errors like invalid\_enpoint/method\_incorrect, "fields" will be null

**Error Codes**

| Error Code | Message                                              | What to do                                                                                                                                                                     |
| ---------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 200        | Success                                              | Process as normal.                                                                                                                                                             |
| 400        | Invalid request - missing parameters.                | Please check API response for missing parameters.                                                                                                                              |
| 401        | Unauthorised. Access denied.                         | Make sure you have entered your API token correctly. If issue persists then contact support.                                                                                   |
| 402        | Request Failed.                                      | The parameters were valid but the request failed. If the issue persists then contact support.                                                                                  |
| 403        | Access forbidden.                                    | Client does not have the necessary permissions for the resource. This is most likely because you may not have taken this service. If this is the case, please contact support. |
| 404        | URL not found.                                       | The requested resource does not exist. Make sure you have formatted the URL correctly.                                                                                         |
| 405        | Invalid request - Incorrect API request method used. | GET method is not supported for this request. Make sure POST method is selected for your request.                                                                              |
| 422        | Unprocessable Entity.                                | Make sure the input file is valid.                                                                                                                                             |
| 429        | Invalid request, too many requests.                  | The user has sent too many requests in a given amount of time or attempting to send a duplicate request. Please check and retry.                                               |
| 500        | Internal server error.                               | The server encountered an error. Please, try again. If issue persists then contact support at <support@frslabs.com>.                                                           |
| 502        | Bad gateway error.                                   | The server has received an invalid response. If issue persists then contact support.                                                                                           |
| 503        | Service unavailable.                                 | The server is currently unable to handle your request due to a temporary overloading or maintenance of the server. Please, try again. If issue persists then contact support.  |
| 505        | HTTP version not supported.                          | The server can't handle the http version used in the request. We support http 2.0 and http 1.0 version. Please, contact support.                                               |

**Error Response Parameters**

| Parameter  | Description                                                                                                                                                                             |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| error type | The type of error that is aligned to the http error code e.g. resource not found.                                                                                                       |
| message    | A descriptive message for the developer to handle the error.                                                                                                                            |
| fields     | "fields" are presented when there are validation schema errors. This will inform the developer of the particular input param that is wrong. For all other errors 'fields' will be null. |

**Sample Error Responses**

```
          {
                "error": {
                    "type": "resource_not_found",
                    "message": "The requested resource doesn't exist.",
                    "fields": "null"
                }
            }

```

```
// Example validation error with improper input. Here the field 'file_batch' has an invalid input value. 

{
                "error": {
                    "type": "validation_error",
                    "message": "null",
                    "fields": [
                        {
                            "file_batch": {
                                "message": "Invalid Input value. The maximum file_batch limit is 25 images."
                            }
                        }
                    ]
                }
            }
```

## Document Types

The list of countries and the IDs supported for OCR can be found here. If you do not find your ID here, please contact <support@frslabs.com>. We have a generic OCR engine from which the key value pairs are generated and we can quickly add your desired ID document once we process it through our OCR engine.

<table data-header-hidden><thead><tr><th></th><th width="297.3333333333333"></th><th></th></tr></thead><tbody><tr><td><strong>Country</strong></td><td><strong>ID Name</strong></td><td><strong>ID Type</strong> </td></tr><tr><td>India</td><td>PERMANENT ACCOUNT NUMBER</td><td>PAN</td></tr><tr><td>India</td><td>PAN CORPORATE</td><td>PAN</td></tr><tr><td>India</td><td>AADHAAR FRONT</td><td>ADR</td></tr><tr><td>India</td><td>AADHAAR BACK</td><td>ADR</td></tr><tr><td>India</td><td>PAPPORT FRONT</td><td>PPT</td></tr><tr><td>India</td><td>PASSPORT BACK (INDIA)</td><td>PPT</td></tr><tr><td>India</td><td>VOTER FRONT</td><td>VID</td></tr><tr><td>India</td><td>VOTER BACK</td><td>VID</td></tr><tr><td>India</td><td>CHEQUE (INDIA)</td><td>CHQ</td></tr><tr><td>India</td><td>DRIVING LICENCE</td><td>DRV</td></tr><tr><td>India</td><td>REGISTRATION CERTIFICATE</td><td>RC</td></tr><tr><td>Global</td><td>PASSPORT FRONT</td><td>PPT</td></tr><tr><td>Global</td><td>NATIONAL ID</td><td>NID</td></tr><tr><td>Philippines</td><td>TIN</td><td>TIN</td></tr><tr><td>Philippines</td><td>UMID</td><td>UMID</td></tr><tr><td>Philippines</td><td>VOTER FRONT</td><td>VID</td></tr><tr><td>Philippines</td><td>PASSPORT FRONT</td><td>PPT</td></tr><tr><td>Philippines</td><td>DRIVING LICENCE</td><td>DRV</td></tr><tr><td>Indonesia</td><td>NPWP</td><td>NPWP</td></tr><tr><td>Indonesia</td><td>KTP</td><td>KTP</td></tr><tr><td>Indonesia</td><td>PASSPORT FRONT</td><td>PPT</td></tr><tr><td>Indonesia</td><td>DRIVING LICENCE</td><td>DRV</td></tr><tr><td>Italy</td><td>NATIONAL ID</td><td>NID</td></tr><tr><td>Italy</td><td>DRIVING LICENCE</td><td>DRV</td></tr><tr><td>Malaysia</td><td>MYKAD</td><td>NID</td></tr><tr><td>UAE</td><td>CHEQUE (UAE)</td><td>CHQ</td></tr><tr><td>UAE</td><td>NATIONAL ID</td><td>NID</td></tr></tbody></table>

## Country Codes

The supported country codes to be passed as parameters are outlined below.

| **Country**          | **Code** |
| -------------------- | -------- |
| Australia            | AUS      |
| Austria              | AUT      |
| Bahrain              | BHR      |
| Belgium              | BEL      |
| Canada               | CAN      |
| Denmark              | DNK      |
| Egypt                | EGY      |
| Finland              | FIN      |
| France               | FRA      |
| Germany              | DEU      |
| Greece               | GRC      |
| Greenland            | GRL      |
| Hungary              | HUN      |
| Iceland              | ISL      |
| India                | IND      |
| Indonesia            | IDN      |
| Ireland              | IRL      |
| Israel               | ISR      |
| Italy                | ITA      |
| Japan                | JPN      |
| Malaysia             | MYS      |
| Philippines          | PHL      |
| Poland               | POL      |
| Portugal             | PRT      |
| United Arab Emirates | ARE      |
| United Kingdom       | GBR      |
| United States        | USA      |

## Test in Postman

Postman is a simple application to test the APIs without having to write a line of code. This is pretty useful to have our APIs tested for your business needs before beginning your integration work. You can follow these steps to test our APIs in about 10 minutes.

{% hint style="info" %}
Please ensure that you have Postman installed before you attempt the above steps. You can get postman from <https://www.postman.com/downloads&#x20>;
{% endhint %}

Step 1 – Once you have installed Postman, you can download our API collections by clicking on “Run in Postman” button from our API page.

![](/files/ieWJyiseCI7j8EcvmzU6)

Step 2 – Click on “Postman for Windows” or “Run for MAC” in “Run in Postman” window.

![](/files/fcENCYe1CwLM84gFu76u)

Step 3 – Now the “API Documentation” collection will be imported to your system postman.

![](/files/C56lbsFvO30K5hr08CRR)

Step 4 – Click on the API from the Collections and go to the Authorization tab and fill in the Basic Auth credentials (Username and Password) received from FRS Labs.

![](/files/wI65ZycTL6xl0mJTQkxt)

Step 5 – Now you have to pass values in “Params” and “Body” referring to the [API documentation](https://documenter.getpostman.com/view/12409759/UVsMvkkY).&#x20;

![](/files/-MboDowp3nK-AnLOTuX4)

Step 6 – Now click on “Send” to get a response.

![](/files/-MboDxCjEBgG31-X8l4U)

## **Core Resources**

{% hint style="info" %}

### [<mark style="color:blue;">**View the full v2 API documentation**</mark>](https://documenter.getpostman.com/view/12409759/UVsMvkkY)

{% endhint %}


# SDK

Native SDKs are provided for Android and iOS. The SDKs are provided as individual lego blocks for you to build your own great customer onboarding experience.

### Text Recognition OCR **(OCTUS)**

Octus SDK uses advanced deep learning technologies for accurate and fast ID scanning and OCR. Businesses can integrate the Octus SDK into native Android Apps which comes with pre-built screens and configurations. The SDK returns the scanned images, extracted data and error codes. And as a security measure, the SDK does not store any of the personal data or ID images that are scanned.

[Andr](https://github.com/frslabs/octus-android)[oid](https://github.com/frslabs/octus-android)     [iOS](https://github.com/frslabs/octus-ios)

**--**

### Face Recognition (FORUS)

Forus SDK comes with a simple screen with multiple instructions to capture a perfect KYC compliant photograph. The SDK comes with compression, blur and exposure detection as standard.

[Android](https://github.com/frslabs/forus-android)      [iOS](https://github.com/frslabs/forus-ios)&#x20;

**--**

### **Capture Image (CAPTUS)**

The Captus SDK is a set of screens to capture the front and back images of ID documents. It also allows the user to manually verify that the documents are clean and clear. This SDK is useful for IDs that cannot be processed on the mobile and needs server-side processing. Or when the Client prefers a web and client responsive design whereby all of the processing happens on the server-side through our APIs.

[Android](https://github.com/frslabs/captus-android)     [iOS](https://github.com/frslabs/captus-ios)&#x20;

**--**

### **Aadhaar Offline (OCTUS)**

Aadhaar Paperless Offline eKYC is a secure and shareable document which can be used by any Aadhaar holder for offline verification of identification. The Aadhaar Offline document can be obtained from the UIDAI website. This SDK provides a simple plugin to your mobile App which allows the user to seamlessly share their offline Aadhaar file with the service provider.

There are two ways the SDK can be configured within your App. The first one is an in-app experience whereby the pre-built screens will allow the Aadhaar holder to enter the Aadhaar Number or VID, Captcha, OTP and four-digit share code all within your App without redirecting to the UIDAI website. The Aadhaar Offline file once downloaded will be parsed in-memory and displayed in the App (data shared with the App as JSON data). The experience is seamless with optimised user experience.

The second option is to redirect the user to the UIDIAI website and allow the user to follow the instructions provided by the website. The user can enter the Aadhaar Number or VID, captcha, OTP and four-digit share code in the website. Once the data is validated by UIDAI, a ZIP file (password protected using the share code) will be downloaded into the resident’s device. The user will now have to switch back to your App and select the file from the devices download folders which will parse the data and display them in the App (data shared with the App as JSON data).

In both cases, the Aadhaar Offline file will be validated for its digital signature and the KYC data of The Aadhaar holder will be passed to the integrating App as JSON data.

[Android](https://github.com/frslabs/octus-aadhar-offline-android)     [iOS](https://github.com/frslabs/octus-aadhaar-offline-ios)&#x20;

**--**

### **Unassisted Video KYC (VIDUS)**

Unassisted Video KYC refers to the End User completing all of the KYC steps without manual intervention. The Vidus SDK comes with a set of screens and configurations to record live video of customers. Each of the recording options in the SDK are called nodes which can be configured by developers. The different recording nodes are provided for great flexibility for developers to create rich Video KYC flows from a single SDK.

[Android](https://github.com/frslabs/vidus-android)     [iOS](https://github.com/frslabs/vidus-ios)&#x20;


