Vudy, PAQ, and Unlimit
Follow-up routes after channel quote/execute for Vudy payment requests, Vudy sends, PAQ withdrawals, and Unlimit hosted ramps. MASTER-only expire jobs are excluded. OTC requester actions are on the OTC reference.
Auth labels match the endpoint index. Envelopes follow Responses and errors.
For every route labeled Header context, x-api-key is required and profile context may come from a valid session, both x-profile-id + x-team-id, or an API key already scoped to both. In the per-route header tables, “required when no session” does not apply to a scoped key.
Endpoints#
| Method | Path | Auth |
|---|---|---|
GET | /channel/paq/preview | API key |
GET | /channel/paq/validate-phone | API key |
POST | /channel/paq/withdraw | Header context |
POST | /channel/paq/withdraw/{txId}/process-sponsored-tx | API key |
GET | /channel/paq/withdraw/{txId}/sign-payload | API key |
POST | /channel/unlimit/offramp | Header context |
GET | /channel/unlimit/offramp/config | Header context |
GET | /channel/unlimit/offramp/quote | Header context |
POST | /channel/unlimit/onramp | Header context |
GET | /channel/unlimit/onramp/config | Header context |
GET | /channel/unlimit/onramp/quote | Header context |
GET | /channel/unlimit/orders | API key |
GET | /channel/unlimit/orders/{orderId} | API key |
POST | /channel/unlimit/{txId}/refresh-url | Session |
POST | /channel/vudy/request/create | Header context |
GET | /channel/vudy/request/{id} | API key |
POST | /channel/vudy/request/{id} | API key |
POST | /channel/vudy/send/create | Header context |
POST | /channel/vudy/send/preview | Header context |
POST | /channel/vudy/send/{id}/prepare-sponsored-tx | Header context |
POST | /channel/vudy/send/{id}/process-send-tx | Session |
POST | /channel/vudy/send/{id}/process-sponsored-tx | Header context |
GET | /channel/vudy/tag | API key |
GET | /v1/vudy/request/{id}/invoice-pdf | API key |
POST | /v1/vudy/request/{id}/notify-client | API key |
GET | /v1/vudy/send/contracts | API key |
Details#
GET /channel/paq/preview#
Returns the estimated amount received in QTZ and USD for a given chain, token address, and send amount. API key only (no profile context required).
| Auth | API key |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | PAQ withdrawals |
Requires x-api-key. No session required.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Path parameters#
None.
Query parameters#
| Field | Type | Required |
|---|---|---|
amount | positive numeric string | Yes |
chain | string | Yes |
token | EVM token address | Yes |
Body#
Not applicable.
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
HTTP statuses used by this route: 400, 200.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
GET /channel/paq/validate-phone#
Validates codigopaq (phone) via PAQ consulta. Query: codigopaq; optional capabilityId. When capabilityId is provided and valid (belongs to PAQ channel), returns { ok, signature } so client can send [codigopaq, signature] to
| Auth | API key |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | PAQ withdrawals |
Requires x-api-key. No session required.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Path parameters#
None.
Query parameters#
| Field | Type | Required |
|---|---|---|
capabilityId | UUID | No |
codigopaq | string | Yes |
Body#
Not applicable.
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
HTTP statuses used by this route: 400, 200.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
POST /channel/paq/withdraw#
Creates a PAQ withdrawal (recharge). Gas for PAQ withdraws is sponsored by Vudy. When the session can sign, the transfer may complete in this call; otherwise follow GET .../sign-payload then POST .../process-sponsored-tx with the user signature.
| Auth | Header context |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | PAQ withdrawals |
Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Authorization | Optional (preferred) |
x-profile-id | Required when no session |
x-team-id | Required when no session |
Path parameters#
None.
Query parameters#
None.
Body#
| Field | Type | Required |
|---|---|---|
codigopaq | string | Yes |
destinationCountry | string | Yes |
chain | string | Yes |
token | string | Yes |
amount | number | Yes |
sendWallet | string | No |
note | string | No |
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
HTTP statuses used by this route: 400, 403, 500, 200.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
POST /channel/paq/withdraw/{txId}/process-sponsored-tx#
Submits the user signature from the sign-payload step and completes the sponsored PAQ withdrawal.
| Auth | API key |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | PAQ withdrawals |
Requires x-api-key. No session required.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Path parameters#
| Param | Description |
|---|---|
txId | Path parameter. |
Query parameters#
None.
Body#
| Field | Type | Required |
|---|---|---|
userSignature | string | Yes |
Success response#
{
"success": true,
"data": {
"txHash": "0x...",
"txId": "tx-uuid",
"rechargeId": "recharge-uuid"
}
}Errors and statuses#
HTTP statuses used by this route: 400, 500, 200.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
GET /channel/paq/withdraw/{txId}/sign-payload#
Returns typedData and signerAddress for the client wallet to sign when the withdrawal needs a sponsored follow-up.
| Auth | API key |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | PAQ withdrawals |
Requires x-api-key. No session required.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Path parameters#
| Param | Description |
|---|---|
txId | Path parameter. |
Query parameters#
None.
Body#
Not applicable.
Success response#
{
"success": true,
"data": {
"typedData": {},
"signerAddress": "0x..."
}
}typedData is the EIP-712 payload the client wallet must sign before POST .../process-sponsored-tx.
Errors and statuses#
HTTP statuses used by this route: 400, 200.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
POST /channel/unlimit/offramp#
Unlimit Offramp Create Endpoint
| Auth | Header context |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Unlimit ramps |
Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Authorization | Optional (preferred) |
x-profile-id | Required when no session |
x-team-id | Required when no session |
Path parameters#
None.
Query parameters#
None.
Body#
| Field | Type | Required |
|---|---|---|
amount | number | Yes |
fiat | string | Yes |
payment | string | Yes |
crypto | string | Yes |
chainId | number | Yes |
wallet | string | No |
country | string | Yes |
language | string | No |
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
HTTP statuses used by this route: 400, 403, 500, 200, 401.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
GET /channel/unlimit/offramp/config#
Unlimit Offramp Config Endpoint
| Auth | Header context |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Unlimit ramps |
Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Authorization | Optional (preferred) |
x-profile-id | Required when no session |
x-team-id | Required when no session |
Path parameters#
None.
Query parameters#
None.
Body#
Not applicable.
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
HTTP statuses used by this route: 400, 403, 500, 200, 401.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
GET /channel/unlimit/offramp/quote#
Unlimit Offramp Quote Endpoint
| Auth | Header context |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Unlimit ramps |
Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Authorization | Optional (preferred) |
x-profile-id | Required when no session |
x-team-id | Required when no session |
Path parameters#
None.
Query parameters#
| Field | Type | Required |
|---|---|---|
amount | string | Yes |
fiat | string | Yes |
payment | string | Yes |
crypto | string | Yes |
chainId | string | Yes |
country | string | No |
language | string | No |
calcByFiat | string | No |
Body#
Not applicable.
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
HTTP statuses used by this route: 400, 403, 500, 200, 401.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
POST /channel/unlimit/onramp#
Unlimit Onramp Create Endpoint
| Auth | Header context |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Unlimit ramps |
Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Authorization | Optional (preferred) |
x-profile-id | Required when no session |
x-team-id | Required when no session |
Path parameters#
None.
Query parameters#
None.
Body#
| Field | Type | Required |
|---|---|---|
amount | number | Yes |
fiat | string | Yes |
payment | string | Yes |
crypto | string | Yes |
chainId | number | Yes |
redirectUrl | string | No |
wallet | string | No |
country | string | Yes |
language | string | No |
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
HTTP statuses used by this route: 400, 403, 500, 200, 401.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
GET /channel/unlimit/onramp/config#
Unlimit Config Endpoint — step-by-step rebuild.
| Auth | Header context |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Unlimit ramps |
Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Authorization | Optional (preferred) |
x-profile-id | Required when no session |
x-team-id | Required when no session |
Path parameters#
None.
Query parameters#
None.
Body#
Not applicable.
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
HTTP statuses used by this route: 400, 403, 500, 200, 401.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
GET /channel/unlimit/onramp/quote#
Unlimit Quote Endpoint
| Auth | Header context |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Unlimit ramps |
Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Authorization | Optional (preferred) |
x-profile-id | Required when no session |
x-team-id | Required when no session |
Path parameters#
None.
Query parameters#
| Field | Type | Required |
|---|---|---|
amount | string | Yes |
fiat | string | Yes |
payment | string | Yes |
crypto | string | Yes |
chainId | string | Yes |
country | string | No |
language | string | No |
isAmountCrypto | string | No |
Body#
Not applicable.
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
HTTP statuses used by this route: 400, 403, 500, 200, 401.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
GET /channel/unlimit/orders#
Lists app-scoped Unlimit on-ramp and off-ramp orders, newest first.
| Auth | API key |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Unlimit ramps |
Requires x-api-key. No session required.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Path parameters#
None.
Query parameters#
| Field | Type | Required |
|---|---|---|
limit | string | No |
offset | string | No |
walletId | string | No |
walletAddress | string | No |
email | string | No |
status | string | No |
from | string | No |
to | string | No |
method | enum: onramp, offramp, all | No; defaults to all |
Body#
Not applicable.
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
HTTP statuses used by this route: 400, 500, 200.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
GET /channel/unlimit/orders/{orderId}#
Returns a single Unlimit order by provider order id (read-only). Prefer polling this endpoint for status; do not rely on outbound webhooks alone for Unlimit order updates.
| Auth | API key |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Unlimit ramps |
Requires x-api-key. No session required.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Path parameters#
| Param | Description |
|---|---|
orderId | Path parameter. |
Query parameters#
None.
Body#
Not applicable.
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
HTTP statuses used by this route: 400, 500, 404, 200.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
POST /channel/unlimit/{txId}/refresh-url#
Refreshes the hosted Unlimit payment URL for an existing on-ramp/off-ramp transaction. Session required.
| Auth | Session |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Unlimit ramps |
Requires x-api-key and Authorization: Bearer <session>.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Authorization | Yes — Bearer <session> |
Path parameters#
| Param | Description |
|---|---|
txId | Path parameter. |
Query parameters#
None.
Body#
| Field | Type | Required |
|---|---|---|
amount | number | Yes |
redirectUrl | string | No |
language | string | No |
Success response#
Same adapter createTx shape as POST /channels/execute for Unlimit:
{
"success": true,
"data": {
"txId": "tx-uuid",
"channelTableType": "ch_unlimit_onramp",
"recordId": "record-uuid",
"walletFlow": "external",
"providerPayload": {
"url": "https://...",
"orderCustomId": "order-custom-id",
"expiresAt": "2026-07-28T12:00:00.000Z",
"refreshUrlEndpoint": "/channel/unlimit/tx-uuid/refresh-url"
}
}
}channelTableType is ch_unlimit_onramp or ch_unlimit_offramp depending on the original tx.
Errors and statuses#
HTTP statuses used by this route: 400, 403, 500, 404, 501, 200.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
POST /channel/vudy/request/create#
Creates a Vudy payment request for the active profile/team and returns shareable url / embedUrl (and related ids).
| Auth | Header context |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Vudy payment requests |
Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Authorization | Optional (preferred) |
x-profile-id | Required when no session |
x-team-id | Required when no session |
Path parameters#
None.
Query parameters#
None.
Body#
| Field | Type | Required |
|---|---|---|
targetAddress | string | Yes |
amount | number | Yes |
channelParams | object | Yes |
channelParams.customId | string | No |
channelParams.note | string | No |
channelParams.requestedChain | string | No |
channelParams.requestedToken | string | No |
channelParams.currencyToken | string | No |
channelParams.addedFee | object or null | No |
Success response#
{
"success": true,
"data": {
"id": "request-uuid",
"url": "/request/tx-uuid",
"embedUrl": "/request/embed/tx-uuid",
"txId": "tx-uuid",
"channelTableType": "ch_vudy_request"
}
}Errors and statuses#
HTTP statuses used by this route: 400, 403, 500, 200, 401.
| Code | Meaning |
|---|---|
CH-01 | Invalid API key |
CH-02 | Invalid profile or team access |
CH-03 | Invalid request body |
CH-04 | Channel not available for app |
CH-06 | Invalid channel parameters |
CH-07 | Channel function execution failed |
GET /channel/vudy/request/{id}#
Returns a Vudy payment request by id (status, amounts, and related fields).
| Auth | API key |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Vudy payment requests |
Requires x-api-key. No session required.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Path parameters#
| Param | Description |
|---|---|
id | Path parameter. |
Query parameters#
None.
Body#
Not applicable.
Success response#
Envelope wraps request/tx detail. Nested objects follow stored resource shapes; reliably known top-level keys:
{
"success": true,
"data": {
"tx": {
"txs": {},
"channel": {},
"token": {},
"chain": {}
},
"detail": {},
"profile": {
"id": "profile-uuid",
"name": "Example Creator",
"image": null
},
"team": {
"id": "team-uuid",
"name": "Example Team",
"image": null
}
}
}team is omitted when unavailable. offers is included for OTC-correlated txs.
Errors and statuses#
HTTP statuses used by this route: 500, 404, 200.
| Code | Meaning |
|---|---|
1 | Request not found |
2 | Transaction not found |
3 | Action not found |
4 | Invalid HTTP method |
5 | Invalid request body |
POST /channel/vudy/request/{id}#
Processes payment for an existing Vudy payment request (payer flow). Rejected if already completed or failed.
| Auth | API key |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Vudy payment requests |
Requires x-api-key. No session required.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Path parameters#
| Param | Description |
|---|---|
id | Path parameter. |
Query parameters#
None.
Body#
| Field | Type | Required |
|---|---|---|
sender | string | Yes |
chain | string | Yes |
token | string | Yes |
Success response#
{
"success": true,
"data": {
"request": {
"id": "request-123",
"status": "open"
},
"tx": {
"id": "tx-456",
"status": "pending"
},
"team": {
"id": "team-789",
"name": "Example Team"
}
}
}Errors and statuses#
HTTP statuses used by this route: 400, 500, 404, 200.
| Code | Meaning |
|---|---|
1 | Request not found |
2 | Transaction not found |
3 | Action not found |
4 | Invalid HTTP method |
5 | Invalid request body |
POST /channel/vudy/send/create#
Creates a Vudy send for the active profile/team context.
| Auth | Header context |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Vudy sends |
Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Authorization | Optional (preferred) |
x-profile-id | Required when no session |
x-team-id | Required when no session |
Path parameters#
None.
Query parameters#
None.
Body#
| Field | Type | Required |
|---|---|---|
targetAddress | string | Yes |
amount | number | Yes |
channelParams | object | Yes |
Success response#
{
"success": true,
"data": {
"txId": "tx-uuid",
"sendId": "send-uuid",
"transactions": [],
"gasTransactions": [],
"chainId": "chain-uuid",
"contractAddress": "0x...",
"allowanceOk": true,
"needsSponsorship": false,
"totalTokenRequired": "0",
"totalNativeForGas": "0"
}
}transactions / gasTransactions contents depend on chain and sponsorship needs.
Errors and statuses#
HTTP statuses used by this route: 400, 403, 500, 200.
| Code | Meaning |
|---|---|
CH-01 | Invalid API key |
CH-02 | Invalid profile or team access |
CH-03 | Invalid request body |
CH-04 | Channel not available for app |
CH-06 | Invalid channel parameters |
CH-07 | Channel function execution failed |
POST /channel/vudy/send/preview#
Previews a Vudy send without creating a send or transaction. Use it for fee calculations, sponsorship eligibility, and balance checks before POST /channel/vudy/send/create.
| Auth | Header context |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Vudy sends |
Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Authorization | Optional (preferred) |
x-profile-id | Required when no session |
x-team-id | Required when no session |
Path parameters#
None.
Query parameters#
None.
Body#
| Field | Type | Required |
|---|---|---|
senderAddress | string | Yes |
amount | number | Yes |
channelParams | object | Yes |
channelParams.chain | string | Yes |
channelParams.token | string | Yes |
channelParams.currencyToken | string or null | No |
channelParams.gasConversionUsd | non-negative number or null | No |
channelParams.recipients | array | Yes — at least one; each item needs positive amount and either address or vudyTag |
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
HTTP statuses used by this route: 400, 403, 200.
| Code | Meaning |
|---|---|
CH-01 | Invalid API key |
CH-04 | Channel not available for app |
APP_CHANNEL_VUDY_SEND_PREVIEW#2 | Invalid parameters |
POST /channel/vudy/send/{id}/prepare-sponsored-tx#
Prepares sponsored tx signing payload for external wallets.
| Auth | Header context |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Vudy sends |
Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Authorization | Optional (preferred) |
x-profile-id | Required when no session |
x-team-id | Required when no session |
Path parameters#
| Param | Description |
|---|---|
id | Path parameter. |
Query parameters#
None.
Body#
| Field | Type | Required |
|---|---|---|
txIndex | non-negative integer | No — defaults to 0 |
Success response#
Returns prepareId, expiresAtMs, attestation, EIP-712 typedData, and signerAddress. Sign the typed data, then pass prepareId, attestation, and the resulting userSignature to process-sponsored-tx.
Errors and statuses#
HTTP statuses used by this route: 400, 409, 403, 500, 404, 200.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
POST /channel/vudy/send/{id}/process-send-tx#
This endpoint processes individual transactions from a V2 send. For seamless wallets (backend has access), it signs and sends via the wallet stack. For client wallets, it returns the transaction payload for client signing.
| Auth | Session |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Vudy sends |
Requires x-api-key and Authorization: Bearer <session>.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Authorization | Yes — Bearer <session> |
Path parameters#
| Param | Description |
|---|---|
id | Path parameter. |
Query parameters#
None.
Body#
| Field | Type | Required |
|---|---|---|
txType | enum: regular, gas | Yes |
txIndex | non-negative integer | Yes |
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
HTTP statuses used by this route: 400, 409, 403, 500, 404, 200.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
POST /channel/vudy/send/{id}/process-sponsored-tx#
Processes a sponsored Vudy send. For an external wallet, send all three prepare outputs: prepareId, attestation, and userSignature. Without prepareId, a valid session is required so the route can sign with the user wallet.
| Auth | Header context |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Vudy sends |
Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Authorization | Optional (preferred) |
x-profile-id | Required when no session |
x-team-id | Required when no session |
Path parameters#
| Param | Description |
|---|---|
id | Path parameter. |
Query parameters#
None.
Body#
| Field | Type | Required |
|---|---|---|
txIndex | non-negative integer | No; defaults to 0 without a prepare id |
prepareId | non-empty string | No |
attestation | non-empty string | Required with prepareId |
userSignature | non-empty string | Required with prepareId |
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
HTTP statuses used by this route: 400, 409, 403, 500, 404, 200.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
GET /channel/vudy/tag#
GET endpoint to validate one or more Vudy tags (usernames) and resolve them to display name and wallet address. Returns per-tag results so clients can show which tags are valid and which failed.
| Auth | API key |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Vudy sends |
Requires x-api-key. No session required.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Path parameters#
None.
Query parameters#
| Field | Type | Required |
|---|---|---|
address | string | No |
tags | string | No |
Body#
Not applicable.
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).
GET /v1/vudy/request/{id}/invoice-pdf#
Downloading PDF invoices for completed vudy requests. Generates PDFs from HTML template.
| Auth | API key |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Vudy payment requests |
Requires x-api-key. No session required.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Path parameters#
| Param | Description |
|---|---|
id | Path parameter. |
Query parameters#
| Field | Type | Required |
|---|---|---|
language | string | No |
Body#
Not applicable.
Success response#
Standard envelope: { "success": true, "data": <resource> }. See the linked guide for workflow-specific fields.
Errors and statuses#
HTTP statuses used by this route: 400, 500, 404, 200.
| Code | Meaning |
|---|---|
1 | Request not found |
2 | Request not completed |
3 | Failed to read template |
4 | Failed to generate PDF |
POST /v1/vudy/request/{id}/notify-client#
Sending confirmation emails for completed vudy requests. Tracks notification counts and logs team actions.
| Auth | API key |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Vudy payment requests |
Requires x-api-key. No session required.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Path parameters#
| Param | Description |
|---|---|
id | Path parameter. |
Query parameters#
None.
Body#
| Field | Type | Required |
|---|---|---|
email | string (email) | Yes |
language | enum | No |
Success response#
{
"success": true,
"data": {
"email": "user@example.com",
"notificationCount": 1,
"requestId": "req-123"
}
}Errors and statuses#
HTTP statuses used by this route: 400, 500, 404, 200.
| Code | Meaning |
|---|---|
1 | Request not found |
2 | Request not completed |
3 | Invalid email |
4 | Failed to update notification tracking |
5 | Failed to send email |
GET /v1/vudy/send/contracts#
Retrieving all send contract addresses across all supported blockchain chains. Returns a mapping of chain slugs to their corresponding send contract addresses.
| Auth | API key |
| Permissions | Standard API-key access (no extra permission flags). |
| Guide | Vudy sends |
Requires x-api-key. No session required.
Headers#
| Header | Required |
|---|---|
x-api-key | Yes |
Path parameters#
None.
Query parameters#
None.
Body#
Not applicable.
Success response#
{
"success": true,
"data": {
"ethereum": "0xContractAddress…"
}
}Errors and statuses#
HTTP statuses used by this route: 500, 200.
Typical failures: 403 (API key/permissions), 401 (session/context), 400 (validation), 429 (rate limit).