Skip to main content

CKYC Validation API v2

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

API Description

Objective

The CKYC Validation API v2 verifies the quality and usability of documents retrieved from the Central KYC (CKYC) registry. It checks downloaded documents for readability, accuracy, and alignment with CKYC XML data.

InputOutput
CKYC XML data and document images (OVDs) downloaded from the CKYC registryA validation result indicating whether the document is approved, flagged for manual review, or rejected, along with per-field match scores and OCR details

API URL

http://ind-ckyc.hyperverge.co/api/v2/validate

API Endpoint

validate

Overview

The CKYC Validation API v2 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 v2.

Headers

HeaderMandatory / OptionalDescriptionInput Format
content-typeMandatoryThis parameter defines the media type for the request payloadmultipart/form-data
appidMandatoryThe application identifier 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 v2's request body:

ParameterMandatory / OptionalTypeDescriptionInput FormatDefault Value
first_nameMandatorystringUser's first name as declared in the CKYC XMLShould be a string without special charactersNot Applicable
address1MandatorystringPrimary address line as declared in the CKYC XMLShould be a stringNot Applicable
dobMandatorystringUser's date of birth as declared in the CKYC XMLYYYY-MM-DDNot Applicable
middle_nameOptionalstringUser's middle nameShould be a stringNot Applicable
last_nameOptionalstringUser's last nameShould be a stringNot Applicable
full_nameOptionalstringUser's full nameShould be a stringNot Applicable
address2OptionalstringSecondary address lineShould be a stringNot Applicable
address3OptionalstringTertiary address lineShould be a stringNot Applicable
cityOptionalstringCity nameShould be a stringNot Applicable
districtOptionalstringDistrict nameShould be a stringNot Applicable
stateOptionalstringState nameShould be a stringNot Applicable
countryOptionalstringCountry nameShould be a stringNot Applicable
pincodeOptionalstringPostal codeShould be a stringNot Applicable
passportOptionalstringPassport numberShould be a string and a valid passport numberNot Applicable
aadhaarOptionalstringAadhaar numberShould be a string and a valid Aadhaar numberNot Applicable
driving_licenseOptionalstringDriving license numberShould be a string and a valid driving license numberNot Applicable
voter_idOptionalstringVoter ID numberShould be a string and a valid voter ID numberNot Applicable
image_detailsOptionalfile[]

Document images (OVDs) downloaded from the CKYC registry to be validated.

Upload Criteria for OVD Files
  • Maximum file size: 5MB per file
  • Supported formats: PDF, JPG, PNG, TIFF
  • The file name must contain one of the following document identifiers or names:

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

For example, any of the following names is acceptable for an Aadhaar input: aadhaar.pdf, xyz_04_.pdf, xyz_aadhaar.pdf, photo_self.jpg, passport_xyz.pdf

Multipart file upload. The file name must contain the document identifier or name (e.g., aadhaar.pdf, xyz_04_.pdf)Not Applicable
returnInputImageOptionalstringReturns the input image in the response when enabledyes / nono
returnOcrDumpOptionalstringReturns the OCR dump data in the response when enabledyes / nono
standardOcrDumpOptionalstringReturns the standard OCR dump in the response when enabledyes / nono
weightsOptionalobject

Configures penalty scores for mismatches across individual fields. Higher weights indicate greater importance during scoring.

Default Penalty Scores

When not configured, the following default penalty scores are applied:

FieldDefault Penalty Score
name3
address2
city0
district0
state0
country0
pincode1
dob2
passport3
aadhaar3
driving license2
voter_id2
face2
Suggested guidelines:
  • ≥3: Critical fields (e.g., PAN, Aadhaar, DOB, Pincode, Name)
  • 2: Important fields (e.g., Address, State, Name)
  • 1: Optional fields (e.g., Address3)
JSON object with field names as keys and numeric penalty scores as valuesNot Applicable
e_scoreOptionalobjectDefines decisioning thresholds for the validation outcome: approve, manualReview, and reject. When not configured, default thresholds are appliedJSON object with approve, manualReview, and reject as keys and numeric thresholds as valuesapprove: 1, manualReview: 2, reject: 3
ignore_fieldsOptionalstring[]Excludes specific fields from validation and scoring. No penalty is applied for mismatched or missing fields in this list. When not configured, all fields are validatedJSON array, comma-separated string, or single stringNot Applicable

Request

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

curl --location 'http://ind-ckyc.hyperverge.co/api/v2/validate' \
--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 'city="<Enter_the_City>"' \
--form 'country="<Enter_the_Country>"' \
--form 'pincode="<Enter_the_Pincode>"' \
--form 'image_details=@"<Enter_the_File_Path>"' \
--form 'aadhaar="<Enter_the_Aadhaar_Number>"' \
--form 'return_ocr_d="<Enter_the_Yes_Or_No>"'

Advanced Request Variants

curl --location 'http://ind-ckyc.hyperverge.co/api/v2/validate' \
--header 'appid: <Enter_the_App_ID> ' \
--header 'appkey: <Enter_the_App_Key> ' \
--header 'transactionid: <Enter_the_Transaction_ID>' \
--form 'weights="{\"first_name\": 1,
\"middle_name\": 2,
\"last_name\": 3,
\"full_name\": 4,
\"address1\": 5,
\"address2\": 6,
\"address3\": 2,
\"city\": 1,
\"district\": 5,
\"state\": 2,
\"country\": 1,
\"pincode\": 4,
\"dob\": 1,
\"passport\": 2,
\"aadhaar\":5,
\"driving_license\": 1,
\"voter_id\": 2,
\"pan\": 3}"' \
--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 'city="<Enter_the_City>"' \
--form 'country="<Enter_the_Country>"' \
--form 'pincode="<Enter_the_Pincode>"' \
--form 'image_details=@"<Enter_the_File_Path>"' \
--form 'aadhaar="<Enter_the_Aadhaar_Number>"'

Success Response

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

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

Success Response Details

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

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 for the document: approve, manual_review, or reject
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
result.detailsobjectPer-document breakdown of field-level match results
result.details.[document].faceMatchobjectFace match result for the document, including matchFound (boolean) and score (0–100)
result.details.[document].[field].matchFoundbooleanIndicates whether the field value extracted from the document matches the CKYC XML 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)

Error Responses

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

{
"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 status with a relevant status code and error message. The following table lists the error responses for the CKYC Validation API v2:

Status CodeError MessageError DescriptionError Resolution
400first_name should not be null or undefinedThe mandatory first_name field was not provided in the requestInclude the first_name field in the request body
401Missing/Invalid credentialsThe request is either missing the mandatory appid and appkey combination or has invalid valuesVerify and provide valid appid and appkey credentials
500Internal Server ErrorKindly check the request headers or contact the HyperVerge team for resolution.Check 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: