Routheus — Multichain DEX Router API
Live DEX token prices and best-route swap quotes, executable routes with prepared calldata (Permit2 supported), simulation-verified outputs, token metadata, token search and pool data across 13+ EVM chains. Pay per call in USDC via x402 — no API key, no subscription, no signup.
Free tier — try before you pay
Single-input quotes (4/min per IP) and quotes with calldata (2/min per IP) are free — no payment, no key. Free responses give the output amount, gas and the executable transaction (so you can execute the swap); full route info (pool addresses, per-leg amounts) and simulation available in the paid quote. Pay per call via x402 for full data, simulation-verified quotes, chained-arb, batches and higher limits.
Try it — one curl, no account
curl "https://routheus.xyz/base/api/router/quote?token_in=0x4200000000000000000000000000000000000006&token_out=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&amount_in=1000000000000000000"
On the free tier that returns a trimmed quote instantly. Past the free limit (or for paid
products) you get an HTTP 402 with everything needed to pay: price, USDC
contract, receiving address. Any x402 client (@x402/fetch,
x402-axios, x402-reqwest, Coinbase AgentKit, MCP) signs the
payment offline and retries automatically — settlement lands on-chain in ~1–2s and the
receipt (tx hash) is returned in the X-PAYMENT-RESPONSE header.
Products & pricing
| Product | Endpoint (GET) | Price | What you get |
|---|---|---|---|
| quote | /{chain}/api/router/quote | 0.005 USDCper input amount · free tier: single-input | Best-route swap quote: output amount and split routing across venues, from our own pool-state engine. |
| quote_calldata | /{chain}/api/router/quote?to=… | 0.01 USDCper input amount · free tier: single-input | Ready-to-sign swap transaction: route plus executable calldata (Permit2 supported) and min-out at slippage. |
| quote_sim | /{chain}/api/router/quote?…&simulate=true | 0.02 USDCper simulated amount | Simulation-verified quote — amount_out IS the on-chain eth_call result, not an estimate. Failed sims are free. |
| quote_arb | /{chain}/api/router/quote?…"e_on_top_of_amounts=… | 0.03 USDCper request | Exclusive chained-state quoting for arbitrage sizing and MEV bundles — quotes as if prior in-flight swaps executed. |
| token_metadata | /{chain}/api/tokens/metadata?token=… | 0.003 USDCper request | ERC-20 name, symbol, decimals, balance storage slot. Cache-only; unknown tokens return an error (never charged). |
| token_search | /{chain}/api/tokens/search?query=… | 0.003 USDCper request | Search tokens by symbol, name or address — resolve a ticker to the right contract; returns pool counts. |
Response examples
Every product returns a clean, stable public JSON schema. Expand a product to see its
request parameters and a representative paid response (values illustrative). These same
examples are in /x402/info (products[].response_example)
and /openapi.json.
Loading response examples…
Supported chains
ethereumbasearbitrumbscoptimismpolygonavalancheunichainsonicgnosishyperevmberachainhemi
Executing a swap route
Routes bought with to=<your address> include a ready-to-send transaction
(tx: {to, data, value, chainId}). Before sending it, the input token needs an allowance —
two options:
Option A — direct approve
ERC-20 approve(router, amount) to the router address in tx.to,
then send tx as-is. Simple; one approval per token+amount.
Option B — Permit2 (recommended)
One-time ERC-20 approve(Permit2, ∞) to the canonical Permit2
(0x…22D473030F116dDEE9F6B43aC78BA3). Then request
with_permit2_data=true: the response adds tx_permit2 — calldata with
zeroed placeholders plus byte offsets (nonce_offset,
permit_deadline_offset, signature_offset). Sign the EIP-712
PermitTransferFrom (domain: name "Permit2", your chainId, verifying contract Permit2;
spender = router), splice nonce, deadline and 65-byte signature at those offsets, send.
No per-swap approvals.
How payment works
- Call a paid endpoint → HTTP
402with anacceptsarray (price, asset, receiver). - Your client signs an EIP-3009 USDC authorization offline — gasless for you, the facilitator pays gas.
- Retry with the
X-PAYMENTheader → payment is verified, your request runs. - Only useful answers settle: upstream errors and
{"ok": false}results are never charged (X-Payment-Charged: false) and your authorization stays reusable.
One payment authorization pays for exactly one served response.
Multi-input batches (amounts_in, up to 50 amounts) are priced per amount with a
10% batch discount. With simulate=true the returned
amount_out is the on-chain simulated result — what you'd actually
receive, not a local estimate; failed simulations are free. The exclusive
quote_on_top_of_amounts product quotes on top of in-transit swaps (pool state
mutated per prior amount) — built for arbitrage sizing, MEV bundles and multi-step strategies.
Machine-readable
- /x402/info — full service + pricing JSON
- /openapi.json — OpenAPI 3.1 with
x-payment-info - /.well-known/x402 — x402 resource list
- /llms.txt — plain-text summary for agents
- /chain-peers — live chain list
- /mcp — MCP server (free discovery tools for AI agents)
FAQ
What is Routheus?
Routheus is a multichain DEX router API. It returns best-route swap quotes, executable swap calldata (Permit2), on-chain simulation-verified outputs, and token/pool data across 13+ EVM chains — from its own real-time pool-state engine, not an aggregator proxy.
Is there a free tier?
Yes. Single-input swap quotes and quote-with-calldata are free, rate-limited per IP, with no payment or API key. Free responses include the output amount, gas, route shape and the executable transaction. Full route detail and on-chain simulation are on the paid call.
Do I need an API key or account?
No signup, no API key, no subscription. Use the free tier directly, or pay per call in USDC via the x402 protocol for paid products.
Which blockchains does Routheus support?
13+ EVM chains including Ethereum, Base, Arbitrum, BSC, Optimism, Polygon, Avalanche and more. See /chain-peers for the live list.
How do I pay for API calls?
Paid endpoints use the x402 protocol: you get an HTTP 402 with a payment offer,
sign a gasless USDC authorization off-line, and retry. Any x402 client (x402-fetch, Coinbase
AgentKit) does this automatically. You are only charged for successful responses.
How much does a swap quote cost?
Single-input quotes are free (rate-limited). Paid pricing per call in USDC: swap quote 0.005, quote + calldata 0.01, simulation-verified quote 0.02, chained arbitrage quote 0.03, token metadata and search 0.003 each. Live pricing at /x402/info.
Contact & custom plans
Start free — no signup. Need higher rate limits, a custom/enterprise plan, volume pricing, or a private deployment? Email [email protected] and we'll tailor limits and pricing to your integration.