Documentation Index Fetch the complete documentation index at: https://docs.vobiz.ai/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Every real KYC endpoint has a test-mode counterpart under the /test/ path prefix. Test endpoints never hit Perfios or any external service. They accept magic input values that deterministically produce specific outcomes - useful for integration tests and CI pipelines.
Test base path:
/api/v1/sub-accounts/test/{sub_auth_id}/kyc/
All test endpoints use the same Authorization: Bearer {parent_jwt} header as the real endpoints. They write real kyc_verifications rows and recompute kyc_status, so the status endpoint reflects the mock outcome.
Use these magic values in the main identifier field (e.g., pan, gstin, aadhaar_no) to trigger specific outcomes:
Magic input Outcome TESTSUCCESS0001verified - check passes immediatelyTESTFAIL0001failed - check fails immediatelyTESTERROR0001HTTP 500 - simulates an upstream error TESTPENDING001pending - stays pending until finalized with verifiedTESTPENDING_FAILpending - stays pending until finalized with failed
Mock endpoints
Mock PAN verification
POST /api/v1/sub-accounts/test/{sub_auth_id}/kyc/verify-pan
Authorization : Bearer {parent_jwt}
Content-Type : application/json
{
"pan" : "TESTSUCCESS0001"
}
Response (200)
{
"verification_type" : "pan" ,
"status" : "verified" ,
"sub_account_id" : "SA_xxxxxxxx"
}
Mock GST verification
POST /api/v1/sub-accounts/test/{sub_auth_id}/kyc/verify-gst
Authorization : Bearer {parent_jwt}
Content-Type : application/json
{
"gstin" : "TESTSUCCESS0001GST"
}
Mock CIN search
Returns a deterministic list of fake company matches regardless of the company_name value.
POST /api/v1/sub-accounts/test/{sub_auth_id}/kyc/cin/search
Authorization : Bearer {parent_jwt}
Content-Type : application/json
{
"company_name" : "ACME"
}
Response (200)
{
"matches" : [
{ "cin" : "U72900KA2024PTC123456" , "name" : "ACME PRIVATE LIMITED" , "state" : "Karnataka" }
]
}
Mock CIN confirm
Succeeds when selected_cin starts with U72900KA2024PTC123456.
POST /api/v1/sub-accounts/test/{sub_auth_id}/kyc/cin/confirm
Authorization : Bearer {parent_jwt}
Content-Type : application/json
{
"company_name" : "ACME" ,
"selected_cin" : "U72900KA2024PTC123456"
}
Mock Aadhaar consent
Returns a deterministic mock access_key.
POST /api/v1/sub-accounts/test/{sub_auth_id}/kyc/aadhaar/consent
Authorization : Bearer {parent_jwt}
Content-Type : application/json
{
"name" : "Test User" ,
"ip_address" : "1.2.3.4"
}
Response (200)
{
"access_key" : "MOCK_KEY"
}
Mock Aadhaar verify
Applies relaxed validation; any 12-digit aadhaar_no is accepted with the magic-input matrix.
POST /api/v1/sub-accounts/test/{sub_auth_id}/kyc/verify-aadhaar
Authorization : Bearer {parent_jwt}
Content-Type : application/json
{
"aadhaar_no" : "123456789012" ,
"access_key" : "MOCK_KEY"
}
Mock DigiLocker initiate
Returns a deterministic access_request_id without making an OAuth call.
POST /api/v1/sub-accounts/test/{sub_auth_id}/kyc/digilocker/initiate
Authorization : Bearer {parent_jwt}
Content-Type : application/json
{
"redirect_url" : "https://partner.example.com/kyc/callback"
}
Response (200)
{
"auth_link" : "https://mock-digilocker.vobiz.ai/..." ,
"access_request_id" : "MOCK_AR_SUCCESS"
}
Mock DigiLocker verify
The outcome is controlled by the access_request_id value:
access_request_idOutcome MOCK_AR_SUCCESSverifiedMOCK_AR_FAILfailed
POST /api/v1/sub-accounts/test/{sub_auth_id}/kyc/digilocker/verify
Authorization : Bearer {parent_jwt}
Content-Type : application/json
{
"access_request_id" : "MOCK_AR_SUCCESS"
}
Finalize a pending check
When you use TESTPENDING001 or TESTPENDING_FAIL, the verification stays in pending state. Use the finalize endpoint to advance it - simulating an async webhook without needing a real webhook server.
POST /api/v1/sub-accounts/test/{sub_auth_id}/kyc/finalize-pending
Authorization : Bearer {parent_jwt}
Content-Type : application/json
Request body
Field Type Required Description verification_typestring Yes pan, aadhaar, gst, or cinoutcomestring Yes verified or failed
{
"verification_type" : "pan" ,
"outcome" : "verified"
}
This promotes the most recent pending verification of the given type and recomputes kyc_calls_blocked on the sub-account.
KYC Overview kyc_mode, business_type, and kyc_calls_blocked
Verification Methods (real) Production PAN, GST, CIN, Aadhaar, DigiLocker endpoints