No API key is required. All integrator endpoints are open with generous rate limits. See Authentication for details.
Prerequisites
The escrow flow involves on-chain transactions (approving tokens and sending the open transaction). We use viem to interact with the Base network, but any EVM-compatible library works the same way.TypeScript
Escrow Flow
The standard escrow integration is a 4-step process: request a quote, approve tokens, send the quote’s open transaction, and track the order to settlement.1
Request a quote
Call The response contains an array of quotes sorted by best price; the best quote is at index 0. Each quote carries
POST /api/v1/integrator/quote/request with the user’s input and desired output as CAIP-2 chain + native address pairs. This example sends 10 USDC from Base to Arbitrum.TypeScript
order.openIntentTx — the transaction that opens the order — and order.checks.allowances, the approvals it needs. See Request a Quote for the full request and response reference.2
Approve tokens
Cover every entry in
order.checks.allowances: the input settler needs permission to transfer your tokens when the order opens.TypeScript
You can also use Permit2 for gasless approvals. The escrow supports deposits via Permit2 signatures. See Escrow Deposit Methods for details.
3
Send the open transaction
Send the transaction from the quote. It calls The
open() on the input settler, which locks your tokens in escrow and broadcasts the intent to solvers.TypeScript
open() call transfers your tokens into escrow and emits an Open event. Solvers and the order server detect this event automatically. No separate submission step is needed.Want to construct the
StandardOrder yourself instead — custom deadlines, multiple outputs, calls on delivery? See Create and Submit Orders for the order structure and validation rules.4
Track the order
Poll
GET /orders/status until the order reaches a terminal state. Use the onChainOrderId from the Open event.TypeScript
Once
Settled, the user has received USDC on Arbitrum and the solver has been paid from escrow. Refunded is the alternate terminal state: no solver filled the order and the input funds went back to the user.Your order reports Signed from the moment the order server sees it, including right after the Open transaction confirms — opening does not produce a distinct status. See Track Order Status for the full lifecycle.What Just Happened
- Requested a quote. The order server returned pricing from its solver network, plus a ready-to-sign transaction that opens the order.
- Approved tokens. You authorized the escrow contract to transfer your USDC, following the quote’s allowance checks.
- Opened the order. Sending the quote’s transaction locked tokens in escrow and broadcast the intent to solvers via the
Openevent. - Solver delivered. A solver fulfilled the order by delivering USDC on Arbitrum.
- Settlement completed. The oracle verified delivery and the escrow released the locked funds to the solver.
Next Steps
API Overview
Full endpoint reference, base URLs, and authentication
Request a Quote
Exact-input, exact-output, and the Solana and Tron varieties
Compact Orders
Off-chain gasless order submission via The Compact
Track Order Status
On-chain events and order server status polling

