quoteId. See
Execution for the fill.
Request
tradeSide.
Preview vs executable
A sell quote always needs a signed-in user. Filling a quote that belongs to someone else, or a
preview quote, returns
400 with code: "quote_user_mismatch".
Can it be filled?
Checkstatus before you fill:
When
status is not ok, read error and message. Only fill quotes with status: "ok".
Expiry
Every quote carries two timestamps:
A quote currently lasts about 45 seconds, with
refreshAt about 15 seconds after it is created.
Some routes expire sooner. Always read expiresAt; never hard-code the window.
A fill after expiry returns 400 with code: "quote_not_found" or "quote_expired". Get a new
quote and fill that. POST /execution/fill also accepts fallbackToLatest: if the quote has
expired, AGG fills the user’s latest quote for the same outcome, side, amount, and venue scope
instead of failing. A different amount or venue scope does not match.
A quoteId fills at most once. See Errors, retries & idempotency.
What the quote contains
Fees in the quote
feeBreakdown is the number to show before the user commits.
Use
totalCostIncFees for the all-in number. Fees explains each kind.
Warnings
warnings[] lists venues the route skipped or flagged. Each entry has venue,
venueMarketOutcomeId, and reason. The quote is still usable. Known reasons include
low_liquidity, low_balance, stale_orderbook, empty_book, crossed_book, no_orderbook,
app_fee_unsupported, referral_unpaid_on_solana, and referrer_not_activated_on_hypercore.
Geo warnings. When a venue is not available in the user’s country, the venue is left out and
the reason reads Venue not available in your region (XX) with the country code. The quote does
not block. The fill checks location again and refuses a blocked user with 403. See
Venue geo availability.
Self-custody quotes also carry custodyWarnings[]. See
Self-custody trading.
Related
Execution
Fill a quote, or place direct and limit orders.
Comparing venue prices
Show per-venue prices next to the routed price.