bytecode[] (or
transactionData[] for swaps). These legs are a single logical operation — not independent
transactions you can pick and choose.
Atomic execution
Filter legs bychainId (or chainIdIn on strategy responses), then batch them:
All legs in the batch succeed or all revert — no half-executed funding.
Choosing output
Bytecode endpoints accept output to match your signing infrastructure:
output=bytecode (default)
Use when the signer is an EOA or you control a contract that batches calls.
output=userOperation
Use when the wallet param is a smart account and you submit via EntryPoint / bundler.
output=bytecode and
batch with EIP-7702, or create the smart account explicitly before requesting userOperation.
output=fireblocks
Use with Fireblocks custody. Requires accountId (vault account ID) and a smart wallet previously
provisioned via POST /fireblocks-smart-account.
Decision tree
After execution
- Save the
idfrom the bytecode response for tracking. - Poll
GET /actions/{id}, WebSocket/updates, or customer webhooks forACTION_UPDATE. - For async strategies (Ondo
request-lend/request-withdraw), also poll position orGET /strategies/:id/status?wallet=until pending arrays clear.
Common mistakes
Next steps
EIP-7702 Example
Atomic EOA batching with viem
Smart Account Deposit
ERC-4337 flow with output=userOperation
Fireblocks
Custody integration with output=fireblocks
Ondo Global Markets
Cross-chain stocks — high-risk partial-execution flow