back  Back to APIs
subscribe

Remaining API Counts:

{{(token.limit-token.counter) || '0' }}
Remaining API Count : {{(token.limit-token.counter) || '0' }}

API Overview

Arya’s CKYC module facilitates integration with CERSAI’s CKYC repository for document retrieval using any ID information for both individual and a legal entity.Central KYC Registry is a centralised repository that maintains all the records with unique CKYC Number which is associated with ID Proof, address proof, signature specimen, photo. With the use of this repository, any financial institution can complete their customer’s KYC without having to ask them for providing the necessary documents.

try it out

( Click on the image to enlarge )

More than just the API

Explore the top features of CKYC Module

Streamlines the complete process of interaction with the central KYC repository

Automatic tagging of documents received from repository

Combined with Aadhaar Masking

Handling of any changes or tech updates for integration with Cersai

Understanding CKYC

Explore more about what CKYC means, how the module works, requirements to make this process simpler and easy for integration. With our document, all your answers are in a single place.

Read More

CKYC - Conquering KYC

Provide a seamless customer onboarding experience with CKYC API. Arya's CKYC module streamlines the complete process of interaction with the central KYC repository. We meticulously parse through the numerous parameters retrieved from the look up and filter and assess only those that will be of actual importance to our clients for the KYC process.

Read More

Try the API

Please enter details.

Please wait...

Samples to try

Check out the API results using samples provided below.

Your document is extracted successfully.

PAN : {{pan}}

DOB : {{dob}}

ID Number : {{pan}}

ID Type : {{id_type}}

DOB : {{dob}}

Full name : {{full_name}}

Gender : {{gender}}

Images :

Personal Details :

{{k}}

{{v || '-'}}

{{output.ckyc_remarks}}


Setup

Please enter the following details

Following is the IP address and file dowload link

FI Code

{{ckyc_setup_fi_code}}

IP address to be whitelisted

{{ckyc_setup_ip}}  Copy

Certificate file

Click to download


Steps for Whitelist Process on CERSAI portal

Step 1 - Login with Admin user credentials for your FI Code on CERSAI Portal

Step 2 - Go to “User Management” → “Upload Public Key”

Step 3 - Upload .cer from downloaded zip file and click Submit (Portal will show “Files uploaded successfully”)

Step 4 - Add above mentioned IP address in the given text box and click on “Save” (Portal will show “IP addresses saved successfully in the system”)

Reference Image

Once the above steps are completed, test the connectivity using the ‘Test API Connectivity” button below. Feel free to contact the support team for any queries.

Documentation

POST

{{url}}/api/{{api_version}}/ckyc

API Token

  Regenerate

{{tokenDisplay}}  

Usage and Code Samples

curl --location --request POST '{{url}}/api/v1/ckyc' \
--header 'token: < your private token >' \
--header 'content-type: application/json' \
--data-raw '{
	"pan": '< pan string >', 
	"dob": '< dob string >',
	"req_id": '< req id string >'
}'
																						
OkHttpClient client = new OkHttpClient().newBuilder().build();
  MediaType mediaType = MediaType.parse("application/javascript");
  RequestBody body = RequestBody.create(mediaType, "{ 	"pan": '< pan string >', "dob": '< dob string >',"req_id": '< req id string >'  }");
  Request request = new Request.Builder()
	.url("{{url}}/api/v1/ckyc")
	.method("POST", body)
	.addHeader("token", "< your private token >")
	.addHeader("content-type", "application/json")
	.build();
  Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("{{url}}/api/v1/ckyc")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["token"] = "< your private token >"
request["content-type"] = "application/json"
request.body = "{"pan": '< pan string >', "dob": '< dob string >', "req_id": < req id string >  }"
response = https.request(request)
puts response.read_body
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
  curl_easy_setopt(curl, CURLOPT_URL, "{{url}}/api/v1/ckyc");
  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
  curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
  struct curl_slist *headers = NULL;
  headers = curl_slist_append(headers, "token: < your private token >");
  headers = curl_slist_append(headers, "content-type: application/json");
  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
  const char *data = "{"pan": '< pan string >', "dob": '< dob string >', "req_id": < req id string >  }";
  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
  res = curl_easy_perform(curl);
}
curl_easy_cleanup(curl);
																					
var request = require('request');
var options = {
  'method': 'POST',
  'url': '{{url}}/api/v1/ckyc',
  'headers': {
	'token': '< your private token >',
	'content-type':'application/json'
  },
  body: '{ "pan": '< pan string >', "dob": '< dob string >', "req_id": < req id string >  }'
	};
	request(options, function (error, response) {
	if (error) throw new Error(error);
console.log(response.body);
});
var client = new RestClient("{{url}}/api/v1/ckyc");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("token", "< your private token >");
request.AddHeader("content-type", "application/json");
var body = @"{" + "" +
@"    "dob": '< dob string >'," + "" +
@"    "pan": '< pan string >'," + "" +
@"    "req_id": < req id string >" + "" +
@"  }";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{url}}/api/v1/ckyc');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
  'token' => '< your private token >',
  'content-type' => 'application/json'
));
$request->setBody('{"pan": '< pan string >', "dob": '< dob string >', "req_id": < req id string >  }');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
	echo $response->getBody();
  }
  else {
	echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
	$response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
?>
use Data::Dumper;
use WWW::SwaggerClient::Configuration;
use WWW::SwaggerClient::DefaultApi;
my $api_instance = WWW::SwaggerClient::DefaultApi->new();
my $body = WWW::SwaggerClient::Object::V1_lengthofstayprediction_body->new(); # V1_lengthofstayprediction_body | 
my $token = token_example; # String | 
eval { 
	my $result = $api_instance->apiV1LengthOfStayPredictionPost(body => $body, token => $token, content-type=>'application/json');
	print Dumper($result);
};
if ($@) {
	warn "Exception when calling DefaultApi->apiV1LengthOfStayPredictionPost: $@";
}
																				
import requests
url = "{{url}}/api/v1/ckyc"
payload = {"pan": '< pan string >', "dob": '< dob string >', "req_id": < req id string >  }
headers = {
  'token': '< your private token >',
  'content-type':'application/json'
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
	
curl --location --request POST '{{url}}/api/v1/ckyc' \
--header 'token: < your private token >' \
--header 'content-type: application/json' \
--data-raw '{
	"id_type": '< string >', 
	"id_num": '< string >', 
	"full_name": '< string >', 
	"gender": '< string >', 
	"dob": '< string >',
	"req_id": '< req id string >'
}'
																						
OkHttpClient client = new OkHttpClient().newBuilder().build();
  MediaType mediaType = MediaType.parse("application/javascript");
  RequestBody body = RequestBody.create(mediaType, "{ 	"id_num": '< string >',	"id_type": '< string >',	"full_name": '< string >',	"gender": '< string >', "dob": '< string >',"req_id": '< req id string >'  }");
  Request request = new Request.Builder()
	.url("{{url}}/api/v1/ckyc")
	.method("POST", body)
	.addHeader("token", "< your private token >")
	.addHeader("content-type", "application/json")
	.build();
  Response response = client.newCall(request).execute();
require "uri"
require "net/http"
url = URI("{{url}}/api/v1/ckyc")
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true
request = Net::HTTP::Post.new(url)
request["token"] = "< your private token >"
request["content-type"] = "application/json"
request.body = "{"id_num": '< string >',	"id_type": '< string >',	"full_name": '< string >',	"gender": '< string >', "dob": '< string >',"req_id": '< req id string >'  }"
response = https.request(request)
puts response.read_body
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
  curl_easy_setopt(curl, CURLOPT_URL, "{{url}}/api/v1/ckyc");
  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
  curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
  struct curl_slist *headers = NULL;
  headers = curl_slist_append(headers, "token: < your private token >");
  headers = curl_slist_append(headers, "content-type: application/json");
  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
  const char *data = "{"id_num": '< string >',	"id_type": '< string >',	"full_name": '< string >',	"gender": '< string >', "dob": '< string >',"req_id": '< req id string >'  }";
  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
  res = curl_easy_perform(curl);
}
curl_easy_cleanup(curl);
																					
var request = require('request');
var options = {
  'method': 'POST',
  'url': '{{url}}/api/v1/ckyc',
  'headers': {
	'token': '< your private token >',
	'content-type':'application/json'
  },
  body: '{ "id_num": '< string >',	"id_type": '< string >',	"full_name": '< string >',	"gender": '< string >', "dob": '< string >',"req_id": '< req id string >'  }'
	};
	request(options, function (error, response) {
	if (error) throw new Error(error);
console.log(response.body);
});
var client = new RestClient("{{url}}/api/v1/ckyc");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("token", "< your private token >");
request.AddHeader("content-type", "application/json");
var body = @"{" + "" +
@"    "dob": '< string >'," + "" +
@"    "id_type": '< string >'," + "" +
@"    "id_num": '< string >'," + "" +
@"    "full_name": '< string >'," + "" +
@"    "gender": '< string >'," + "" +
@"    "req_id": < req id string >" + "" +
@"  }";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{url}}/api/v1/ckyc');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
  'token' => '< your private token >',
  'content-type' => 'application/json'
));
$request->setBody('{"id_num": '< string >',	"id_type": '< string >',	"full_name": '< string >',	"gender": '< string >', "dob": '< string >',"req_id": '< req id string >'  );
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
	echo $response->getBody();
  }
  else {
	echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
	$response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
?>
use Data::Dumper;
use WWW::SwaggerClient::Configuration;
use WWW::SwaggerClient::DefaultApi;
my $api_instance = WWW::SwaggerClient::DefaultApi->new();
my $body = WWW::SwaggerClient::Object::V1_lengthofstayprediction_body->new(); # V1_lengthofstayprediction_body | 
my $token = token_example; # String | 
eval { 
	my $result = $api_instance->apiV1LengthOfStayPredictionPost(body => $body, token => $token, content-type=>'application/json');
	print Dumper($result);
};
if ($@) {
	warn "Exception when calling DefaultApi->apiV1LengthOfStayPredictionPost: $@";
}
																				
import requests
url = "{{url}}/api/v1/ckyc"
payload = {"id_num": '< string >',	"id_type": '< string >',	"full_name": '< string >',	"gender": '< string >', "dob": '< string >',"req_id": '< req id string >'  }
headers = {
  'token': '< your private token >',
  'content-type':'application/json'
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
	

Request Parameters

Header parameters

Name Description
token
String

Body parameters

Name Description
body {
  "req_id" : < string >,
  "dob": < string >,
  "pan": < string >,
}

Response Parameters

Status: 200 - API Request Successful

Body parameters

Name Description
body {
  "req_id" : < string >,
  "success" : < flag >,
  "error_message" : < string >,
  "ckyc_remarks" : < string >,
  "result" : < dict >,
}

Field Details

Fields Values/Description
req_id Request ID used for processing requests
dob Date of Birth of PAN Holder (dd-mm-yyyy)
pan PAN ID number to be searched

Response Field Details

Fields Values/Description
req_id Corresponding request id
success Flag if the request is processed successfully
error_message If success is False then: Error message
ckyc_remarks Remarks in case record not found on CKYC
result Dictionary of parameters as retrieved from CKYC search

Request Parameters

Header parameters

Name Description
token
String

Body parameters

Name Description
body {
  "req_id" : < string >,
  "id_type": < string >,
  "id_num": < string >,
  "full_name": < string >,
  "gender": < string >,
  "dob": < string >,
}

Response Parameters

Status: 200 - API Request Successful

Body parameters

Name Description
body {
  "req_id" : < string >,
  "success" : < flag >,
  "error_message" : < string >,
  "ckyc_remarks" : < string >,
  "result" : < dict >,
}

Field Details

Fields Values/Description
req_id Request ID used for processing requests
dob Date of Birth of ID Holder (dd-mm-yyyy)
id_type One out of: PAN, AADHAR, DL, PASSPORT, VOTER, CKYC, CORP_PAN, CIN
id_num Corresponding ID value for mentioned id_type
full_name Full name string
gender Allowed Values: “M” or “F” or “T”

Response Field Details

Fields Values/Description
req_id Corresponding request id
success Flag if the request is processed successfully
error_message If success is False then: Error message
ckyc_remarks Remarks in case record not found on CKYC
result Dictionary of parameters as retrieved from CKYC search