sellAmount or buyAmount. Each venue quotes the other side.
The amount is a positive decimal string in Asset units:
"10" is ten USDC and "0.001" is a thousandth of an ETH, never base units. Send it as a string so no digits are lost. Send one of the two: a body with both, or with neither, is refused with 400 INVALID_REQUEST.
How amounts are read
- A venue may price a slightly smaller amount than you sent, rounded down to the precision it trades in. The quote states the amount it actually used: a request to sell
"100"can come back withsell.amountof"99.99994". buy.amountis what lands atdeliverToafter every fee the quote includes.netReceivedalso subtracts fees you pay separately, such as a network fee, so you can compare quotes fairly. It reads{"kind": "unavailable", "reason": ...}when a fee could not be read, never 0.- With
sort: "eta", quotes are ordered by expected time to delivery instead.
Sell exact
Buy exact
sources with the token buyAmountUnsupported, and is not asked. An on-chain protocol or bridge shows it as an unsupported row with the token in reason:
filteredOut row, with the token in detail. An on-chain venue that cannot deliver an exact amount uses exactOutputDeliveryUnsupported. Check both reason and detail for these tokens.
In practice, on-chain protocols, bridges and some exchanges quote only the amount you sell, so a buy-exact search usually returns fewer quotes. When no venue can quote it, you get an empty quotes list and every venue’s reason in sources. Send sellAmount instead, sized from a price.
On GET /api/v1/prices, the same limit uses the same buyAmountUnsupported reason on an unsupported row.
What filters do to venues
Which amount you fix excludes no venue by itself: a venue that cannot serve it readsunsupported, as above. Venues your filters exclude read filteredOut and are not asked.