Get KYC requirements for a region
Get the ordered list of verification steps for a carrier and the fields each step needs, so your integration can build a verification form without hardcoding the sequence.
Reseller accounts only. Request access.
regionstring · enumrequiredRegion to get verification requirements for.
carrierstringrequiredWhich carrier's steps to return: carriers in a region do not share a step list. Always required, even where a region holds one, and omitting it returns 409 carrier_required naming that region's carriers.
curl -X GET 'https://backend.omnidim.io/api/v1/reseller/kyc/requirements?region=IN&carrier=carrier-1' \ -H 'Authorization: Bearer YOUR_API_KEY'
{ "success": true, "region": "IN", "steps": [ { "step": "register", "required": [ "email", "name", "phone" ], "cooldown": false, "choices": {}, "method": "submit" }, { "step": "verify-otp", "required": [ "email_otp", "mobile_otp" ], "cooldown": false, "method": "submit" }, { "step": "resend-otp", "required": [], "cooldown": false, "method": "submit" }, { "step": "verify-pan", "required": [ "business_type", "pan" ], "cooldown": false, "method": "submit" }, { "step": "aadhaar-otp", "required": [ "aadhaar" ], "cooldown": true, "method": "otp" }, { "step": "aadhaar-verify", "required": [ "otp" ], "cooldown": true, "method": "otp" }, { "step": "verify-gst", "required": [ "gst" ], "cooldown": false, "method": "submit" }, { "step": "skip-gst", "required": [], "cooldown": false, "method": "submit" }, { "step": "preview", "required": [], "cooldown": false, "method": "submit" }, { "step": "accept", "required": [], "cooldown": false, "method": "submit" } ] }
Authorization
BearerAuth Bearer token authentication. Obtain your API key from the OmniDimension dashboard.
In: header
Query Parameters
Region to get verification requirements for.
"IN" | "US"Which carrier's steps to return: carriers in a region do not share
a step list. Always required, even where a region holds one, and
omitting it returns 409 carrier_required naming that region's
carriers.
Response body
application/jsonResponse Body
application/json
application/json
application/json
application/json
application/json
Call this before you build anything. The steps, the fields each one needs,
and the method telling you how to perform it all come from here. A region can
have more than one carrier, and carriers do not run the same checks, so the
sequence is data rather than something to hard-code. Written against this
response, one integration works for every carrier and keeps working when a
carrier's flow changes.
How a client is checked depends on the carrier: a code sent to the customer, a
link they open themselves, or business details the carrier reviews. method on
each step tells you which, and
Run a KYC step explains
how to handle each kind.
Read it per carrier, and carrier is always required:
carrier-1(region IN): landline numbers. OTP pair, then Aadhaar by OTP, ending in a preview you accept.carrier-2-new(region IN): mobile numbers. No OTP step at all, Aadhaar through a DigiLocker link the customer opens.carrier-us(region US): business verification. No OTP, no PAN, no Aadhaar.
Calling without a carrier returns 409 carrier_required listing that
region's carriers with what each one stocks, so you can discover them at
runtime rather than hard-coding the list.
A region we cannot verify through the API returns 404 not_available rather
than an empty list. Check kyc_required on
KYC status to know whether
a region needs verification at all before a purchase.
The full loop is in the Reseller API guide.
Get KYC status
Get the identity verification status of a client for every carrier it can verify on. Use next_step to know which step to call next, so you drive the whole flow off one poll instead of hardcoding the sequence.
Submit a KYC verification step
Run one step of a client's identity verification. One endpoint handles every step: the step path parameter names the step, and the body carries user_id, region, carrier, and whatever that step needs. The example below is the register step on carrier-1.
