Whatever flow you use, approval is asynchronous and every profile is customer-scoped. Poll
GET /api/v1/kyc/status until the profile reaches a terminal state and the capability flag you need (brlaEnabled for Brazil, usdEnabled for foreign USD) is true.Introduction
Authentication
Every request requires:- The key identifies your customer. Fee configuration and strategy catalog are scoped to it.
- Success responses are the bare JSON body (HTTP 200). Errors use
{ "error": { "code", "message", "details?" } }. - Keep the API key on your backend β never expose it in a browser app.
Integration flow
1
Choose your KYC flow
Pick the flow that matches your users: bring-your-own capture (external evidence), foreign USD onboarding, or Brazil Pix Sumsub reusable KYC.
2
Onboard the applicant
Create a session and submit the evidence you captured, or submit a Sumsub reusable share token β depending on the flow. Each call returns a Full guide: External evidence KYCBrazil Pix reusable KYCFull guide: Set up Pods RampForeign USDFull guide: Foreign USD KYC and ramps
kycUserId β store it for status polling.External evidence3
Poll status
Verification is asynchronous. Poll until the profile reaches a terminal state:Full guide: Track Pods Ramp status.
4
Unlock capability (foreign USD)
Level 1 approval does not enable USD ramps by itself. Request the currency unlock and poll status until Full guide: Foreign USD KYC and ramps.
usdEnabled is true:5
Move money
Once the capability flag is Full guide: Move money with Pods Ramp.
true, use the same Swap v2 quote routes to onramp, offramp, or ramp to yield: