Start here
Base URL:/openapi/market-data-api.yaml ·
/openapi/market-data-api.json. The
API Reference renders it with live try-it panels.
Endpoints
Supported providers:
kalshi, polymarket, predictfun, hyperliquid.
(opinion is accepted for historical reads.)
Portfolio and PnL endpoints are served by the REST API, not
by this one.
Conventions
- Prices are quoted on the 0–100 scale (implied probability × 100) throughout — candles, trades, and marks. Two decimal places of precision are significant.
- Timestamps: request parameters accept ISO 8601
(
2026-07-15T00:00:00Z); response timestamps are unix seconds (fractional where the source has millisecond precision) except candlebucket_start, which is ISO 8601 with an explicit UTC offset. - Identifiers:
contract_idis the venue’s market identifier;token_ididentifies a specific outcome token within a market. On multi-outcome markets every outcome has an independent token and independent prices. - Volumes are contract quantities on candles and trades;
*_usdfields are notional (size × price / 100).
Data semantics
- Candles are sparse. Buckets with no trades are omitted rather than zero-filled. Gaps in a candle series reflect periods with no trading.
- A mark is the last traded price of an outcome token. Marks are point-in-time snapshots; for streaming updates, use the WebSocket API.
Response formats
- JSON by default. All responses support gzip via
Accept-Encoding. - Candles are also available in a compact binary format.
- Historical responses carry
Cache-ControlandETagheaders — conditional requests withIf-None-Matchreturn304 Not Modified.
Two products, one API
Kairos serves prediction markets and perpetual futures from the same services. They share transport, auth, and error envelopes, and differ in identity and price semantics:Never apply prediction-market probability math to a perpetual price. A perpetual price is a venue price, not a 0–100 probability. Dividing one by 100 produces a silently wrong number.
Hyperliquid appears in both columns and the two are never interchangeable. Its HIP-4 outcome markets are prediction markets (venue coins look likeThe perpetual surface is live on this base URL but is beta and flag-gated:#1210), read underprovider=hyperliquid. Its perpetuals are bare coins (BTC,kPEPE) with their own identity scheme, read underGET /v1/perpetuals/hyperliquid/.... See Perpetuals.
PERPETUALS_PUBLIC_API_ENABLED is on in production and staging, and a
deployment with it off returns 404 for the snapshot route. Coverage is not
the full venue catalog either — Hyperliquid enrollment is capped. Read
Perpetuals → Overview before writing any code
against it.
Errors
All errors use one envelope:GET /ready is the one exception to the envelope. On 503 it answers
{"ready": false, "failing": "clickhouse"} (or "redis").
