API Reference
Every externally documented endpoint appears below. Detail pages use a consistent contract: method/path, purpose, auth/permissions, headers or context, fields, success shape, errors/statuses, and guide links.
Dashboard-issued API keys use the prefixes vudy_sandbox_ (staging) and vudy_production_ (production). Key provisioning APIs are not part of the public reference.
Auth surface legend#
| Label | Meaning |
|---|---|
| Public | No API key required |
| API key | x-api-key only |
| Header context | API key plus one profile context: session, valid x-profile-id + x-team-id, or a key scoped to both |
| Optional context | API key; session/headers/scoped-key context is accepted but not required |
| Session / scoped key | API key; header validation disabled — use session or key scoped to profile/team |
| Session | API key plus Authorization session |
WRITE | API key must include WRITE; no session unless the route is labeled otherwise |
Session + WRITE | API key with WRITE, plus Authorization: Bearer <session> |
OTC_PROVIDER | API key with the restricted partner permission; route-specific context may also apply |
Session + OTC_PROVIDER | Restricted partner key plus Authorization: Bearer <session> |
Reference groups#
- Auth
- Users and profiles
- Teams
- KYC and compliance
- Wallets
- Notifications
- Configuration
- Channels
- Vudy, PAQ, and Unlimit
- Transactions and files
- OTC
- Webhooks
- OTC provider (partner)
All endpoints#
| Method | Path | Auth | Reference |
|---|---|---|---|
GET | /channel/paq/preview | API key | Docs |
GET | /channel/paq/validate-phone | API key | Docs |
POST | /channel/paq/withdraw | Header context | Docs |
POST | /channel/paq/withdraw/{txId}/process-sponsored-tx | API key | Docs |
GET | /channel/paq/withdraw/{txId}/sign-payload | API key | Docs |
POST | /channel/unlimit/offramp | Header context | Docs |
GET | /channel/unlimit/offramp/config | Header context | Docs |
GET | /channel/unlimit/offramp/quote | Header context | Docs |
POST | /channel/unlimit/onramp | Header context | Docs |
GET | /channel/unlimit/onramp/config | Header context | Docs |
GET | /channel/unlimit/onramp/quote | Header context | Docs |
GET | /channel/unlimit/orders | API key | Docs |
GET | /channel/unlimit/orders/{orderId} | API key | Docs |
POST | /channel/unlimit/{txId}/refresh-url | Session | Docs |
POST | /channel/vudy/otc/create | Header context | Docs |
POST | /channel/vudy/otc/{id}/accept-offer | API key | Docs |
POST | /channel/vudy/otc/{id}/deny-proof | API key | Docs |
POST | /channel/vudy/otc/{id}/prepare-proof | API key | Docs |
POST | /channel/vudy/otc/{id}/reject-offer | API key | Docs |
POST | /channel/vudy/otc/{id}/submit-proof | API key | Docs |
POST | /channel/vudy/otc/{id}/verify-proof | API key | Docs |
POST | /channel/vudy/request/create | Header context | Docs |
GET | /channel/vudy/request/{id} | API key | Docs |
POST | /channel/vudy/request/{id} | API key | Docs |
POST | /channel/vudy/send/create | Header context | Docs |
POST | /channel/vudy/send/preview | Header context | Docs |
POST | /channel/vudy/send/{id}/prepare-sponsored-tx | Header context | Docs |
POST | /channel/vudy/send/{id}/process-send-tx | Session | Docs |
POST | /channel/vudy/send/{id}/process-sponsored-tx | Header context | Docs |
GET | /channel/vudy/tag | API key | Docs |
GET | /channels | API key | Docs |
GET | /channels/categories | API key | Docs |
GET | /channels/discovery | API key | Docs |
GET | /channels/discovery/capability/{capabilityId} | API key | Docs |
GET | /channels/discovery/{gateId} | API key | Docs |
POST | /channels/execute | Session | Docs |
GET | /channels/methods/{channelSlug} | API key | Docs |
POST | /channels/onboarding/complete | Session | Docs |
POST | /channels/quote | Header context | Docs |
GET | /channels/{channelSlug} | Public | Docs |
POST | /channels/{channelSlug}/action/{actionName}/{actionId} | API key | Docs |
GET | /channels/{channelSlug}/method/{methodName} | API key | Docs |
POST | /channels/{channelSlug}/validate | Optional context | Docs |
GET | /channels/{channelSlug}/{txId} | API key | Docs |
GET | /v1/apps/channels | API key | Docs |
POST | /v1/auth/onboard | API key | Docs |
GET | /v1/auth/referral/validate | API key | Docs |
GET | /v1/auth/refresh-session | Session | Docs |
POST | /v1/auth/send-otp | API key | Docs |
POST | /v1/auth/verify-otp | API key | Docs |
GET | /v1/channels/fees | Header context | Docs |
POST | /v1/compliance/checkout | Header context | Docs |
POST | /v1/compliance/pay-via-request | Header context | Docs |
GET | /v1/config/bank | API key | Docs |
GET | /v1/config/chains | API key | Docs |
GET | /v1/config/chains/tokens | API key | Docs |
GET | /v1/config/countries | Public | Docs |
GET | /v1/config/countries/banks | API key | Docs |
GET | /v1/config/username | API key | Docs |
GET | /v1/kyc/otc/{otcRequestId} | Session + OTC_PROVIDER | Docs |
POST | /v1/kyc/session | Session | Docs |
GET | /v1/kyc/status | Session | Docs |
GET | /v1/kyc/verifications | Session | Docs |
GET | /v1/kyc/{profileId} | Session + OTC_PROVIDER | Docs |
GET | /v1/kyc/{profileId}/pdf | Session + OTC_PROVIDER | Docs |
GET | /v1/maintenance | Public | Docs |
GET | /v1/notifications | Header context | Docs |
POST | /v1/notifications/{notificationId}/seen | Session | Docs |
GET | /v1/otc | Session / scoped key | Docs |
POST | /v1/otc/allowance/check | WRITE | Docs |
GET | /v1/otc/gating | Header context | Docs |
GET | /v1/otc/offers | OTC_PROVIDER | Docs |
POST | /v1/otc/offers | Session + OTC_PROVIDER | Docs |
DELETE | /v1/otc/offers/{offerId} | OTC_PROVIDER | Docs |
GET | /v1/otc/proof/{requestId} | API key | Docs |
GET | /v1/otc/requests | OTC_PROVIDER | Docs |
GET | /v1/otc/requests/{status} | OTC_PROVIDER | Docs |
POST | /v1/otc/signatures/approve | Session + WRITE | Docs |
POST | /v1/otc/signatures/approve-split | Session + WRITE | Docs |
POST | /v1/otc/signatures/create-escrow/provider | Session + OTC_PROVIDER | Docs |
POST | /v1/otc/signatures/create-escrow/user | Session + WRITE | Docs |
POST | /v1/otc/signatures/deny-split | Session + WRITE | Docs |
GET | /v1/otc/txs | Header context | Docs |
POST | /v1/otc/{id}/files/provider | Header context + OTC_PROVIDER | Docs |
POST | /v1/otc/{id}/files/provider/upload-url | Header context + OTC_PROVIDER | Docs |
GET | /v1/profile | Session | Docs |
GET | /v1/profile/banks | Session | Docs |
POST | /v1/profile/banks | Session | Docs |
DELETE | /v1/profile/banks/{id} | Session | Docs |
GET | /v1/profile/banks/{id} | Session | Docs |
PATCH | /v1/profile/banks/{id} | Session | Docs |
POST | /v1/profile/image | Session | Docs |
POST | /v1/profile/image/upload-url | Session | Docs |
PATCH | /v1/profile/metadata | Session | Docs |
PATCH | /v1/profile/username | Session | Docs |
GET | /v1/teams/banks | Header context | Docs |
DELETE | /v1/teams/countries | Header context | Docs |
POST | /v1/teams/countries | Header context | Docs |
PATCH | /v1/teams/default-receiver-wallet | Session | Docs |
GET | /v1/teams/invitations | Header context | Docs |
POST | /v1/teams/invitations | Header context | Docs |
DELETE | /v1/teams/invitations/{id} | Session | Docs |
GET | /v1/teams/members | Header context | Docs |
DELETE | /v1/teams/members/{profileId} | Header context | Docs |
PATCH | /v1/teams/members/{profileId}/role | Header context | Docs |
PATCH | /v1/teams/metadata | Header context | Docs |
PATCH | /v1/teams/notification-email | Header context | Docs |
POST | /v1/teams/tax-info | Header context | Docs |
PATCH | /v1/teams/tax-info/default | Header context | Docs |
GET | /v1/teams/{teamId}/activity | Session | Docs |
POST | /v1/teams/{teamId}/image | Session | Docs |
POST | /v1/teams/{teamId}/image/upload-url | Session | Docs |
GET | /v1/tx/{id} | Header context | Docs |
GET | /v1/txs | Header context | Docs |
GET | /v1/txs/tx-count-today | API key | Docs |
GET | /v1/txs/{txId}/files | Header context | Docs |
POST | /v1/txs/{txId}/files | Header context | Docs |
POST | /v1/txs/{txId}/files/upload-url | Header context | Docs |
PATCH | /v1/user/default-profile | Session / scoped key | Docs |
PUT | /v1/user/default-profile | Session / scoped key | Docs |
GET | /v1/user/profiles | Session / scoped key | Docs |
GET | /v1/vudy/request/{id}/invoice-pdf | API key | Docs |
POST | /v1/vudy/request/{id}/notify-client | API key | Docs |
GET | /v1/vudy/send/contracts | API key | Docs |
PATCH | /v1/wallet/alias | API key | Docs |
GET | /v1/wallet/default | API key | Docs |
POST | /v1/wallet/default | API key | Docs |
DELETE | /v1/wallet/evm/allowance/{action} | WRITE | Docs |
GET | /v1/wallet/evm/allowance/{action} | API key | Docs |
POST | /v1/wallet/evm/allowance/{action} | WRITE | Docs |
GET | /v1/wallet/evm/check-gas-balance | API key | Docs |
POST | /v1/wallet/evm/gas-sponsor | WRITE | Docs |
POST | /v1/wallet/external | API key | Docs |
GET | /v1/wallet/list | API key | Docs |
GET | /v1/wallet/portfolio | API key | Docs |
Explicitly excluded#
Operational, inbound-provider, test, signed-share-link, and privileged management routes are not integrator contracts and are intentionally omitted.
The index above lists 135 externally documented method/path pairs.