Skip to main content
The mode query parameter on GET /v2/quote tells Velora which execution path to consider: DELTA, MARKET, or ALL. mode=ALL is the default for clients that don’t want to commit upfront. Velora evaluates both paths server-side, picks the winner, and returns one response shape: either a delta block or a market block, never both. Clients must branch on which block is present, not on the mode they requested.

Delta vs Market

Delta intentNormal swap (Market API)
User signsAn EIP-712 order (off-chain message)A transaction (on-chain tx)
User pays gasNoYes
MEV exposurePrivate solver auctionPublic mempool, sandwichable
CrosschainOne signature, multi-chain settlementSeparate tx per chain
Price improvementsSolvers compete in an auction to improve the quoted priceBest-effort routing across DEXs
Failure modeRevert-protection: failed settlements cost no gas; order expires or is rejected with no funds lostTx reverts; gas spent on a failed call
Pick mode=DELTA when:
  • The user can wait a few seconds for solver competition (gasless settlement, MEV-protected fills).
  • The trade is large enough that solver competition beats AMM routing.
  • The wallet has no native gas balance and would otherwise need an approval + ETH, typical of mobile, social, and wallet-onboarding flows.
  • The swap is crosschain: one signed Delta order resolves across chains via bridge-aware solvers.
Pick mode=MARKET when:
  • The user needs synchronous, on-chain settlement (for example, composing with another contract in the same transaction).
  • The trade is small and AMM liquidity is the better route.
  • Latency matters more than slippage savings.
Fallback envelope. Fallback runs in one direction only, and only under mode=ALL: when Delta can’t price the trade, the response carries a market block plus a fallbackReason (errorType, details) explaining why Delta was skipped. A mode=DELTA request never falls back; with no Delta route it fails with a 400 carrying that same errorType and details. A mode=MARKET request never returns a delta block, and when Market pricing fails (including crosschain pairs, which Market doesn’t serve) you get a 400 with body {"errorType":"PricingError","details":"Error getting price data"}. Branch on which block is present and handle the 400 explicitly.
Last modified on June 14, 2026