Skip to main content

Access

The Routes API v1 requires x-api-key for quotes, funding submissions, status, chains, and tokens. Circle Gateway endpoints have separate access rules. See API access and conventions.
Contact Eco for API keys and integration questions. Sauce transactions need no API key. The SDK ships under the Eco, Inc. Proprietary License 1.1, the LICENSE.md file in the @eco-incorp/sauce package, which holds its terms; for a use it does not cover, contact Eco at partners@eco.com. See Get set up.
Check the environment, header, and key permissions. Use the returned status and error body to distinguish a missing key, invalid key, or attribution failure. See Errors and retries.

Transfers

Timing depends on the route, liquidity, source-chain confirmation, and any bridge or prover involved. A quote can include steps[].estimatedDurationSec; treat it as an estimate. Track the transfer through intent status.
Its reward returns to reward.creator on the chain where the intent was published, once the intent is eligible: after a cancellation on the execution chain has been proven to the source chain, or at reward.deadline with no proof. If a route fails before the bridge, the refund is the token originally sent, on the source chain. If a destination swap fails after the bridge, the refund is USDC on the destination chain. A refund requires a transaction; an expired or refundable status does not establish that funds have returned. See Refunds by intent type and Vaults and resource locks.
It means that intent’s route was fulfilled. On a composite route, an intermediate intent can execute a source swap or CCTP burn before final delivery. Inspect the quote’s steps and final destination transaction. See Intent types.
Verify its EIP-712 signature against the source chain’s published quoteSigner, then validate the route, recipient, amounts, and expiry. See Quote verification.
For an exact-input quote, destination.amountOut is the expected output and destination.minAmountOut is the stated minimum. Check that the executable route enforces your required output. If a fulfillment transaction cannot meet its encoded conditions, it can revert; that does not immediately execute a source refund. See Request a quote.
Listing a token does not guarantee liquidity for every pair or amount. Check the requested chains, token addresses, amount, and returned error. See Supported chains and tokens.

Deposit addresses

Check the deposit product’s funding threshold and deadline. For Circle Gateway deposits, use the quote and status response to determine whether funding is complete or recovery is required. See Circle Gateway deposits.
No. Publication precedes fulfillment and balance credit. Follow the intent and confirm the destination Gateway balance. See Funding methods.

Sauce

No. Routes runs destination calls itself. A Sauce program reads onchain state, chooses a path and composes contract calls in one transaction on one chain, and one of a route’s destination calls can cook it, so it runs inside the fulfillment. See Destination calls and Sauce in a route.
Run npm install --global --engine-strict @eco-incorp/sauce@latest for the sauce command and its MCP server, or npm install --engine-strict @eco-incorp/sauce@latest for the TypeScript library. It needs Node.js 24 or later; the library also runs in a browser after await ready(). See Installation.
The sauce command and MCP server build and send transactions on Ethereum, Base, Arc and Solana, and on the testnets Arc Testnet, Base Sepolia, Ethereum Sepolia, Solana Devnet and Solana Testnet. Every other chain in the registry is a preview chain: programs compile and reads work there, and a cook can still be simulated where the release’s engine and Kitchen are deployed and the endpoint supports it. Preview status stops the command and server from building, signing or sending a transaction there. sauce pot --chain <chain> --owner <address> reports whether the release is deployed on a chain. The TypeScript library builds transactions for any chain in the registry. See Chains.
Simulating sends no transaction and pays no fee. For an ordinary EVM cook, the sending wallet pays gas and supplies the Kitchen’s fee as the cook’s value. For a signed cook, the submitter pays gas, and the Kitchen’s fee is debited from the Pot, never above the signed maxExecutionFee: a funded Pot pays it with a signed value of zero, and any value the submitter sends counts toward it. On Solana the Kitchen’s fee, in lamports, comes from the cook’s fee payer, a signer of the transaction, never the Pot, and the cook carries the most it will pay (max_execution_fee); sauce tx names the owner as that fee payer and as the payer of the network fee. A simulation lists the fee, and sauce pot reads it. See Kitchen.
Deployments lists the engine, Kitchen, Router and Solana program addresses of the release the SDK pins. In TypeScript, read them from @eco-incorp/sauce/deployments.

Next steps

Use Support for unanswered questions or Build with AI agents to connect a coding agent to the docs.