⚠️Data availability
Historical depth varies by plan and source. See Data availability.
GET /v1/candles
OHLCV from binance (spot), binance_futures, chainlink, hyperliquid, polymarket, and kalshi. Omit source to query all sources in one call (merged). Authoritative behavior and examples: OpenAPI.
Credits: 50 base + 3 per row
Tier (per OpenAPI): Free 7d / 15m+ · Pro 14d / 5m+ · Business 31d / 1s
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
api-key | string | Yes | — | X-API-Key header (recommended) or api-key query. Authentication. |
symbol | string | Yes | — | BTC, ETH, SOL, XRP (see OpenAPI Symbol enum). |
interval | string | Yes | — | 1s, 5m, 15m, 1h, 4h, 1d, 24h (see OpenAPI CandleInterval). |
source | string | No | — | Omit for all sources. Otherwise: polymarket, kalshi, binance, binance_futures, chainlink, hyperliquid. |
market_id | string | No | — | Polymarket: condition id — one market, may still return Up+Down legs. |
token_id | string | No | — | Polymarket: CLOB token id — one row per bar (best for backtests). From GET /v1/markets. |
start | string | No | — | ISO-8601 UTC (inclusive). |
end | string | No | — | ISO-8601 UTC. |
limit | integer | No | 500 | 1–10000 (per OpenAPI). |
after | string | No | — | Cursor from meta.next_cursor. |
Polymarket (important)
- Symbol only → multiple rows per bar (different conditions and/or Up vs Down).
- Use
token_idfor a single time series. - Use
market_id(condition id) for both legs of one market. - When unfiltered,
meta.polymarket_notemay explain the shape.
Scoped shortcut: GET /v1/polymarket/candles — see Platform routes.
Response (high level)
| Field | Type | Description |
|---|---|---|
data | array | Candle rows (shape varies slightly by source). |
meta | object | symbol, source, interval, count, next_cursor, optional Polymarket notes, clamping fields. |
Example
import requests
resp = requests.get(
"https://kwery-api.com/v1/candles",
headers={"X-API-Key": "YOUR_KEY"},
params={
"symbol": "BTC",
"source": "binance_futures",
"interval": "4h",
"start": "2026-03-01T00:00:00Z",
"end": "2026-03-02T00:00:00Z",
"limit": 6,
},
)
data = resp.json()
print(data["data"][:3])Query parameter alternative: api-key=YOUR_KEY on the URL.
Example response (illustrative)
{
"data": [
{
"timestamp": "2026-03-01T00:00:00Z",
"symbol": "BTC",
"source": "binance_futures",
"interval": "4h",
"open": 93850.0,
"high": 94200.5,
"low": 93600.0,
"close": 94150.25,
"volume": 8420.15
}
],
"meta": {
"symbol": "BTC",
"source": "binance_futures",
"interval": "4h",
"count": 6,
"next_cursor": null
}
}
Errors
403 plan upgrades, 422 validation, 429 rate limits — see Error codes and OpenAPI operation responses.