Rest APIs For Version 2 ======================== Document OCR API ---------------- **Method and URL** POST : https://api-dev.springscan.springverify.com/v4/ocr Aadhaar +++++++ **Example Request** .. code-block:: bash 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_back":"" }' **Example Response (with all possible fields)** .. code-block:: json { "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** .. list-table:: :widths: 30 70 :header-rows: 1 * - Success Parameters - Values * - Default - id_number Pan Basic +++++++++ **Example Request** .. code-block:: bash 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" : "" }' **Success Parameters** .. list-table:: :widths: 30 70 :header-rows: 1 * - Success Parameters - Values * - Default - id_number * - Supported - id_number, name Driving License +++++++++++++++ **Example Request** .. code-block:: bash 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_back":"" }' Voter Id ++++++++ **Example Request** .. code-block:: bash 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_back":"" }' Passport ++++++++ **Example Request** .. code-block:: bash 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_back":"" }' **Success Parameters** .. list-table:: :widths: 30 70 :header-rows: 1 * - 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** .. code-block:: bash 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)** .. code-block:: text { "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** .. list-table:: :widths: 30 70 :header-rows: 1 * - 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** .. code-block:: bash 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)** .. code-block:: text { "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** .. list-table:: :widths: 30 70 :header-rows: 1 * - 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** .. code-block:: bash 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)** .. code-block:: text { "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** .. list-table:: :widths: 30 70 :header-rows: 1 * - 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** .. code-block:: bash 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)** .. code-block:: text { "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** .. list-table:: :widths: 30 70 :header-rows: 1 * - 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** .. code-block:: bash 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)** .. code-block:: text { "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** .. list-table:: :widths: 30 70 :header-rows: 1 * - 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** .. code-block:: bash 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)** .. code-block:: text { "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**************XX@XXXXX.XXX", "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** .. list-table:: :widths: 30 70 :header-rows: 1 * - 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** .. code-block:: bash 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)** .. code-block:: text { "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** .. list-table:: :widths: 30 70 :header-rows: 1 * - 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** .. code-block:: bash 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)** .. code-block:: text { "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** .. list-table:: :widths: 30 70 :header-rows: 1 * - 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** .. code-block:: bash 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)** .. code-block:: text { "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** .. list-table:: :widths: 30 70 :header-rows: 1 * - 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** .. code-block:: bash 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)** .. code-block:: text { "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** .. list-table:: :widths: 30 70 :header-rows: 1 * - 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** .. code-block:: bash 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)** .. code-block:: text { "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** .. list-table:: :widths: 30 70 :header-rows: 1 * - 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** .. code-block:: bash 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** .. code-block:: text { "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": "", "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** .. code-block:: bash 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** .. code-block:: text { "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** .. code-block:: bash 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** .. code-block:: text { "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** .. code-block:: bash 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** .. code-block:: text { "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** .. list-table:: :widths: 30 70 :header-rows: 1 * - Name - Description * - tokenKey - XXXXX ( To be generated from dashboard ) **Example Request** .. code-block:: bash curl --location --request POST 'https://api-dev.springscan.springverify.com/v4/faceMatch' \ --header 'tokenKey: XXXXXX' \ --header 'Content-Type: application/json' \ --data-raw '{ "document1": "", "document2": "" }' **Example Response** .. code-block:: text { "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": "", "document2": "" }, "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.