Preview a withdrawal
appIdbearerAuthx-app-id<token>Your application ID. Required on app-tier and user-tier routes. Omitted on routes that authenticate with x-app-api-key only.
AuthorizationBearer <JWT>JWT access token from POST /auth/verify. Required with x-app-id on user routes. On the smart-route quote it is optional and turns a preview into an executable quote.
application/json- body
requestId?stringOptional idempotency key for an exact-amount transfer. Reuse with the identical body to recover a lost response. Not combined with max.
uuidamountRaw*stringAmount to deliver, as a positive integer string in the destination token's atomic units (6 decimals, so 1000000 = 1 USDC; 18 decimals on BNB Chain). Minimum is one whole token. Same-chain transfers debit exactly this. A bridge or swap leg debits up to ~2% more to cover its fee, and when the live fee is lower the recipient gets more than this amount; the preview's receiveAmountRaw is the estimate. To withdraw everything, send max: true.
^[1-9][0-9]*$tokenSymbol*stringStable-coin symbol the withdrawal is denominated in.
"USDC""USDC.e""USDT"destinationAddress*stringRecipient address. EVM destinations: 0x-prefixed 20-byte hex. Solana: base58 (32–44 chars).
^(0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44})$destinationChainId*integerChain ID where the recipient address should receive funds.
1 <= valuemax?booleanWithdraw-max intent: cap amountRaw to the deliverable maximum instead of rejecting it. Send the full balance as amountRaw with this flag to empty the balance.
signingAddress?stringSelf-custody: the linked EVM wallet that owns and signs this withdrawal. Omit for managed custody.
42 <= length <= 42approveMode?stringSelf-custody only (ignored without signingAddress): what the signing wallet can sign. Send the same value to the quote, preview and withdraw. sponsored (default): the wallet can sign an EIP-7702 authorization and Calibur batch, so every source is available. user_broadcast: it cannot (e.g. MetaMask). The withdrawal still never asks it to send a transaction or hold gas; sources that would need a batch (an approve, a same-chain swap, or a same-chain transfer of anything but native Circle USDC; decided by token) are left out of Max, preview and selection. A same-chain native USDC transfer is then two EIP-3009 signatures (amount less the network fee, and the fee).
"sponsored""user_broadcast"200
application/json- response
receiveAmountRaw*stringEstimated amount delivered. null when unviable. Integer string in the destination token's atomic units (6 decimals, so 1000000 = 1 USDC; 18 decimals on BNB Chain).
feeRaw*stringEstimated fee, deducted from the withdrawn amount (amount in minus amount delivered). Integer string in the destination token's atomic units (6 decimals, so 1000000 = 1 USDC; 18 decimals on BNB Chain).
relayFeeRaw*stringBridge provider part of feeRaw; currently equal to it. Integer string in the destination token's atomic units (6 decimals, so 1000000 = 1 USDC; 18 decimals on BNB Chain).
networkFeeRaw*stringReserved for a separate network fee; currently always null.
pricingStatus*stringquoted: the withdrawal can be routed. unviable: it cannot; see unviableReason.
"quoted""unviable"quoteExpiresAt*stringISO-8601 time the quote expires (60 seconds after quoting).
unviableReason*stringReadable reason when unviable: insufficient balance, too small to cover fees, no liquidity, or no safe route.
maxDeliverableRaw*stringSet only when the request exceeds the balance: the largest amountRaw that can be routed. It assumes the full ~2% fee buffer per bridge or swap leg, so the amount actually received is usually higher (see receiveAmountRaw on a quoted preview). Integer string in the destination token's atomic units (6 decimals, so 1000000 = 1 USDC; 18 decimals on BNB Chain).
curl -X POST 'https://api.t.sufwankhalid.com/execution/withdraw/preview' \ -H 'Content-Type: application/json' \ -d '{ "amountRaw": "50000000", "tokenSymbol": "USDC", "destinationAddress": "0x2f9a4c7e1b3d6f8a0c5e9b2d4f7a1c3e6b8d0f52", "destinationChainId": 8453}'{ "receiveAmountRaw": "49930000", "feeRaw": "70000", "relayFeeRaw": "50000", "networkFeeRaw": "20000", "pricingStatus": "quoted", "quoteExpiresAt": "2026-09-29T15:21:00.000Z", "unviableReason": null, "maxDeliverableRaw": "124880000"}