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 uan number and source of 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.