Skip to main content
Orchestra produces prices at three levels of firmness. An estimate is indicative. A quote is firm for 2 minutes and gets repriced if the deposit lands late. Fixed delivery turns the quoted output into a delivery commitment.
LevelHow you get itWhat the price means
EstimateGET /v1/orchestration/estimateIndicative. Use for display and browsing.
QuotePOST /v1/orchestration/quoteFirm for 2 minutes. Late deposits reprice at the live market rate.
Fixed deliverydeliveryMode: "fixed" on a quoteCommitment. The order delivers the quoted estimatedOut.

Estimates

/estimate is a stateless price preview. It requires no API key, creates no durable order, and allocates no deposit address, so it is safe to call on every input change within its limit of 120 requests per minute per IP. Preview slippage defaults to 100 bps when slippageBps is omitted.

Quotes

/quote is authenticated and idempotent: send X-Idempotency-Key with every request. It persists the quote, allocates a deposit address, and starts a 2 minute expiry (expiresAt). Fund the deposit before expiresAt and the order executes on the quoted terms. A deposit that arrives after expiry is not refunded. It is repriced at the live market rate at detection time, and execution stays bounded by the quote’s slippageBps. If you need the quoted price, treat expiresAt as a hard deadline for the deposit, not a suggestion. The recommended workflow:
  1. Browse with /estimate. Call it on every amount or route change.
  2. Call /quote only when the user commits to the swap.
  3. Fund the deposit address before expiresAt.
This keeps quote creation off your browsing path and reserves it for real intent.

Fixed delivery

deliveryMode: "fixed" makes estimatedOut a delivery commitment: the order delivers the quoted amount rather than whatever execution produces.
  • Exact-in only. Any other amountMode returns 400 unsupported_delivery_mode.
  • The route must have fixedEligible: true on GET /v1/orchestration/routes, and availability additionally depends on per-partner operator configuration.
  • When fixed delivery does not apply, /quote and /estimate reject with fixed_delivery_unavailable (the error message states the reason), while /onramp proceeds as a normal variable onramp.
  • The response echoes deliveryMode: "fixed" only when it applies. Treat its absence as a variable quote.
See Fixed delivery for the field-level contract.

Slippage

slippageBps bounds how far the execution price can move against the quote before the order refunds instead of filling badly. It accepts 0 to 1000 and defaults to 50 (200 for NEAR-ingress sources). On routes that swap through the Flashnet AMM, a runtime floor applies (default 10 bps, operator-tunable); a below-floor value returns 400 invalid_request because it could never fill at real size. Slippage protects the execution leg, not the quote window. If the pool moves past your tolerance between deposit and execution, the order refunds with slippage_exceeded and no partner action is required. See Order Lifecycle for the refund paths. /onramp pins slippage to 1000 bps regardless of input: a human pays a Lightning invoice on their own schedule, so the quote must survive minutes of price drift and reprice at settlement.

Price impact

Price impact (how much your own order moves the pool) is capped separately from slippage. A quote that would move the pool past the cap rejects with price_impact_too_high. Slippage caps market movement between quote and execution; the price impact cap rejects orders too large for the pool at quote time.

Where to go next