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

