EVM quote
The best exact-in route for amount of inputMint into outputMint on one EVM chain,
priced by the venues’ own contracts (V2 router getAmountsOut, V3 QuoterV2
quoteExactInput), all at one block: contextSlot is its number, blockHash its hash.
The response is a Jupiter-shaped quote, like the Solana router’s: pass it unchanged as
quoteResponse to POST /evm/swap before expiresAt (15 seconds after quoting; 30 on
eth). Quotes are kept in the router’s memory only, and a build takes only a quote this
router made and still holds.
Routes. Direct, through one intermediate token (maxHops 2, the default) or through
two (maxHops 3), every hop on the same venue. Intermediates are the chain’s hubs (listed
by GET /evm/chains) and tokens recently seen paired with the input or the output. At most
48 routes are priced (candidates says how many were); the most output wins, then fewer
hops, then less gas. routePlan has one step per hop (percent 100 and bps 10000: there
are no splits) with the pool (ammKey), the venue’s dex label, the hop’s amounts and, on
V3, the pool’s feeTier. Inside a route the wrapped token stands for the native coin.
router is the contract the swap transaction will go to.
Floor. otherAmountThreshold is outAmount × (10000 − slippageBps) / 10000, rounded
down. The build writes it into the swap’s calldata. A floor of zero is refused
(422 declined amount_too_small); an amount so small that no route gives anything is
404 declined no_route.
Native coin. 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE (any case) or native is the
chain’s coin (ETH, BNB), distinct from its wrapped token; answers write it in lower case.
Native to wrapped is a wrap (deposit()), wrapped to native an unwrap (withdraw), on the
wrapped-token contract itself: one step labelled Wrap or Unwrap whose ammKey is the
wrapped token, 1:1, otherAmountThreshold equal to inAmount whatever the slippage, no
pool, candidates 0. Venue filters do not apply to them.
Differences from the Solana GET /quote: chain is required; mints are 0x addresses
and amounts uint256; ExactIn only; maxHops at most 3; no split and no platform fee
(platformFeeBps above 0 is 400, not ignored); allowSplit, feeOnInput,
forJitoBundle, reserveKeys and asLegacyTransaction are ignored; priceImpactPct is
always "0"; no swapInfo.walkSteps; extra fields swapInfo.feeTier, chain, chainId,
router, gasEstimate, blockHash, expiresAt, candidates; quoteId is a UUID.
quoteResponse to POST /evm/swap before its expiresAt. Errors: EVM errors.Authorizations
Query Parameters
eth, bsc, base or robinhood (also ethereum, bnb), or the chain id: 1, 56, 8453, 4663. Alias chainId
"base"
Token you spend: its 0x address (any case), or 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE or native for the chain's coin. The zero address is refused
"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
Token you receive, spelled as inputMint. Must differ from it: there are no cycles on EVM
"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
What you spend: a uint256 in the token's smallest unit (wei for the native coin), in decimal digits. No sign, fraction or exponent. 0 is 400 declined zero_amount
^[0-9]+$"1000000000000000"
Tolerance in basis points, 0–10000; above 10000 is 400
0 <= x <= 10000Only ExactIn (or exactIn): ExactOut is 400
ExactIn, exactIn Most hops per route: 1 direct only, 2 through at most one intermediate token, 3 two. 0 counts as 1; more than 3 counts as 3
x >= 0true is maxHops=1: a single pool
Only these venues: dex labels (Uniswap V3, PancakeSwap V2, …) or venue ids (base-uniswap-v3) from /evm/venues, matched ignoring case and punctuation; comma-separated or the parameter repeated. Alias includeDex. Unknown labels next to known ones are ignored; only unknown labels (or only another chain's) is 400
"Uniswap V3"
Never these venues, same format as dexes. Alias excludeDex. Excluding every venue of the chain is 404 no_route
"Uniswap V2"
Only 0 or absent: there is no platform fee on EVM, and above 0 is 400
Response
The quote (live answers of the public router)
Lower case; the native coin is 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
What you spend: the amount asked
What the route gives at the quote's block, in base units of outputMint, before any tax the token itself takes
The floor the swap will enforce on chain: outAmount × (10000 − slippageBps) / 10000, rounded down (inAmount for a wrap or an unwrap)
"ExactIn"Not computed on EVM: always 0
"0"One step per hop, in order
The block number the quote was priced at
Seconds spent inside the router
What POST /evm/swap builds, until expiresAt
eth (chain id 1), bsc (56), base (8453), robinhood (4663)
eth, bsc, base, robinhood The contract the swap transaction goes to: the venue's router (also the approvals' spender), or the wrapped token for a wrap or an unwrap
Indicative (QuoterV2 on V3, a fixed estimate per hop on V2). The build's simulation gives the real figure
The hash of the block the quote was priced at
Until when the quote can be built: the chain's quoteTtlSecs after quoting (15 s; 30 s on eth)
Routes priced (0 for a wrap or an unwrap)