Rest APIs For Version 2
Document OCR API
Method and URL
POST : https://api-dev.springscan.springverify.com/v4/ocr
Aadhaar
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/ocr' \
--header 'tokenKey: XXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "ind_aadhaar",
"success_parameters": ["id_number"],
"document_front" : "<document_front>",
"document_back":"<document_back>"
}'
Example Response (with all possible fields)
{
"configuration": {
"api_config": {
"api_action": "ocr",
"api_doc_type": "ind_aadhaar",
"api_doc_face": "both",
"api_status": "success",
"api_status_code": 200,
"api_status_code_description": "Successful Response for the given inputs.",
"request_id": "XXXXXXXXX",
"created_at": "Thu Jul 29 2021 18:01:53 GMT+0000 (UTC)",
"completed_at": "Thu Jul 29 2021 18:01:57 GMT+0000 (UTC)",
"person_id": "XXXXXXXXXX"
},
"success_config": {
"success_config_code": [
"id_number"
],
"success_config_code_description": "OCR will be successful if id_number is detected."
}
},
"output": {
"ocr": {
"id_number": "XXXXXXXXX",
"name": "XXXXXX",
"dob": "YYYY-MM-DD",
"yob": "YYYY",
"gender": "XXXX",
"address": "XXXXXXX",
"relative_name_1": "XXXX",
"relative_relationship_1": "XXXX",
"base64_face": "XXXX",
"status_ocr": "success",
"status_ocr_message": "id_number has been successfully detected"
}
}
}
Request Parameters
docType to indicate name of ID which would be detected.
success_parameter specifies the parameter that would determine whether OCR was success or failure. If no parameter is specified the default parameter would be id_number which means that status will be successful if ‘id_number’ is detected by OCR.
Response Description
The structure contains three sections.
Section I : The API configuration details
Section II : The values of various parameters detected by OCR
Section III : The overall OCR detection status.
Status comprised of:
status_ocr which can either success or failure
ocr_status_message detailed description specifying the detected of success_parameter
Success Parameters
Success Parameters |
Values |
|---|---|
Default |
id_number |
Pan Basic
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/ocr' \
--header 'tokenKey: XXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "ind_pan",
"success_parameters": ["id_number"],
"document_front" : "<document_front>"
}'
Success Parameters
Success Parameters |
Values |
|---|---|
Default |
id_number |
Supported |
id_number, name |
Driving License
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/ocr' \
--header 'tokenKey: XXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "ind_driving_license",
"success_parameters": ["id_number"],
"document_front" : "<document_front>",
"document_back":"<document_back>"
}'
Voter Id
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/ocr' \
--header 'tokenKey: XXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "ind_voter_id",
"success_parameters": ["id_number"],
"document_front" : "<document_front>",
"document_back":"<document_back>"
}'
Passport
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/ocr' \
--header 'tokenKey: XXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "ind_passport",
"success_parameters": ["id_number"],
"document_front" : "<document_front>",
"document_back":"<document_back>"
}'
Success Parameters
Success Parameters |
Values |
|---|---|
Default |
id_number, dob, passport_file_number |
Government Verification ( Input Manual OR Input OCR )
Generic Response Structure
The structure contains 10 sections.
Section I : API _CONFIG details about associated API call.
Section II : SUCCESS_CONFIG_MATCHING details about name_match_threshold, success parameters and success_configuration_description.
Section III : INPUT_OCR - details (will be NA when only manual input is passed)
Section IV : INPUT_MANUAL- details (will be NA when only OCR input is passed)
Section V : OUTPUT_OCR - detected details (will be NA when only manual input is passed)
Section VI : OUTPUT_SOURCE- details extracted from the source of an individual for PAN.
Section VII : OUTPUT_SOURCE_DERIVED - details derived from the sources for specific ID numbers.
Section VIII : OUTPUT _MATCHING _OCR_to_SOURCE - it denotes the matching of OCR’d values against source values.The matching values are in boolean for any numeric type parameter and score bases value in the range of 0-100 for any alphanumeric type parameter.
Section IX : OUTPUT_MATCHING_MANUAL_to_SOURCE - it denotes the matching of manual input values against source values.The matching values are in boolean for any numeric type parameter and score bases value in the range of 0-100 for any alphanumeric type parameter.
Section X : STATUS - there 4 different attributes of status
Status Attributes:
got_source_response boolean value to indicate if the details were available from source or not.
status_matching is either success or fail based on the matching of success_parameters against source.
status_based_on denotes the type of input selected for determining the input for status_matching. Its value can be either ‘OCR Input’ or ‘Manual Input’.
status_matching_message a descriptive message that specifies which of the success_parameters have been verified against the source.
Method and URL
POST : https://api-dev.springscan.springverify.com/v4/databaseCheck
Aadhaar Basic
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/databaseCheck' \
--header 'tokenKey: XXXXXXXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "ind_aadhaar",
"name_match_threshold": 50,
"personId": "XXXXXXXXXXXXX",
"success_parameters" : ["id_number"],
"request_id": "XXXXXX-XXXX-XX-XXXX"
}'
Example Response (with all possible fields)
{
"configuration": {
"api_config": {
"api_action": "verify",
"api_doc_type": "ind_aadhaar",
"api_doc_face": "NA",
"api_status": "success",
"api_status_code": 200,
"api_status_code_description": "Successful Response for the given inputs.",
"request_id": "XXXXXXXXXXXXXXXXXXXX",
"created_at": "Thu Jul 29 2021 13:10:10 GMT+0000 (UTC)",
"completed_at": "Thu Jul 29 2021 13:10:11 GMT+0000 (UTC)",
"person_id": "XXXXXXXXXXXXXXXXXXXX"
},
"success_config": {
"name_match_threshold": 50,
"success_parameter": [
"id_number"
],
"success_config_description": "Verification will be successful if id_number is matched."
}
},
"output": {
"ocr": {
"id_number": "XXXXXXXXXXXX",
"name": "XXXXXXXXXXX",
"dob": "YYYY-MM-DD",
"yob": "YYYY",
"gender": "MALE",
"address": "XXXX",
"relative_name_1": "XXX",
"relative_relationship_1": "XXX",
"base64_face": "XXX"
},
"source": {
"aadhaar_number": "XXXXXXXXXXXX",
"aadhaar_age_range": "XX-XX",
"gender": "MALE",
"mobile_number_last_3_digits": "XXX",
"state": "XXXXXXXX"
},
"derived": null
},
"matching": {
"ocr_to_source": {
"id_number": true,
"gender": true,
"state": true,
"aadhaar_age_range": true
},
"manual_to_source": "NA"
},
"status": {
"got_source_response": true,
"status_matching": "success",
"status_matching_based_on": "OCR",
"status_matching_message": {
"id_number": "verified"
}
}
}
Request Parameters
docType is applicable for both OCR & Manual input and indicates name of ID which would be detected.
success_parameter is applicable for both OCR & Manual input and specifies the parameter that would determine whether verification was success or failure. If no parameter is specified the default parameter would be used for determining success.
request_id is applicable for OCR input.Get the request_id by running the OCR on the document.
personId is applicable for both OCR & Manual input which is available from OCR/verification response. If you are running the API for the first time then this field can be blank.
manual_input is applicable only for Manual Input and are mandatory fields required for verification. This will be blank in case of verification based on Input OCR.
Success Parameters
Success Parameters |
Values |
|---|---|
Default |
id_number |
Response Description
matching_ocr_to_source and/or matching_manual_to_source :
id_number : true/false based on matching with source
Pan
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/databaseCheck' \
--header 'tokenKey: XXXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw ' {
"docType": "ind_pan",
"name_match_threshold": 100,
"personId": "XXXXXXXXXXXXX",
"request_id": "XXXXXXXXXXXXX",
"success_parameters": ["name"],
"manual_input": {
"id_number": "XXXXXXXX",
"dob": "DD-MM-YYYY",
"name": "XXXXXX"
}
}
'
Example Response (with all possible fields)
{
"configuration": {
"api_config": {
"api_action": "verify",
"api_doc_type": "ind_pan",
"api_doc_face": "NA",
"api_status": "success",
"api_status_code": 200,
"api_status_code_description": "Successful Response for the given inputs.",
"request_id": "XXXXXXXXXXXX",
"created_at": "Fri Jul 30 2021 04:37:20 GMT+0000 (UTC)",
"completed_at": "Fri Jul 30 2021 04:37:21 GMT+0000 (UTC)",
"person_id": "XXXXXXXXXXXXXXXXXX"
},
"success_config": {
"name_match_threshold": 100,
"success_parameter": [
"name"
],
"success_config_description": "Verification will be successful if name is matched."
}
},
"output": {
"ocr": "NA",
"source": {
"id_number": "XXXXXXXXXX",
"name": "XXXXXXXXX",
"dob": null
},
"derived": {
"pan_type": "XXXXXXXX",
"age": "XXXX",
"pan_holder_is_minor": "XXXXX"
}
},
"matching": {
"ocr_to_source": "NA",
"manual_to_source": {
"id_number": true,
"name": 55.55555555555556
}
},
"status": {
"got_source_response": true,
"status_matching": "failed",
"status_matching_based_on": "Manual Input",
"status_matching_message": {
"name": "not_verified"
}
}
}
Request Parameters
docType is applicable for both OCR & Manual input and indicates name of ID which would be detected.
success_parameter is applicable for both OCR & Manual input and specifies the parameter that would determine whether verification was success or failure. If no parameter is specified the default parameter would be used for determining success.
request_id is applicable for OCR input.Get the request_id by running the OCR on the document.
personId is applicable for both OCR & Manual input which is available from OCR/verification response. If you are running the API for the first time then this field can be blank.
manual_input is applicable only for Manual Input and are mandatory fields required for verification. This will be blank in case of verification based on Input OCR.
Success Parameters
Success Parameters |
Values |
|---|---|
Default |
id_number, name |
Response Description
matching_ocr_to_source and/or matching_manual_to_source :
id_number : true/false based on matching with source.
name : is a score in the range of 0-100.
Driving License Verification
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/databaseCheck' \
--header 'tokenKey: XXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "ind_driving_license",
"name_match_threshold": 70,
"personId": "XXXXXXXXXXXXX",
"request_id": "XXXXXXXXXXXXX",
"manual_input": {
"id_number" : "XXXXXXXXXXX",
"dob" : "YYYY-MM-DD"
}
}'
Example Response (with all possible fields)
{
"configuration": {
"api_config": {
"api_action": "verify",
"api_doc_type": "ind_driving_license",
"api_doc_face": "NA",
"api_status": "success",
"api_status_code": 200,
"api_status_code_description": "Successful Response for the given inputs.",
"request_id": "XXXXXXXXXXXXXX",
"created_at": "Fri Jul 30 2021 04:44:46 GMT+0000 (UTC)",
"completed_at": "Fri Jul 30 2021 04:45:00 GMT+0000 (UTC)",
"person_id": "XXXXXXXXX"
},
"success_config": {
"name_match_threshold": 70,
"success_parameter": [
"id_number"
],
"success_config_description": "Verification will be successful if id_number is matched."
}
},
"output": {
"ocr": "NA",
"source": {
"id_number": "XXXXXXXXXXXXX",
"name": "XXXXXXXXXX",
"dob": "YYYY-MM-DD",
"gender": "XXXXX",
"address": "XXXXX",
"relative_name_1": "XXXXX",
"date_of_issue": "YYYY-MM-DD",
"date_of_expiry": "YYYY-MM-DD",
"citizenship": "XXX",
"blood_group": "XXXX",
"vehicle_class": ["XXX", "XXXX"],
"rto_name": "XXXXXXXX",
"rto_code": null,
"base_64_face": "XXXX",
"yob": "YYYY"
},
"derived": {
"age": "XX",
"dl_expired": true,
"dlholder_is_minor": false,
"dl_yoi": "YYYY"
}
},
"matching": {
"ocr_to_source": "NA",
"manual_to_source": {
"id_number": true,
"dob": true
}
},
"status": {
"got_source_response": true,
"status_matching": "success",
"status_matching_based_on": "Manual Input",
"status_matching_message": {
"id_number": "verified"
}
}
}
Request Parameters
docType is applicable for both OCR & Manual input and indicates name of ID which would be detected.
success_parameter is applicable for both OCR & Manual input and specifies the parameter that would determine whether verification was success or failure. If no parameter is specified the default parameter would be used for determining success.
request_id is applicable for OCR input.Get the request_id by running the OCR on the document.
personId is applicable for both OCR & Manual input which is available from OCR/verification response. If you are running the API for the first time then this field can be blank.
manual_input is applicable only for Manual Input and are mandatory fields required for verification. This will be blank in case of verification based on Input OCR.
Success Parameters
Success Parameters |
Values |
|---|---|
Default |
id_number |
Supported |
id_number, name, dob, doe |
Here dob, doe stands For date_of_birth, date_of_expiry
Response Description
matching_ocr_to_source and/or matching_manual_to_source :
id_number : true/false based on matching with source.
name : is a score in the range of 0-100.
date_of_birth : true/false based on matching with source.
date_of_expiry: true/false based on matching with source
Voter Id Verification
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/databaseCheck' \
--header 'tokenKey: XXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "ind_voter_id",
"personId": "XXXXXXXXXX",
"request_id": "XXXXXXXXXXXXXX",
"success_parameters": ["id_number","name"],
"manual_input": {
"id_number" : "XXXXXXX"
}
}'
Example Response (with all possible fields)
{
"configuration": {
"api_config": {
"api_action": "verify",
"api_doc_type": "ind_voter_id",
"api_doc_face": "NA",
"api_status": "success",
"api_status_code": 200,
"api_status_code_description": "Successful Response for the given inputs.",
"request_id": "XXXXXXXX",
"created_at": "Fri Jul 30 2021 04:53:54 GMT+0000 (UTC)",
"completed_at": "Fri Jul 30 2021 04:53:55 GMT+0000 (UTC)",
"person_id": "XXXXXXXXXXXX"
},
"success_config": {
"name_match_threshold": 70,
"success_parameter": [
"id_number",
"name"
],
"success_config_description": "Verification will be successful if id_number,name is matched."
}
},
"output": {
"ocr": "NA",
"source": {
"id_number": "XXXXXX",
"name": "XXXXXXXXX",
"dob": "YYYY-MM-DD",
"gender": "XXX",
"relative_name_1": "XXXXXXXXX",
"relative_relationship_1": "XXXXXXX",
"ps_name": "XXXXXXXXXXXX",
"yob": "YYYY"
},
"derived": {
"age": "XX",
"voterholder_is_minor": false
}
},
"matching": {
"ocr_to_source": "NA",
"manual_to_source": {
"id_number": true
}
},
"status": {
"got_source_response": true,
"status_matching": "failed",
"status_matching_based_on": "Manual Input",
"status_matching_message": {
"id_number": "verified",
"name": "not_verified"
}
}
}
Request Parameters
docType is applicable for both OCR & Manual input and indicates name of ID which would be detected.
success_parameter is applicable for both OCR & Manual input and specifies the parameter that would determine whether verification was success or failure. If no parameter is specified the default parameter would be used for determining success.
request_id is applicable for OCR input.Get the request_id by running the OCR on the document.
personId is applicable for both OCR & Manual input which is available from OCR/verification response. If you are running the API for the first time then this field can be blank.
manual_input is applicable only for Manual Input and are mandatory fields required for verification. This will be blank in case of verification based on Input OCR.
Success Parameters
Success Parameters |
Values |
|---|---|
Default |
id_number |
Supported |
id_number, name, dob |
Response Description
matching_ocr_to_source and/or matching_manual_to_source :
id_number : true/false based on matching with source.
name : is a score in the range of 0-100.
date_of_birth : true/false based on matching with source.
Passport Verification
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/databaseCheck' \
--header 'tokenKey: XXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "ind_passport",
"personId": "XXXXXXXXX",
"request_id": "XXXXXXXXXXX",
"success_parameters": ["dob"],
"name_match_threshold": 50,
"manual_input": {
"passport_file_number" : "XXXXXXXXX",
"dob": "YYYY-MM-DD"
}
}'
Example Response (with all possible fields)
{
"configuration": {
"api_config": {
"api_action": "verify",
"api_doc_type": "ind_passport",
"api_doc_face": "NA",
"api_status": "success",
"api_status_code": 200,
"api_status_code_description": "Successful Response for the given inputs.",
"request_id": "XXXXXXXX",
"created_at": "Fri Jul 30 2021 05:03:35 GMT+0000 (UTC)",
"completed_at": "Fri Jul 30 2021 05:03:36 GMT+0000 (UTC)",
"person_id": "XXXXXXX"
},
"success_config": {
"name_match_threshold": 50,
"success_parameter": [
"dob"
],
"success_config_description": "Verification will be successful if dob is matched."
}
},
"output": {
"ocr": "NA",
"source": {
"id_number": "XXXXXX",
"name": "XXXXXXXX",
"dob": "YYYY-MM-DD",
"doi": "YYYY-MM-DDD",
"passport_file_number": "XXXXXXXXXX"
},
"derived": {
"age": "XX",
"passportholder_is_minor": false
}
},
"matching": {
"ocr_to_source": "NA",
"manual_to_source": {
"dob": true,
"file_number": true
}
},
"status": {
"got_source_response": true,
"status_matching": "success",
"status_matching_based_on": "Manual Input",
"status_matching_message": {
"dob": "verified"
}
}
}
Request Parameters
docType is applicable for both OCR & Manual input and indicates name of ID which would be detected.
success_parameter is applicable for both OCR & Manual input and specifies the parameter that would determine whether verification was success or failure. If no parameter is specified the default parameter would be used for determining success.
request_id is applicable for OCR input.Get the request_id by running the OCR on the document.
personId is applicable for both OCR & Manual input which is available from OCR/verification response. If you are running the API for the first time then this field can be blank.
manual_input is applicable only for Manual Input and are mandatory fields required for verification. This will be blank in case of verification based on Input OCR.
Success Parameters
Success Parameters |
Values |
|---|---|
Default |
id_number, dob, passport_file_number |
Supported |
id_number, name, dob, passport_file_number |
Response Description
matching_ocr_to_source and/or matching_manual_to_source :
id_number : true/false based on matching with source.
name : is a score in the range of 0-100.
date_of_birth : true/false based on matching with source.
file_number: true/false based on matching with source.
Pan Advanced
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/databaseCheck' \
--header 'tokenKey: XXXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "ind_pan_advanced",
"name_match_threshold": 70,
"success_parameters": ["id_number", "name"],
"manual_input": {
"id_number": "XXXXXXXX"
}
}'
Example Response (with all possible fields)
{
"configuration": {
"api_config": {
"api_action": "verify",
"api_doc_type": "ind_pan_advanced",
"api_doc_face": "N/A",
"api_status": "success",
"api_status_code": 200,
"api_status_code_description": "Successful Response for the given inputs.",
"source": null,
"request_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"created_at": "Mon Nov 10 2025 17:25:01 GMT+0000 (Coordinated Universal Time)",
"completed_at": "Mon Nov 10 2025 17:25:06 GMT+0000 (Coordinated Universal Time)",
"person_id": "XXXXXXXXXXXXXXXXXXXXXXXX"
},
"success_config": {
"name_match_threshold": 70,
"success_parameter": [
"id_number",
"name"
],
"success_config_description": "Verification will be successful if id_number,name are matched."
}
},
"output": {
"ocr": "N/A",
"source": {
"id_number": "XXXXXXXXXX",
"name": "XXXXXXXXXX",
"dob": "YYYY-MM-DD",
"aadhaar_seeding_status": null,
"father_name": null,
"masked_aadhaar_number": "XXXXXXXXXXXX",
"address": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"email": "XX**************[email protected]",
"phone_number": "XXXXXXXX",
"gender": "XXXX",
"aadhaar_linked": true,
"pan_alloted_date": null
},
"derived_based_on_source": {
"pan_type": "XXXXXXX",
"age": XX,
"pan_holder_is_minor": false
}
},
"matching": {
"ocr_to_source": "N/A",
"manual_to_source": {
"id_number": true
}
},
"status": {
"got_source_response": true,
"status_matching": "failed",
"status_matching_based_on": "Manual Input",
"status_matching_message": {
"id_number": "verified",
"name": "not_verified"
}
}
}
Request Parameters
docType is applicable for both OCR & Manual input and indicates name of ID which would be detected.The value of doc_type for PAN Advanced should be ind_pan_advanced.
success_parameter is applicable for both OCR & Manual input and specifies the parameter that would determine whether verification was success or failure. If no parameter is specified the default parameter would be used for determining success.
personId is applicable for both OCR & Manual input which is available from OCR/verification response. If you are running the API for the first time then this field can be blank.
manual_input is applicable only for Manual Input and are mandatory fields required for verification. This will be blank in case of verification based on Input OCR.
Success Parameters
Success Parameters |
Values |
|---|---|
Default |
id_number, name |
Supported |
id_number, name |
Response Description
matching_ocr_to_source and/or matching_manual_to_source :
id_number : true/false based on matching with source.
name : is a score in the range of 0-100.
Vehicle RC
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/databaseCheck' \
--header 'tokenKey: XXXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "ind_rc",
"name_match_threshold": 70,
"personId": "XXXXXXXXXXXXX",
"success_parameters": ["rc_number"],
"manual_input": {
"rc_number": "XXXXXXXXXX"
}
}'
Example Response (with all possible fields)
{
"configuration": {
"api_config": {
"api_action": "verify",
"api_doc_type": "ind_rc",
"api_doc_face": "N/A",
"api_status": "success",
"api_status_code": 200,
"api_status_code_description": "Successful Response for the given inputs.",
"source": null,
"request_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"created_at": "Mon Nov 10 2025 17:25:01 GMT+0000 (Coordinated Universal Time)",
"completed_at": "Mon Nov 10 2025 17:25:06 GMT+0000 (Coordinated Universal Time)",
"person_id": "XXXXXXXXXXXXXXXXXXXXXXXX"
},
"success_config": {
"name_match_threshold": 70,
"success_parameter": [
"rc_number"
],
"success_config_description": "Verification will be successful if rc_number is matched."
}
},
"output": {
"ocr": "N/A",
"source": {
"rc_number": "XXXXXXXXXX",
"registration_date": "YYYY-MM-DD",
"owner_name": "XXXXXXXXXX",
"vehicle_class": "XXXXXXXX",
"manufacturer": "XXXXXXXX",
"model": "XXXXXXXX"
},
"derived_based_on_source": "N/A"
},
"matching": {
"ocr_to_source": "N/A",
"manual_to_source": {
"rc_number": true
}
},
"status": {
"got_source_response": true,
"status_matching": "success",
"status_matching_based_on": "Manual Input",
"status_matching_message": {
"rc_number": "verified"
}
}
}
Request Parameters
docType is applicable for both OCR & Manual input and indicates name of ID which would be detected. The value of doc_type for Vehicle RC should be ind_rc.
success_parameter is applicable for both OCR & Manual input and specifies the parameter that would determine whether verification was success or failure. If no parameter is specified the default parameter would be used for determining success.
personId is applicable for both OCR & Manual input which is available from OCR/verification response. If you are running the API for the first time then this field can be blank.
manual_input is applicable only for Manual Input and are mandatory fields required for verification. This will be blank in case of verification based on Input OCR.
Success Parameters
Success Parameters |
Values |
|---|---|
Default |
rc_number |
Supported |
rc_number |
Response Description
matching_ocr_to_source and/or matching_manual_to_source :
rc_number : true/false based on matching with source.
CIN/DIN
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/databaseCheck' \
--header 'tokenKey: XXXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "ind_mca",
"name_match_threshold": 70,
"personId": "XXXXXXXXXXXXX",
"success_parameters": ["cin"],
"manual_input": {
"cin": "XXXXXXXXXX"
}
}'
Example Response (with all possible fields)
{
"configuration": {
"api_config": {
"api_action": "verify",
"api_doc_type": "ind_mca",
"api_doc_face": "N/A",
"api_status": "success",
"api_status_code": 200,
"api_status_code_description": "Successful Response for the given inputs.",
"source": null,
"request_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"created_at": "Mon Nov 10 2025 17:25:01 GMT+0000 (Coordinated Universal Time)",
"completed_at": "Mon Nov 10 2025 17:25:06 GMT+0000 (Coordinated Universal Time)",
"person_id": "XXXXXXXXXXXXXXXXXXXXXXXX"
},
"success_config": {
"name_match_threshold": 70,
"success_parameter": [
"cin"
],
"success_config_description": "Verification will be successful if cin is matched."
}
},
"output": {
"ocr": "N/A",
"source": {
"cin": "XXXXXXXXXX",
"company_name": "XXXXXXXXXX",
"registration_date": "YYYY-MM-DD",
"company_status": "XXXXXXXX",
"company_category": "XXXXXXXX",
"company_class": "XXXXXXXX",
"authorized_capital": "XXXXXXXX",
"paid_up_capital": "XXXXXXXX"
},
"derived_based_on_source": "N/A"
},
"matching": {
"ocr_to_source": "N/A",
"manual_to_source": {
"cin": true
}
},
"status": {
"got_source_response": true,
"status_matching": "success",
"status_matching_based_on": "Manual Input",
"status_matching_message": {
"cin": "verified"
}
}
}
Request Parameters
docType is applicable for both OCR & Manual input and indicates name of ID which would be detected. The value of doc_type for CIN/DIN should be ind_mca.
success_parameter is applicable for both OCR & Manual input and specifies the parameter that would determine whether verification was success or failure. If no parameter is specified the default parameter would be used for determining success.
personId is applicable for both OCR & Manual input which is available from OCR/verification response. If you are running the API for the first time then this field can be blank.
manual_input is applicable only for Manual Input and are mandatory fields required for verification. This will be blank in case of verification based on Input OCR.
Success Parameters
Success Parameters |
Values |
|---|---|
Default |
cin |
Supported |
cin, din |
Response Description
matching_ocr_to_source and/or matching_manual_to_source :
cin : true/false based on matching with source.
din : true/false based on matching with source.
GST Certificate
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/databaseCheck' \
--header 'tokenKey: XXXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "ind_gst_certificate",
"name_match_threshold": 70,
"personId": "XXXXXXXXXXXXX",
"success_parameters": ["gstin"],
"manual_input": {
"gstin": "XXXXXXXXXX"
}
}'
Example Response (with all possible fields)
{
"configuration": {
"api_config": {
"api_action": "verify",
"api_doc_type": "ind_gst_certificate",
"api_doc_face": "N/A",
"api_status": "success",
"api_status_code": 200,
"api_status_code_description": "Successful Response for the given inputs.",
"source": null,
"request_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"created_at": "Mon Nov 10 2025 17:25:01 GMT+0000 (Coordinated Universal Time)",
"completed_at": "Mon Nov 10 2025 17:25:06 GMT+0000 (Coordinated Universal Time)",
"person_id": "XXXXXXXXXXXXXXXXXXXXXXXX"
},
"success_config": {
"name_match_threshold": 70,
"success_parameter": [
"gstin"
],
"success_config_description": "Verification will be successful if gstin is matched."
}
},
"output": {
"ocr": "N/A",
"source": {
"gstin": "XXXXXXXXXX",
"legal_name": "XXXXXXXXXX",
"trade_name": "XXXXXXXXXX",
"registration_date": "YYYY-MM-DD",
"constitution_of_business": "XXXXXXXX",
"taxpayer_type": "XXXXXXXX",
"status": "XXXXXXXX"
},
"derived_based_on_source": "N/A"
},
"matching": {
"ocr_to_source": "N/A",
"manual_to_source": {
"gstin": true
}
},
"status": {
"got_source_response": true,
"status_matching": "success",
"status_matching_based_on": "Manual Input",
"status_matching_message": {
"gstin": "verified"
}
}
}
Request Parameters
docType is applicable for both OCR & Manual input and indicates name of ID which would be detected. The value of doc_type for GST Certificate should be ind_gst_certificate.
success_parameter is applicable for both OCR & Manual input and specifies the parameter that would determine whether verification was success or failure. If no parameter is specified the default parameter would be used for determining success.
personId is applicable for both OCR & Manual input which is available from OCR/verification response. If you are running the API for the first time then this field can be blank.
manual_input is applicable only for Manual Input and are mandatory fields required for verification. This will be blank in case of verification based on Input OCR.
Success Parameters
Success Parameters |
Values |
|---|---|
Default |
gstin |
Supported |
gstin |
Response Description
matching_ocr_to_source and/or matching_manual_to_source :
gstin : true/false based on matching with source.
Bank Account
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/databaseCheck' \
--header 'tokenKey: XXXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "bank_account",
"name_match_threshold": 70,
"personId": "XXXXXXXXXXXXX",
"success_parameters": ["account_number", "ifsc"],
"manual_input": {
"account_number": "XXXXXXXXXX",
"ifsc": "XXXXXXXXXX",
"name": "XXXXXXXXXX"
}
}'
Example Response (with all possible fields)
{
"configuration": {
"api_config": {
"api_action": "verify",
"api_doc_type": "bank_account",
"api_doc_face": "N/A",
"api_status": "success",
"api_status_code": 200,
"api_status_code_description": "Successful Response for the given inputs.",
"source": null,
"request_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"created_at": "Mon Nov 10 2025 17:25:01 GMT+0000 (Coordinated Universal Time)",
"completed_at": "Mon Nov 10 2025 17:25:06 GMT+0000 (Coordinated Universal Time)",
"person_id": "XXXXXXXXXXXXXXXXXXXXXXXX"
},
"success_config": {
"name_match_threshold": 70,
"success_parameter": [
"account_number",
"ifsc"
],
"success_config_description": "Verification will be successful if account_number,ifsc are matched."
}
},
"output": {
"ocr": "N/A",
"source": {
"account_number": "XXXXXXXXXX",
"ifsc": "XXXXXXXXXX",
"name": "XXXXXXXXXX",
"account_exists": "YES",
"amount_deposited": "1"
},
"derived_based_on_source": "N/A"
},
"matching": {
"ocr_to_source": "N/A",
"manual_to_source": {
"account_number": true,
"ifsc": true,
"name": 100
}
},
"status": {
"got_source_response": true,
"status_matching": "success",
"status_matching_based_on": "Manual Input",
"status_matching_message": {
"account_number": "verified",
"ifsc": "verified",
"name": "verified"
}
}
}
Request Parameters
docType is applicable for both OCR & Manual input and indicates name of ID which would be detected. The value of doc_type for Bank Account should be bank_account.
success_parameter is applicable for both OCR & Manual input and specifies the parameter that would determine whether verification was success or failure. If no parameter is specified the default parameter would be used for determining success.
personId is applicable for both OCR & Manual input which is available from OCR/verification response. If you are running the API for the first time then this field can be blank.
manual_input is applicable only for Manual Input and are mandatory fields required for verification. This will be blank in case of verification based on Input OCR.
Success Parameters
Success Parameters |
Values |
|---|---|
Default |
account_number, ifsc |
Supported |
account_number, ifsc, name |
Response Description
matching_ocr_to_source and/or matching_manual_to_source :
account_number : true/false based on matching with source.
ifsc : true/false based on matching with source.
name : is a score in the range of 0-100.
UPI
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/databaseCheck' \
--header 'tokenKey: XXXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "upi_details",
"name_match_threshold": 70,
"personId": "XXXXXXXXXXXXX",
"success_parameters": ["vpa"],
"manual_input": {
"vpa": "XXXXXXXXXX@upi",
"name": "XXXXXXXXXX"
}
}'
Example Response (with all possible fields)
{
"configuration": {
"api_config": {
"api_action": "verify",
"api_doc_type": "upi_details",
"api_doc_face": "N/A",
"api_status": "success",
"api_status_code": 200,
"api_status_code_description": "Successful Response for the given inputs.",
"source": null,
"request_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"created_at": "Mon Nov 10 2025 17:25:01 GMT+0000 (Coordinated Universal Time)",
"completed_at": "Mon Nov 10 2025 17:25:06 GMT+0000 (Coordinated Universal Time)",
"person_id": "XXXXXXXXXXXXXXXXXXXXXXXX"
},
"success_config": {
"name_match_threshold": 70,
"success_parameter": [
"vpa"
],
"success_config_description": "Verification will be successful if vpa is matched."
}
},
"output": {
"ocr": "N/A",
"source": {
"vpa": "XXXXXXXXXX@upi",
"name": "XXXXXXXXXX",
"account_exists": "YES"
},
"derived_based_on_source": "N/A"
},
"matching": {
"ocr_to_source": "N/A",
"manual_to_source": {
"vpa": true,
"name": 100
}
},
"status": {
"got_source_response": true,
"status_matching": "success",
"status_matching_based_on": "Manual Input",
"status_matching_message": {
"vpa": "verified",
"name": "verified"
}
}
}
Request Parameters
docType is applicable for both OCR & Manual input and indicates name of ID which would be detected. The value of doc_type for UPI should be upi_details.
success_parameter is applicable for both OCR & Manual input and specifies the parameter that would determine whether verification was success or failure. If no parameter is specified the default parameter would be used for determining success.
personId is applicable for both OCR & Manual input which is available from OCR/verification response. If you are running the API for the first time then this field can be blank.
manual_input is applicable only for Manual Input and are mandatory fields required for verification. This will be blank in case of verification based on Input OCR.
Success Parameters
Success Parameters |
Values |
|---|---|
Default |
vpa |
Supported |
vpa, name |
Response Description
matching_ocr_to_source and/or matching_manual_to_source :
vpa : true/false based on matching with source.
name : is a score in the range of 0-100.
Court Check
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/databaseCheck' \
--header 'tokenKey: XXXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "criminal_check",
"personId": "XXXXXXXXXXXXX",
"manual_input": {
"name": "XXXXXXXXXX",
"father_name": "XXXXXXXXXX",
"address": "XXXXXXXXXX"
}
}'
Request Parameters
docType is applicable for both OCR & Manual input and indicates name of ID which would be detected. The value of doc_type for Court Check should be criminal_check.
personId is applicable for both OCR & Manual input which is available from OCR/verification response. If you are running the API for the first time then this field can be blank.
manual_input is applicable only for Manual Input and are mandatory fields required for verification. This will be blank in case of verification based on Input OCR.
Example Response
{
"configuration": {
"api_config": {
"api_action": "verify",
"api_doc_type": "criminal_check",
"api_doc_face": "N/A",
"api_status": "success",
"api_status_code": 200,
"api_status_code_description": "Successful Response for the given inputs.",
"request_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"created_at": "Mon Nov 10 2025 17:25:01 GMT+0000 (Coordinated Universal Time)",
"completed_at": "Mon Nov 10 2025 17:25:06 GMT+0000 (Coordinated Universal Time)",
"person_id": "XXXXXXXXXXXXXXXXXXXXXXXX"
}
},
"output": {
"ocr": "N/A",
"source": {
"reports": [
{
"year": "YYYY",
"subject": null,
"address_taluka": null,
"source": "XXXXX",
"type": "XX",
"next_hearing_date": " 21st December 2017",
"address_pincode": null,
"first_hearing_date": " 28th November 2017",
"state_name": "XXXXXXXXXXXX",
"address_wc": 0,
"id": null,
"under_acts": "XXXXXXXXXXX",
"address_district": null,
"nature_of_disposal": null,
"uniq_case_id": "XXXXXXXXX",
"name_wc": "XX",
"business_category": "XXXXXXXX",
"filing_no": null,
"case_category": "XXXXXXXX",
"address_street": null,
"name": "XX",
"dist_code": "XX",
"state_code": "XX",
"link": "<report_link>",
"address_state": null,
"court_no_judge": null,
"decision_date": null,
"court_no_name": null,
"under_sections": "XX",
"court_name": null,
"case_no_year": null,
"address": null,
"case_code": "XXXXXXXXXXXXXXXX",
"dist_name": "XXXXXXXXX",
"case_type": "XXXXXXX",
"police_station": "XXXXXXX",
"case_year": "XXXX",
"registration_no": null,
"case_decision_date": null,
"purpose_of_hearing": "XXXXXXX",
"case_status": null,
"fir_no": "XX",
"md5": "XXXXXXXXXXXXXX",
"raw_address": null,
"court_code": XX,
"cnr": "XXXXXXXXX",
"data_category": "XXXXXXXXXX",
"global_category": "XXXXXXXX",
"oparty": "XXXXXXXX",
"score": "XXXX",
"model_score": "XXXXXX"
}
],
"status": "completed",
"query": {
"name": "XXXXXX",
"address": "XXXXXXXXX",
"fatherName": "XXXXXXXXX"
}
}
},
"matching": {
"ocr_to_source": "N/A",
"manual_to_source": "N/A"
},
"status": {
"got_source_response": true,
"status_matching": "N/A",
"status_matching_based_on": "Manual Input",
"status_matching_message": "N/A"
}
}
Fetches the court case reports matching the name, fatherName and address.
PAN to UAN Lookup
Discovers UAN number(s) linked to a PAN number. This is a lookup-type check — returns UAN list directly without OCR or matched_information.
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/databaseCheck' \
--header 'tokenKey: XXXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "pan_to_uan",
"manual_input": {
"pan_number": "BFRPP7522L"
}
}'
Example Response
{
"api_status_code": "200",
"api_status_description": "Success",
"result": {
"message": "UAN fetched from PAN.",
"uan_list": [
{
"uan": "101000000001",
"source": ["PAN"]
}
]
}
}
Request Parameters
docType should be
pan_to_uan.manual_input.pan_number is the PAN number to look up. Must be a valid 10-character PAN format (e.g., ABCDE1234F).
Response Description
result.uan_list : array of UAN objects discovered from the given PAN number. Each object contains the
uannumber andsourceof discovery.result.message : describes the outcome — “No UAN found or PAN does not exist.” if no UANs are linked.
Mobile to UAN Lookup
Discovers UAN number(s) linked to a mobile number. This is a lookup-type check — returns UAN list directly without OCR or matched_information.
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/databaseCheck' \
--header 'tokenKey: XXXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "mobile_to_uan",
"manual_input": {
"mobile_number": "9876543210"
}
}'
Example Response
{
"api_status_code": "200",
"api_status_description": "Success",
"result": {
"message": "UAN fetched from mobile.",
"uan_list": [
{
"uan": "101615981742",
"source": ["MOBILE"]
}
]
}
}
Request Parameters
docType should be
mobile_to_uan.manual_input.mobile_number is the mobile number to look up. Must be a valid 10-digit Indian mobile number.
Response Description
result.uan_list : array of UAN objects discovered from the given mobile number.
result.message : describes the outcome — “No UAN found for the given mobile number.” if no UANs are linked.
UAN Employment History
Fetches employment history records linked to a UAN number. This is a lookup-type check via databaseCheck — returns employment records directly.
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/databaseCheck' \
--header 'tokenKey: XXXXXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"docType": "ind_uan",
"manual_input": {
"uan_number": "101615981742",
"employee_name": "KALPATARU DAS"
}
}'
Example Response
{
"api_status_code": "200",
"api_status_description": "Success",
"result": {
"message": "Employment history fetched.",
"employment_data": [
{
"name": "KALPATARU DAS",
"guardian_name": "PRAFUL DAS",
"establishment_name": "LARSEN & TOUBRO LIMITED HEAVY CIVIL INFRA IC",
"member_id": "APHYD10287930000130122",
"date_of_joining": "2020-09-04",
"date_of_exit": "2020-09-30"
}
]
}
}
Request Parameters
docType should be
ind_uan.manual_input.uan_number is the 12-digit UAN number to look up (mandatory).
manual_input.employee_name is the employee name (optional, used for matching).
Response Description
result.employment_data : array of employment records linked to the UAN. Each record contains:
name : employee name as registered with EPFO.
guardian_name : father/guardian name as registered.
establishment_name : employer/establishment name.
member_id : EPFO member ID for that employment.
date_of_joining : joining date at the employer.
date_of_exit : exit date from the employer (empty string if currently employed).
result.message : describes the outcome.
Face Match
Method and URL
POST : https://api-dev.springscan.springverify.com/v4/faceMatch
Headers
Name |
Description |
|---|---|
tokenKey |
XXXXX ( To be generated from dashboard ) |
Example Request
curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/faceMatch' \
--header 'tokenKey: XXXXXX' \
--header 'Content-Type: application/json' \
--data-raw '{
"document1": "<document_url>",
"document2": "<document_url>"
}'
Example Response
{
"configuration": {
"api_config": {
"api_action": "face_match",
"api_doc_type": "ind_aadhaar",
"api_doc_face": "front",
"api_status": "success",
"api_status_code": 200,
"api_status_description": "Okay",
"request_id": "N/A",
"created_at": "XXXXXXXXXXX",
"completed_at": "XXXXXXXXX",
"person_id": "XXXXXXXXX"
},
"success_config_matching": "N/A"
},
"input_ocr": {
"document1": "<document_url>",
"document2": "<document_url>"
},
"input_manual": "N/A",
"output_ocr": "N/A",
"output_source": {
"face_image": {
"detected": "XXXXX",
"image_quality": "XXXX"
},
"doc_image": {
"detected": "XXXXX",
"image_quality": "XXXXX"
}
},
"output_source_derived": "N/A",
"matching_manual_to_source": "N/A",
"matching_ocr_to_source": "N/A",
"status": {
"got_source_response": true,
"status_matching": true,
"status_based_on": "OCR",
"status_matching_message": {
"match_score": "XX",
"review_recommended": "XXXXX"
}
}
}
Does a compare of document and selfie, for a match. If User document image and user selfie matches, generates a high score with a boolean value of true, else false.
Request Parameters
document1 : URL of the first document image (front side).
document2 : URL of the second document image (back side, if applicable).
Supported Documents
Supported documents for matching against the face image :
Aadhaar (ind_aadhaar)
PAN (ind_pan)
Voter ID (ind_voter_id)
Driving License (ind_driving_license)
Passport (ind_passport)
Response Description
Face_image : object which holds information about face image detection
Detected : boolean output which represents whether face was detected in the face image.
image_quality : representation regarding the quality of face in the image which can be good or bad.
Doc_image : object which holds information about document image used against face match
Detected : boolean output which represents whether face was detected in the document image.
image_quality : representation regarding the quality of face in the image which can be good or bad.
Status_Matching_message : object which holds information about status of face match
Match_score : holds value between 0-100
Review_recommended : boolean output which infers whether the particular face was matching with the government ID. If match_score is below 70 then review_recommended is set as yes.