A quote is a priced, persisted set of order parameters. GetQuote runs the pricing pipeline, stores the canonical OrderParams, and returns their keccak hash as quote_hash. That hash is the only thing the deposit carries. Everything the operator later does with the order is read from the stored parameters, not from the deposit transaction.

Preview versus quote

PreviewQuote

Prices a trade without persisting anything. No recipient or refund address required. Use it for amount fields that reprice as the user types.

GetQuote

Prices and persists. Returns a quote_hash that can be deposited against. Use it once the user is ready to commit.
PreviewQuote returns the same economics — amount_out, min_amount_out, slippage_bps, fee_breakdown — so the number you display while typing is the number you get when you commit, subject to the price moving between the two calls.

What the hash binds

The stored parameters cover both sides of the trade: A deposit that does not match these — wrong token, wrong amount, or a quote hash already consumed by another order — is never fulfilled. It becomes an order in pending_refund. See Refunds.

Response shape

QuoteResponse is a oneof over the two quote kinds, so branch on the case rather than assuming a field exists:
Both kinds carry the same fields: quote_hash, amount_out, min_amount_out, slippage_bps, fee_breakdown, router_address, and the full order_params.

Lifetime

A quote has no on-chain deadline. Its price is fixed at the moment it was requested and does not follow the market, so treat it as short-lived: refresh before the user signs, and re-quote if they hesitate. Unused quotes are pruned after hours. Only one active order can exist per quote. Depositing twice against the same hash produces one order and one refund.

Size limits

Quotes are bounded by notional value in USD, between and . Requests outside the band fail with amount below minimum or amount above maximum; both are invalid_argument. See Error handling.

What to persist

Store the quote_hash before you send the user to sign. It is how you find the order afterwards, and without it a deposit that lands is hard to attribute. order_params is worth storing too if you want to render the expected outcome without a second API call.