customer_use sub-account from scratch - create → KYC → number → first call - and is explicit about which credentials to use at each step.
Base URL: https://api.vobiz.ai/api/v1
The one rule that prevents most of the confusion
Two credential pairs are in play. Keep them straight:KYC is not an exception. Sub-account KYC endpoints authenticate with the parent’s
X-Auth-ID / X-Auth-Token; the sub-account is identified by {sub_auth_id} in the path.The flow
1
Create the customer sub-account - parent credentials
A customer that must be KYC’d in its own name is a Response (201) - save the sub-account’s own credentials;
customer_use sub-account. It requires an email and starts call-blocked until KYC passes.cURL
auth_token is shown once:auth_credentials→ the sub-account’s key (used in the final step).tokens(JWT) are optional - only for console/dashboard sign-in, not the REST/telephony API.kyc_calls_blocked: true→ the sub-account cannot place calls yet.
2
Complete KYC - parent credentials
All KYC endpoints live under When
/sub-accounts/{sub_auth_id}/kyc/… and authenticate as the parent. Run the documents the entity needs (PAN + GST/CIN for companies; PAN + Aadhaar via DigiLocker for individuals), then poll status.Verify PAN
Verify GST
Poll status
kyc_calls_blocked flips to false, the sub-account may place calls. overall_status is the aggregate (not_started / pending / verified / failed); verifications holds the per-document state.3
Buy a number - parent credentials
Browse inventory, then purchase. Buying with the parent puts the number in the parent’s pool, ready to assign in the next step. Billing for an Purchasing debits the parent’s balance (setup fee + monthly fee).
SA_ purchase always routes to the parent MA_.Find a number
Purchase it
4
Link the number to the sub-account - parent credentials
Assign a parent-pool DID to the sub-account. URL-encode The number now belongs to the sub-account.
+ as %2B in the path; name the sub-account in the body via sub_account_id.cURL
Moving a number back to the parent pool is subject to a 15-day cool-off if it had a call in the last 15 days. See Unassign DID.
5
The sub-account places a call - sub-account credentials
Now switch credentials. The sub-account (or your customer) authenticates as itself using the This succeeds only when
auth_id / auth_token from Step 1.cURL
kyc_calls_blocked is false (Step 2 complete).Alternative: let the sub-account buy its own number
Instead of Steps 3–4, the sub-account can purchase directly with its ownauth_id / auth_token (billing still routes to the parent MA_). The number lands directly on the sub-account - no separate assign step:
cURL
Auth cheat-sheet
TL;DR: Parent credentials for setup (Steps 1–4); the sub-account’s own credentials for usage (Step 5 onward).