Skip to main content
RAVN spans three execution models. POST /execute returns exactly one of them, tagged by executionType. Your integration reads that single field and branches. Nothing else about the flow changes.

TRANSACTION

Sign and broadcast the returned transaction.
Across, Relay, Mayan, Jupiter, Eco Routes, Garden, THORChain, Bebop (self-executed)

SIGNATURE

Sign typed data, with no gas and no send. RAVN submits it.
0x Gasless, Bebop (gasless), CoW, Relay (gasless permit)

DEPOSIT

Send the origin asset to an address.
NEAR Intents, Chainflip, Relay (BTC source), Garden (BTC source)
A few venues return different types depending on the source chain or execution mode. See the Execution column on Supported Chains & Venues for exactly which.

The payloads

Branch logic

The approval step

Both TRANSACTION and SIGNATURE payloads can carry an optional approval, a ready-to-send ERC-20 approve() call.
On TRANSACTION: send approval, wait for it to be mined, then send transaction. The swap moves your tokens with transferFrom, so an allowance that is merely broadcast, and not yet in a block, still reverts, and the user pays gas for a failed transaction. On SIGNATURE: land the allowance before you submit the signed order. Gasless does not mean allowance-free: CoW settles through its vault relayer and Bebop through Permit2. Skip it and the order is accepted and then silently never fills, with no error to debug. Read the on-chain allowance for spender first and skip the approval when it already covers amount. RAVN does not check the chain for you, so approval can be present on a token you have already approved.
unlimitedRecommended: true means the venue would rather you approve once for a large amount than per swap. It is set for CoW, whose relayer needs an on-chain allowance for every token regardless, so an exact approval costs gas on every single swap and cancels out the gasless route. data still encodes the exact amount; raising it to an unlimited approval is your call. Both work.
Do not assume the spender is transaction.to, and do not decode the quoteToken to find it. The quoteToken is opaque and its internals change without notice. If approval is absent, no allowance is needed.
A DEPOSIT can be fulfilled automatically, by building a wallet transfer to the address as an EVM or Solana wallet does, or manually, by showing the address and a QR code as a native-BTC send does. Both are the same execution type, so you choose the UX.