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#

MethodPathAuth
GET/channel/paq/previewAPI key
GET/channel/paq/validate-phoneAPI key
POST/channel/paq/withdrawHeader context
POST/channel/paq/withdraw/{txId}/process-sponsored-txAPI key
GET/channel/paq/withdraw/{txId}/sign-payloadAPI key
POST/channel/unlimit/offrampHeader context
GET/channel/unlimit/offramp/configHeader context
GET/channel/unlimit/offramp/quoteHeader context
POST/channel/unlimit/onrampHeader context
GET/channel/unlimit/onramp/configHeader context
GET/channel/unlimit/onramp/quoteHeader context
GET/channel/unlimit/ordersAPI key
GET/channel/unlimit/orders/{orderId}API key
POST/channel/unlimit/{txId}/refresh-urlSession
POST/channel/vudy/request/createHeader context
GET/channel/vudy/request/{id}API key
POST/channel/vudy/request/{id}API key
POST/channel/vudy/send/createHeader context
POST/channel/vudy/send/previewHeader context
POST/channel/vudy/send/{id}/prepare-sponsored-txHeader context
POST/channel/vudy/send/{id}/process-send-txSession
POST/channel/vudy/send/{id}/process-sponsored-txHeader context
GET/channel/vudy/tagAPI key
GET/v1/vudy/request/{id}/invoice-pdfAPI key
POST/v1/vudy/request/{id}/notify-clientAPI key
GET/v1/vudy/send/contractsAPI 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).

AuthAPI key
PermissionsStandard API-key access (no extra permission flags).
GuidePAQ withdrawals

Requires x-api-key. No session required.

Headers#

HeaderRequired
x-api-keyYes

Path parameters#

None.

Query parameters#

FieldTypeRequired
amountpositive numeric stringYes
chainstringYes
tokenEVM token addressYes

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

AuthAPI key
PermissionsStandard API-key access (no extra permission flags).
GuidePAQ withdrawals

Requires x-api-key. No session required.

Headers#

HeaderRequired
x-api-keyYes

Path parameters#

None.

Query parameters#

FieldTypeRequired
capabilityIdUUIDNo
codigopaqstringYes

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.

AuthHeader context
PermissionsStandard API-key access (no extra permission flags).
GuidePAQ withdrawals

Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.

Headers#

HeaderRequired
x-api-keyYes
AuthorizationOptional (preferred)
x-profile-idRequired when no session
x-team-idRequired when no session

Path parameters#

None.

Query parameters#

None.

Body#

FieldTypeRequired
codigopaqstringYes
destinationCountrystringYes
chainstringYes
tokenstringYes
amountnumberYes
sendWalletstringNo
notestringNo

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.

AuthAPI key
PermissionsStandard API-key access (no extra permission flags).
GuidePAQ withdrawals

Requires x-api-key. No session required.

Headers#

HeaderRequired
x-api-keyYes

Path parameters#

ParamDescription
txIdPath parameter.

Query parameters#

None.

Body#

FieldTypeRequired
userSignaturestringYes

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.

AuthAPI key
PermissionsStandard API-key access (no extra permission flags).
GuidePAQ withdrawals

Requires x-api-key. No session required.

Headers#

HeaderRequired
x-api-keyYes

Path parameters#

ParamDescription
txIdPath 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

AuthHeader context
PermissionsStandard API-key access (no extra permission flags).
GuideUnlimit ramps

Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.

Headers#

HeaderRequired
x-api-keyYes
AuthorizationOptional (preferred)
x-profile-idRequired when no session
x-team-idRequired when no session

Path parameters#

None.

Query parameters#

None.

Body#

FieldTypeRequired
amountnumberYes
fiatstringYes
paymentstringYes
cryptostringYes
chainIdnumberYes
walletstringNo
countrystringYes
languagestringNo

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

AuthHeader context
PermissionsStandard API-key access (no extra permission flags).
GuideUnlimit ramps

Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.

Headers#

HeaderRequired
x-api-keyYes
AuthorizationOptional (preferred)
x-profile-idRequired when no session
x-team-idRequired 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

AuthHeader context
PermissionsStandard API-key access (no extra permission flags).
GuideUnlimit ramps

Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.

Headers#

HeaderRequired
x-api-keyYes
AuthorizationOptional (preferred)
x-profile-idRequired when no session
x-team-idRequired when no session

Path parameters#

None.

Query parameters#

FieldTypeRequired
amountstringYes
fiatstringYes
paymentstringYes
cryptostringYes
chainIdstringYes
countrystringNo
languagestringNo
calcByFiatstringNo

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

AuthHeader context
PermissionsStandard API-key access (no extra permission flags).
GuideUnlimit ramps

Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.

Headers#

HeaderRequired
x-api-keyYes
AuthorizationOptional (preferred)
x-profile-idRequired when no session
x-team-idRequired when no session

Path parameters#

None.

Query parameters#

None.

Body#

FieldTypeRequired
amountnumberYes
fiatstringYes
paymentstringYes
cryptostringYes
chainIdnumberYes
redirectUrlstringNo
walletstringNo
countrystringYes
languagestringNo

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.

AuthHeader context
PermissionsStandard API-key access (no extra permission flags).
GuideUnlimit ramps

Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.

Headers#

HeaderRequired
x-api-keyYes
AuthorizationOptional (preferred)
x-profile-idRequired when no session
x-team-idRequired 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

AuthHeader context
PermissionsStandard API-key access (no extra permission flags).
GuideUnlimit ramps

Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.

Headers#

HeaderRequired
x-api-keyYes
AuthorizationOptional (preferred)
x-profile-idRequired when no session
x-team-idRequired when no session

Path parameters#

None.

Query parameters#

FieldTypeRequired
amountstringYes
fiatstringYes
paymentstringYes
cryptostringYes
chainIdstringYes
countrystringNo
languagestringNo
isAmountCryptostringNo

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.

AuthAPI key
PermissionsStandard API-key access (no extra permission flags).
GuideUnlimit ramps

Requires x-api-key. No session required.

Headers#

HeaderRequired
x-api-keyYes

Path parameters#

None.

Query parameters#

FieldTypeRequired
limitstringNo
offsetstringNo
walletIdstringNo
walletAddressstringNo
emailstringNo
statusstringNo
fromstringNo
tostringNo
methodenum: onramp, offramp, allNo; 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.

AuthAPI key
PermissionsStandard API-key access (no extra permission flags).
GuideUnlimit ramps

Requires x-api-key. No session required.

Headers#

HeaderRequired
x-api-keyYes

Path parameters#

ParamDescription
orderIdPath 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.

AuthSession
PermissionsStandard API-key access (no extra permission flags).
GuideUnlimit ramps

Requires x-api-key and Authorization: Bearer <session>.

Headers#

HeaderRequired
x-api-keyYes
AuthorizationYes — Bearer <session>

Path parameters#

ParamDescription
txIdPath parameter.

Query parameters#

None.

Body#

FieldTypeRequired
amountnumberYes
redirectUrlstringNo
languagestringNo

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).

AuthHeader context
PermissionsStandard API-key access (no extra permission flags).
GuideVudy payment requests

Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.

Headers#

HeaderRequired
x-api-keyYes
AuthorizationOptional (preferred)
x-profile-idRequired when no session
x-team-idRequired when no session

Path parameters#

None.

Query parameters#

None.

Body#

FieldTypeRequired
targetAddressstringYes
amountnumberYes
channelParamsobjectYes
channelParams.customIdstringNo
channelParams.notestringNo
channelParams.requestedChainstringNo
channelParams.requestedTokenstringNo
channelParams.currencyTokenstringNo
channelParams.addedFeeobject or nullNo

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.

CodeMeaning
CH-01Invalid API key
CH-02Invalid profile or team access
CH-03Invalid request body
CH-04Channel not available for app
CH-06Invalid channel parameters
CH-07Channel function execution failed

GET /channel/vudy/request/{id}#

Returns a Vudy payment request by id (status, amounts, and related fields).

AuthAPI key
PermissionsStandard API-key access (no extra permission flags).
GuideVudy payment requests

Requires x-api-key. No session required.

Headers#

HeaderRequired
x-api-keyYes

Path parameters#

ParamDescription
idPath 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.

CodeMeaning
1Request not found
2Transaction not found
3Action not found
4Invalid HTTP method
5Invalid request body

POST /channel/vudy/request/{id}#

Processes payment for an existing Vudy payment request (payer flow). Rejected if already completed or failed.

AuthAPI key
PermissionsStandard API-key access (no extra permission flags).
GuideVudy payment requests

Requires x-api-key. No session required.

Headers#

HeaderRequired
x-api-keyYes

Path parameters#

ParamDescription
idPath parameter.

Query parameters#

None.

Body#

FieldTypeRequired
senderstringYes
chainstringYes
tokenstringYes

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.

CodeMeaning
1Request not found
2Transaction not found
3Action not found
4Invalid HTTP method
5Invalid request body

POST /channel/vudy/send/create#

Creates a Vudy send for the active profile/team context.

AuthHeader context
PermissionsStandard API-key access (no extra permission flags).
GuideVudy sends

Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.

Headers#

HeaderRequired
x-api-keyYes
AuthorizationOptional (preferred)
x-profile-idRequired when no session
x-team-idRequired when no session

Path parameters#

None.

Query parameters#

None.

Body#

FieldTypeRequired
targetAddressstringYes
amountnumberYes
channelParamsobjectYes

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.

CodeMeaning
CH-01Invalid API key
CH-02Invalid profile or team access
CH-03Invalid request body
CH-04Channel not available for app
CH-06Invalid channel parameters
CH-07Channel 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.

AuthHeader context
PermissionsStandard API-key access (no extra permission flags).
GuideVudy sends

Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.

Headers#

HeaderRequired
x-api-keyYes
AuthorizationOptional (preferred)
x-profile-idRequired when no session
x-team-idRequired when no session

Path parameters#

None.

Query parameters#

None.

Body#

FieldTypeRequired
senderAddressstringYes
amountnumberYes
channelParamsobjectYes
channelParams.chainstringYes
channelParams.tokenstringYes
channelParams.currencyTokenstring or nullNo
channelParams.gasConversionUsdnon-negative number or nullNo
channelParams.recipientsarrayYes — 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.

CodeMeaning
CH-01Invalid API key
CH-04Channel not available for app
APP_CHANNEL_VUDY_SEND_PREVIEW#2Invalid parameters

POST /channel/vudy/send/{id}/prepare-sponsored-tx#

Prepares sponsored tx signing payload for external wallets.

AuthHeader context
PermissionsStandard API-key access (no extra permission flags).
GuideVudy sends

Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.

Headers#

HeaderRequired
x-api-keyYes
AuthorizationOptional (preferred)
x-profile-idRequired when no session
x-team-idRequired when no session

Path parameters#

ParamDescription
idPath parameter.

Query parameters#

None.

Body#

FieldTypeRequired
txIndexnon-negative integerNo — 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.

AuthSession
PermissionsStandard API-key access (no extra permission flags).
GuideVudy sends

Requires x-api-key and Authorization: Bearer <session>.

Headers#

HeaderRequired
x-api-keyYes
AuthorizationYes — Bearer <session>

Path parameters#

ParamDescription
idPath parameter.

Query parameters#

None.

Body#

FieldTypeRequired
txTypeenum: regular, gasYes
txIndexnon-negative integerYes

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.

AuthHeader context
PermissionsStandard API-key access (no extra permission flags).
GuideVudy sends

Requires x-api-key. Use Authorization: Bearer <session> or x-profile-id + x-team-id.

Headers#

HeaderRequired
x-api-keyYes
AuthorizationOptional (preferred)
x-profile-idRequired when no session
x-team-idRequired when no session

Path parameters#

ParamDescription
idPath parameter.

Query parameters#

None.

Body#

FieldTypeRequired
txIndexnon-negative integerNo; defaults to 0 without a prepare id
prepareIdnon-empty stringNo
attestationnon-empty stringRequired with prepareId
userSignaturenon-empty stringRequired 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.

AuthAPI key
PermissionsStandard API-key access (no extra permission flags).
GuideVudy sends

Requires x-api-key. No session required.

Headers#

HeaderRequired
x-api-keyYes

Path parameters#

None.

Query parameters#

FieldTypeRequired
addressstringNo
tagsstringNo

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.

AuthAPI key
PermissionsStandard API-key access (no extra permission flags).
GuideVudy payment requests

Requires x-api-key. No session required.

Headers#

HeaderRequired
x-api-keyYes

Path parameters#

ParamDescription
idPath parameter.

Query parameters#

FieldTypeRequired
languagestringNo

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.

CodeMeaning
1Request not found
2Request not completed
3Failed to read template
4Failed to generate PDF

POST /v1/vudy/request/{id}/notify-client#

Sending confirmation emails for completed vudy requests. Tracks notification counts and logs team actions.

AuthAPI key
PermissionsStandard API-key access (no extra permission flags).
GuideVudy payment requests

Requires x-api-key. No session required.

Headers#

HeaderRequired
x-api-keyYes

Path parameters#

ParamDescription
idPath parameter.

Query parameters#

None.

Body#

FieldTypeRequired
emailstring (email)Yes
languageenumNo

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.

CodeMeaning
1Request not found
2Request not completed
3Invalid email
4Failed to update notification tracking
5Failed 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.

AuthAPI key
PermissionsStandard API-key access (no extra permission flags).
GuideVudy sends

Requires x-api-key. No session required.

Headers#

HeaderRequired
x-api-keyYes

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).