Skip to main content
GET
Get a quote (smart route)

Authorizations

x-app-id
string
header
required

Your application ID. Required for all app-tier and user-tier routes.

Path Parameters

venueMarketOutcomeId
string
required

Query Parameters

mode
enum<string>
Available options:
live,
paper
chainBalances
string
slipCapBps
number
Required range: x >= 0
maxSpend
number
Required range: x > 0
sellShares
number
Required range: x > 0
compareVenues
enum<string>
Available options:
true,
false
allowedVenues
Available options:
kalshi,
polymarket,
limitless,
opinion,
predict,
pred,
tiprun,
probable,
myriad,
hyperliquid,
novig,
prophetx,
betdex
side
enum<string>
Available options:
buy,
sell
deepEstimate
enum<string>
Available options:
true,
false
signingAddress
string
Required string length: 42
fundingAddresses
Required string length: 42
appFeeBips
number
Required range: 0 <= x <= 10000Must be a multiple of 1
referrer
string

Referral: the EVM address that receives the referral fee. Requires referrerFeeBips. Honoured only when the request carries x-app-api-key; a JWT-only request that sends it is rejected with 400 referral_requires_api_key. Buy only.

Required string length: 42
referrerFeeBips
number

Referral fee in basis points of the routed notional, 1..10000. AGG takes no share of it. With referralPayer "user" it is reserved from maxSpend next to the app fee; with "app" the user pays nothing.

Required range: 1 <= x <= 10000Must be a multiple of 1
referralPayer
enum<string>

Who funds the referral. Default "user".

Available options:
user,
app
referralPayerAddress
string

Required when referralPayer is "app": the wallet that settles the payout. After the fill, a pendingSignatures entry appears with signerAddress set to this address and purpose "referral_payout"; answer it on POST /execution/fill/:quoteId/signatures. Read its type: on an EVM chain it is a transaction to broadcast (post the hash), on HyperCore an eip712 to sign (post the signature).

Required string length: 42
referralPayoutChainId
number

Optional, and only with referralPayer "app": the chain the referrer is paid on. Must carry USDC. On an EVM chain the payout is an ERC-20 transfer the partner's wallet broadcasts, needing USDC plus native gas there; on HyperCore (1337) it is a user-signed sendAsset from the partner's HyperCore spot balance — a signature, nothing to broadcast — and the referrer receives spot USDC on Hyperliquid. A first payout to a referrer with no Hyperliquid account costs the partner an extra 1 USDC that Hyperliquid charges to create it; later payouts to the same referrer cost nothing. Solana does not support app-paid payouts and is refused. Defaults to the trade's fee chain, or Polygon when that chain is not EVM. Sending it with a user-paid referral is rejected with 400 referral_invalid.

Required range: x >= 1Must be a multiple of 1

Response

200

quoteId
string
required

Pass to POST /execution/fill to trade this quote.

venueMarketOutcomeId
string
required

The outcome requested.

venueMarketId
string
required

Market of that outcome.

estimatedCostRaw
string
required

Price × shares before fees (proceeds on a sell). USD in 6-decimal atomic units, as an integer string (1000000 = $1.00).

expiresAt
string
required

ISO-8601. After this the quote cannot be filled.

refreshAt
string
required

ISO-8601, earlier than expiresAt: fetch a new quote from here on, though this one stays fillable until expiresAt.

status
enum<string>
required

ok when the quote can be filled; anything else means it cannot (see error). insufficient_balance: not enough funds. insufficient_position: not enough shares to sell (see positionAvailability). insufficient_depth / no_orderbooks / no_bids_above_min_price: not enough liquidity. min_order_size_violated / insufficient_input_amount: the amount is too small. infeasible, checker_rejected, solver_error, invalid_input, engine_unavailable: no valid route could be built.

Available options:
ok,
infeasible,
checker_rejected,
solver_error,
invalid_input,
no_orderbooks,
insufficient_input_amount,
engine_unavailable,
min_order_size_violated,
insufficient_balance,
insufficient_position,
insufficient_depth,
no_bids_above_min_price
fills
object[]
required

Where the trade executes, one entry per venue market.

totalFilled
number
required

Total shares bought (or sold), as a float.

rawExecCost
number
required

Price × shares across all fills, before fees (proceeds on a sell). USD, as a float.

solveTimeMs
number
required

Time to compute the route, in milliseconds.

verifyTimeMs
number
required

Time to verify the route, in milliseconds.

matchedMarkets
object[]
required

The same market on other venues. Empty on sells.

quoteRefreshNotBefore
string<date-time>

Earliest time to request a new quote (rate-limited venues only).

quoteFailure
object

A venue that could not be priced live; the quote excludes it.

error
string

Readable reason when status is not ok.

venueSoloQuotes
object[]

With compareVenues=true: the same trade priced on each venue alone, for comparison.

allocations
object[]

How the trade is funded, per source and venue.

bridgeSteps
object[]

Cross-chain transfers needed.

feeBreakdown
object

Cost of the trade, line by line.

appFee
object | null

App fee settings frozen at quote time, for reconciliation. null when the app charges no fee. For display use feeBreakdown.appFee.

referral
object | null

The referral this quote pays; absent or null without a referrer.

slippage
object

Price impact of the route.

optima
object

Best values each objective could reach on its own, for comparison.

warnings
object[]

Venues left out of the route or flagged, without blocking the quote.

custodyWarnings
object[]

Self-custody quotes only: the quote is valid but the fill from this wallet would be refused. Absent on managed quotes.

message
string

Informational note, e.g. on redemption.

settlementPlan
object

Sell quotes on resolved markets only: winning shares are redeemed for their payout instead of sold.

estimatedPayout
number

Payout if the outcome wins, after settlement fees. USD, as a float.

totalCostIncFees
number

All-in cost: feeBreakdown.totalCost + app fee + user-paid referral fee + any funding fee. USD, as a float.

estimatedProfit
number

estimatedPayout minus cost. USD, as a float.

returnPct
number

Profit as a percentage of cost (25 = 25%).

positionAvailability
object

Only when status is insufficient_position.