Request the quote with wallet addresses (and
pixKey for fiat offramps) and the response already includes the executable fields (id, transactionData, and paymentInstructions for fiat onramps) — you do not need a second POST /v2/swap/bytecode call.Introduction
The system automatically detects the route type from the chains you pass and routes to the appropriate provider:
Same-chain swap:
originChain equals destinationChain
Cross-chain swap: originChain differs from destinationChain
Fiat ramp: originChain or destinationChain is fiatAuthentication
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
Get a quote
Request a same-chain, cross-chain, or fiat quote. Pass
originAddress and destinationAddress (or pixKey for fiat offramps) so the response includes executable fields.2
Review the quote
Read Full guide: Get a quote.
tokenOut.expectedAmountOut / minAmountOut and feeBreakdown before executing, and store the canonical chainIdIn / chainIdOut and quote.quoteId:3
Execute
Execute all origin-chain Full guide: Execute a swap (atomic batching via EIP-7702 or Executing Bytecode).
transactionData legs as one atomic batch (EIP-7702 or a smart-account userOp) from originAddress — never submit them one by one, or a later failure can leave approvals/transfers committed and strand funds. Fiat onramps have nothing to sign — show paymentInstructions instead:4
Track
Poll the swap to Full guide: Track a swap.
fulfilled with the quote’s quoteId, or subscribe to live WebSocket updates: