Skip to main content
GET
Get a combined platform + exchange fee quote for a prospective trade

Authorizations

X-Client-Id
string
header
required

Credential client id (kairos_ck_...). Must be sent together with X-Api-Key and X-Api-Secret.

X-Api-Key
string
header
required

64-char hex API key.

X-Api-Secret
string
header
required

64-char hex API secret.

Query Parameters

exchange_id
enum<string>
required

One of polymarket, kalshi, predictfun.

Available options:
polymarket,
kalshi,
predictfun
Example:

"polymarket"

market_id
string

Condition id (Polymarket). Required for Polymarket if token_id is omitted.

token_id
string

CLOB token id (Polymarket) — preferred over market_id for book/fee lookup.

Example:

"71360012345678901234567890123456789012345678901234567890123456"

quantity
string
required

Decimal string. Number of shares/contracts to quote. Must be > 0.

Example:

"100"

side
enum<string>
required

The quote is side-aware (walks the ask side for buy, the bid side for sell).

Available options:
buy,
sell
Example:

"buy"

price
string

Decimal string in (0, 1]. Required when order_type=limit (the resting price). Omit for order_type=market to have the server price off the live book.

Example:

"0.52"

order_type
enum<string>
required

market (taker, priced from the book) or limit (maker, priced at price).

Available options:
market,
limit
Example:

"market"

Response

Combined platform + exchange fee quote.

Response for GET /orders/fee-quote. All numeric fields are decimal strings in USDC. The WebSocket subscribe_fee_quote stream emits a near-identical frame, but it omits venue_reserve_fee_usdc — do not treat the two as interchangeable. See execution-ws.asyncapi.yaml.

avg_price_usdc
string
required

Size-weighted executable price (VWAP for a market order), or the limit price for a limit order.

Example:

"0.52"

filled_size
string
required

Size the book can actually fill; equals requested_size when liquidity suffices.

Example:

"100"

requested_size
string
required

The size the caller asked to quote (echoes quantity).

Example:

"100"

sufficient_liquidity
boolean
required

False when the book cannot fill the full requested_size.

notional_usdc
string
required

filled_size × avg_price_usdc.

platform_fee_usdc
string
required

Kairos platform fee, based on the caller's fee tier. "0" if the tier lookup failed (fails open, never a phantom rate).

exchange_fee_usdc
string
required

Venue-specific fee the caller is expected to pay. "0" on venues that only charge takers when this quote is a resting maker order.

venue_reserve_fee_usdc
string
required

Fee the VENUE actually reserves to accept the order — distinct from exchange_fee_usdc. Some venues (Polymarket CLOB) can't know a resting limit will stay maker, so they reserve the taker estimate at placement regardless; buy-affordability checks must size off this field, not exchange_fee_usdc.

total_fee_usdc
string
required

platform_fee_usdc + exchange_fee_usdc.

total_cost_usdc
string
required

All-in cost — for a buy, notional + fees; for a sell, proceeds = notional − fees.

pricing_unavailable
boolean
required

true when no executable price was available (no client price and no fresh orderbook) — every other numeric field is a placeholder "0" and MUST NOT be rendered as a real quote.

is_estimate
boolean
required

Always true — this is a display estimate; the authoritative fee is computed at fill time.

funding_tier
enum<string>
required

Which rails run to fund this order. t0_local means no collateral moves; only t2_bridge carries a bridge fee. It names the movement, not whether the balance suffices.

Available options:
t0_local,
t1_prepositioned,
t2_bridge,
reject
bridge_fee_usdc
string | null
required

Bridge fee in USDC. "0" below t2_bridge, and null exactly when bridge_quote_unavailable is true — an unknown fee is never rendered as $0.00. This fee is already included in total_cost_usdc, and buy-affordability checks must include it too.

bridge_eta_p50_ms
integer | null
required

Median bridge fill time from Kairos's own completed intents, never a provider estimate. Present only once the route has ≥1,000 samples and its p90 ETA error is within ±10s.

bridge_eta_p95_ms
integer | null
required

95th-percentile bridge fill time from Kairos's own completed intents. Present under the same gate as bridge_eta_p50_ms.

bridge_route_label
string | null
required

The route in the user's words, naming the token the rail DELIVERS, e.g. "BNB USDT → Polymarket pUSD via Relay". Absent when nothing bridges.

bridge_min_txs
integer | null
required

On-chain transactions the bridge route needs, so a client can price the signing path. Absent when nothing bridges.

bridge_eta_state
enum<string> | null
required

Whether the ETA above is a measurement or an admission that the route has not earned one. Absent when nothing bridges.

Available options:
measured,
not_yet_measured
bridge_quote_unavailable
boolean
required

true when a bridge is needed and no quote landed. Consumers MUST render a "routing…" state and disable submit rather than showing any fee; bridge_fee_usdc is null in this state.

bridge_beta
boolean
required

true while tier-2 bridge funding is behind a flag, so the bridge row can be labelled beta.

exchange_fee_note
string | null

Human-readable note on the exchange fee, e.g. "1.8% taker fee".