Skip to main content

FAQ

Is this really free?

Yes. There are no fees, no API keys, no subscription. We make money on execution surplus — the difference between the guaranteed minimum output and the actual on-chain execution. You never pay more than quoted.

How do I know the calldata is safe?

The router contract is verified on Etherscan. We route across multiple DEX pools to give you the best possible quote — the routing engine compares paths across Uniswap, SushiSwap, Curve, Balancer, and others to find the optimal rate. The transaction enforces a minimum output amount — it reverts on-chain if the swap would return less than expectedAmountOut. You can decode the calldata yourself using the verified contract ABI.

What DEXs do you route through?

We route across Uniswap V2/V3, SushiSwap, Curve, Balancer, and others depending on the chain. The routing engine compares all available paths — including splits across multiple pools and protocols — to give you the best possible quote.

Can I use this in production?

Yes. The API is designed for production use by developers and AI agents.

Do you store any data?

We log requests for debugging and monitoring purposes. No PII is collected. No wallet tracking. No analytics beyond what's needed to keep the service running.

What happens if a swap fails on-chain?

If market conditions change between the quote and execution, and the swap can't meet the guaranteed minimum output, the transaction reverts. You lose only the gas fee — no tokens are swapped. To reduce this risk, use a higher maxSlippage value.

Do I need to approve tokens first?

Only when swapping ERC-20 tokens (not native ETH). Before swapping an ERC-20, you need to approve the router contract (returned in data.tx.to) to spend your input token. This is a standard ERC-20 approve() call. See the developer guide for examples.

What does status: "NoRoute" mean?

The routing engine couldn't find a viable path to swap the requested token pair. This can happen with very illiquid tokens, extremely large amounts, or unsupported token pairs. Try:

  • A smaller amount
  • A different token pair
  • A different chain where the token has more liquidity

What does status: "Partial" mean?

Only a portion of the requested amount can be swapped at acceptable rates. This typically happens with large amounts relative to available liquidity. The expectedAmountOut reflects the partial amount. You can accept it or try a smaller input amount.

How is maxSlippage interpreted?

maxSlippage is a decimal between 0 and 1. The default is 0.005 (0.5%). For example:

  • 0.001 = 0.1% slippage tolerance
  • 0.005 = 0.5% slippage tolerance (default)
  • 0.01 = 1% slippage tolerance
  • 0.05 = 5% slippage tolerance

Higher slippage tolerance means the transaction is less likely to revert, but you may receive fewer tokens.

Which chains are supported?

Ethereum (1), Base (8453), Arbitrum (42161), Polygon (137), Optimism (10), Avalanche (43114), BNB Chain (56), and more. See Supported Chains for the full list. Pass an unsupported chain ID and you'll get a clear UNSUPPORTED_CHAIN error.

Can I use this from a browser?

Yes. CORS is enabled for all origins. You can call the API directly from frontend JavaScript. Note that the user's wallet will still need to sign and submit the transaction.

Is there an SDK?

No SDK needed. It's a single GET endpoint. Use fetch, requests, reqwest, curl, or any HTTP client. See the developer guide for copy-paste examples in TypeScript, Python, and Rust.