Skip to main content

CKYC Validation API v1

The following document highlights the details of the CKYC Validation API v1.

API Description

Objective

The CKYC Validation API v1 verifies a user's personally identifiable information (PII) downloaded from their record in the Central KYC Registry and classifies the response into one of three outcomes based on an internal scoring mechanism: Approve, Review, or Reject.

InputOutput
The user's record from the Central KYC Registry, including the user's selfie, XML file, and officially valid documentsThe classification result after matching the user's details across all of these files

API URL

https://ind-ckyc.hyperverge.co/api/v1/validate

API Endpoint

validate

Overview

The CKYC Validation API v1 is RESTful and uses standard HTTP verbs and status codes. The responses are in JSON format, and you should upload all images and files as form-data through a POST request.

Method - POST

Authentication

You need a unique pair of application ID (appId) and application key (appKey) from HyperVerge to verify your identity for accessing the CKYC Validation API v1.

Headers

HeaderMandatory / OptionalDescriptionInput Format
content-typeMandatoryDefines the media type for the request payloadmultipart/form-data
appIdMandatoryThe application ID shared by HyperVerge. You can find the details in the dashboard's credentials tabThis should be a unique value
appKeyMandatoryThe application key shared by HyperVerge. You can find the details in the dashboard's credentials tabThis should be a unique value
transactionIdMandatoryA unique identifier for tracking a user journeyThis should be both unique and easily associated with the user's journey in your application(s)

Inputs

The following table provides the details of the parameters required for the CKYC Validation API v1's request body:

ParameterMandatory / OptionalTypeDescriptionInput FormatDefault Value
first_nameOptionalstringThe first name of the userString without special charactersNot Applicable
middle_nameOptionalstringThe middle name of the userShould be a stringNot Applicable
last_nameOptionalstringThe last name of the userShould be a stringNot Applicable
full_nameOptionalstringThe full name of the userShould be a stringNot Applicable
dobOptionalstringThe date of birth of the userDD-MM-YYYYNot Applicable
address1OptionalstringThe primary address line of the userShould be a stringNot Applicable
address2OptionalstringThe secondary address line of the userShould be a stringNot Applicable
address3OptionalstringThe tertiary address line of the userShould be a stringNot Applicable
cityOptionalstringThe city of residence of the userShould be a stringNot Applicable
districtOptionalstringThe district of residence of the userShould be a stringNot Applicable
stateOptionalstringThe state of residence of the userShould be a stringNot Applicable
countryOptionalstringThe country of residence of the userShould be a stringNot Applicable
pincodeOptionalstringThe postal code of residence of the userShould be a stringNot Applicable
aadhaarSelectively Optional: at least one of voter_id, passport, aadhaar, or driving_license is requiredstringThe Aadhaar number of the userShould be a valid Aadhaar numberNot Applicable
driving_licenseSelectively Optional: at least one of voter_id, passport, aadhaar, or driving_license is requiredstringThe driving license number of the userShould be a valid driving license numberNot Applicable
voter_idSelectively Optional: at least one of voter_id, passport, aadhaar, or driving_license is requiredstringThe voter ID number of the userShould be a valid voter ID numberNot Applicable
passportSelectively Optional: at least one of voter_id, passport, aadhaar, or driving_license is requiredstringThe passport number of the userShould be a valid passport numberNot Applicable
panOptionalstringThe PAN number of the userShould be a valid PAN numberNot Applicable
validate_panOptionalstringIndicates whether to validate the PAN numberyes / noNot Applicable
mask_aadhaarOptionalstringIndicates whether to mask the Aadhaar number in the responseyes / noNot Applicable
image_detailsSelectively Optional: mandatory if imageDetails is not providedfile

The image file(s) containing the user's supporting documents to be validated against the input fields. You can also include a photo of the user for face match authentication.

File Naming Convention

For each image, the file name must contain one of the following document identifiers or names:

IdentifierDocument Name
02Photo
03PAN
04Proof of possession of Aadhaar
05Passport
06Driving Licence
07Voters ID

Accepted file formats: JPEG, PNG, TIFF, PDF. Base64 encoding is not accepted. For example, any of the following names is acceptable for an Aadhaar input: aadhaar.pdf, xyz_04_.pdf, xyz_aadhaar.pdf

Multipart file upload. File name must contain the document identifier or nameNot Applicable
imageDetailsSelectively Optional: mandatory if image_details is not providedobjectAllows sending images using URLs with an acceptable document code. Includes the code of the KYC document and the URL containing the image or PDFObject with valid image URL stringsNot Applicable
returnOcrDumpOptionalstringIf set to "yes", the response includes an additional ocrDump field with OCR-extracted text from each attached fileyes / nono
standardOcrDumpOptionalstringIf set to "yes", the response includes a standard ocrDump field with structured OCR-extracted text from each attached fileyes / nono
returnMaskedAadhaarNumberOptionalstringIf set to "yes", the user's Aadhaar value is masked in the responseyes / nono
returnInputImageOptionalstringIf set to "yes", the response includes an inputImageUrls key containing URLs of the input filesyes / nono
returnSingleMaskedFileOptional: works only when mask_aadhaar is enabledstringIf set to "yes", the response includes a masked_aadhaar_url key containing a single merged file of the masked Aadhaar documents. When not enabled, masked files are returned as individual unmerged documentsyes / nono

Request

The following code snippet demonstrates a standard curl request for the CKYC Validation API v1:

curl --location --request POST 'https://ind-ckyc.hyperverge.co/api/v1/validate' \
--header 'Content-Type: multipart/form-data' \
--header 'appId: <Enter_the_App_ID>' \
--header 'appKey: <Enter_the_App_Key>' \
--header 'transactionId: <Enter_the_Transaction_ID>' \
--form 'first_name="<Enter_the_First_Name>"' \
--form 'last_name="<Enter_the_Last_Name>"' \
--form 'dob="<Enter_the_Date_Of_Birth>"' \
--form 'address1="<Enter_the_Address_1>"' \
--form 'address2="<Enter_the_Address_2>"' \
--form 'address3="<Enter_the_Address_3>"' \
--form 'city="<Enter_the_City>"' \
--form 'district="<Enter_the_District>"' \
--form 'state="<Enter_the_State>"' \
--form 'country="<Enter_the_Country>"' \
--form 'pincode="<Enter_the_Pincode>"' \
--form 'mask_aadhaar="<Enter_the_Yes_Or_No>"' \
--form 'image_details=@"<Enter_the_File_Path>"' \
--form 'pan="<Enter_the_PAN>"' \
--form 'validate_pan="<Enter_the_Yes_Or_No>"' \
--form 'aadhaar="<Enter_the_Aadhaar_Number>"' \
--form 'standardOcrDump="<Enter_the_Yes_Or_No>"' \
--form 'returnOcrDump="<Enter_the_Yes_Or_No>"'

Success Response

The following code snippet demonstrates a success response from the CKYC Validation API v1:

{
"status": "success",
"statusCode": "200",
"result": {
"action": "<Action>",
"validPOA": ["<Document_Type>"],
"validPOI": ["<Document_Type>"],
"invalidDocs": {},
"details": {
"aadhaar": {
"first_name": {
"matchFound": "<Match_Found>",
"score": "<Match_Score>"
},
"last_name": {
"matchFound": "<Match_Found>",
"score": "<Match_Score>"
},
"address1": {
"matchFound": "<Match_Found>",
"score": "<Match_Score>"
},
"dob": {
"matchFound": "<Match_Found>",
"score": "<Match_Score>"
},
"aadhaar": {
"matchFound": "<Match_Found>",
"score": "<Match_Score>"
},
"faceMatch": {
"matchFound": "<Match_Found>",
"score": "<Match_Score>"
},
"doc_template": ["<Doc_Template>"]
}
},
"aadhaar_type": "<Aadhaar_Type>",
"masked_aadhaar_url": ["<Masked_Aadhaar_URL>"]
}
}

Success Response Details

The following table outlines the details of the success response from the CKYC Validation API v1:

ParameterTypeDescription
statusstringThe status of the request
statusCodestringThe HTTP status code for the response
resultobjectThe JSON object containing the validation result details
result.actionstringThe validation outcome: approve (minimum weighted score less than 2), manual_review (score equal to 2), or reject (score greater than 3)
result.validPOAarrayList of documents that passed validation as Proof of Address
result.validPOIarrayList of documents that passed validation as Proof of Identity
result.invalidDocsobjectDocuments that failed validation, mapped to their associated error codes. Valid documents include aadhaar, passport, driving_license, and voter_id
result.detailsobjectPer-document breakdown of field-level match results
result.details.[document].[field].matchFoundbooleanIndicates whether the field value extracted from the document matches the input data
result.details.[document].[field].scorenumberThe match confidence score for the field (0–100)
result.details.[document].doc_templatearrayThe document template(s) identified during OCR processing
result.aadhaar_typestringThe type of Aadhaar document detected (e.g., STANDARD)
result.masked_aadhaar_urlarray of stringsURLs to the user's masked Aadhaar image with the first 8 digits masked. Valid for 15 minutes. Returned only when mask_aadhaar is set to "yes"

Error Responses

The following are some error responses from the CKYC Validation API v1:

{
"status": "fail",
"statusCode": "400",
"error": {
"code": "ER_REQ_VALIDATE",
"message": "first_name should not be null or undefined"
}
}

Error Response Details

A failure or error response contains a fail or failure status with a relevant status code and error message. The following table lists the error responses for the CKYC Validation API v1:

Status CodeError MessageError DescriptionError Resolution
400first_name should not be null or undefinedA mandatory field was not provided in the requestInclude the required field in the request body
400Selfie image not sent as part of the payloadThe selfie image was not included in the request payloadInclude the selfie image in the request
400pages exceeded the supported length of 5The submitted document exceeds the maximum supported length of 5 pagesReduce the document to 5 pages or fewer before submitting
401Missing/Invalid credentialsThe request is missing the mandatory appId and appKey combination or has invalid valuesVerify and provide valid credentials
413File too largeThe submitted file size exceeds the maximum allowed limit of 6 MBReduce the file size below 6 MB before submitting
500Internal Server ErrorKindly check the request headers or contact the HyperVerge team for resolutionCheck the request headers or contact the HyperVerge team for resolution
Was this helpful?
Ask AIBeta
Hi! How can I help?
Ask me anything about HyperVerge products, APIs, and SDKs.
Try asking: