Skip to main content
GET
Get a single OHLCV candle series

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. Must be sent together with X-Client-Id and X-Api-Secret.

X-Api-Secret
string
header
required

64-char hex API secret. Must be sent together with X-Client-Id and X-Api-Key.

Query Parameters

provider
enum<string>
required

Market-data provider. Case-insensitive. dome and kalshi_offchain are aliases resolved to polymarket and kalshi respectively. opinion is a disabled provider kept resolvable for historic reads only. Unknown values return 400 invalid_request.

Available options:
kalshi,
polymarket,
opinion,
predictfun,
hyperliquid,
dome,
kalshi_offchain
contract_id
string
required

Provider-native contract/market/ticker id. For polymarket this may be either a numeric market id or a 0x-prefixed condition_id (both resolve to the same series). Empty or >128 chars is rejected with 400 invalid_request.

Maximum string length: 128
timeframe_seconds
enum<integer>
required

Candle bucket width in seconds. Any value outside this set is rejected with 400 invalid_request. Only 1 and 60 are stored directly; 300/900/3600/14400/86400 are always served as rollups.

Available options:
1,
60,
300,
900,
3600,
14400,
86400
start
string
required

Window start, inclusive (before alignment). Accepts RFC 3339 (2024-01-15T10:00:00Z or with a numeric offset), a bare datetime (2024-01-15T10:00:00, treated as UTC), or a bare date (2024-01-15, treated as UTC midnight). Unparseable values return 400 invalid_request.

end
string
required

Window end, exclusive (before alignment). Same accepted formats as start. Must be strictly after start or the request is rejected with 400 invalid_request: end must be after start.

outcome
integer
default:0

Zero-based outcome index (e.g. 0=Yes, 1=No for a binary market, or an index into a multi-outcome market's token list). Defaults to 0. Negative or non-integer values return 400 invalid_request.

Required range: x >= 0
fmt
enum<string>

Set to binary to receive the columnar binary frame instead of JSON. Equivalent to sending Accept: application/x-kairos-candles.

Available options:
binary

Response

Candle series for the requested window. {"candles":[]} (empty array, no-store) is a valid 200 response, not an error — it means the window is authoritatively empty.

Response body of GET /v1/candles in JSON mode.

candles
object[]
required

Candles in ascending bucket_start order. Empty when the aligned window is authoritatively empty.