Routheus
Real-time swap quotes, executable routes with prepared calldata (Permit2 supported), token metadata, token search and pool data across multiple EVM chains. Pay per call in USDC via x402 — no API key, no subscription, no signup.
Try it — one curl, no account
curl "…loading…"
The response is 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 |
|---|---|---|---|
| Loading live pricing from /x402/info… | |||
Supported chains
Loading…
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