GET /v1/candles
Retrieve OHLCV candlestick data across all supported sources in a single unified endpoint.
Min Tier: Free | Credits: 50 base + 3 per row returned
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
api-key | string | Yes | — | Your API key. |
symbol | string | Yes | — | Asset symbol (e.g. BTC, ETH, SOL). |
source | string | No | all | Data source. One of binance_spot, binance_futures, hyperliquid, polymarket, chainlink. Omit to return candles from all sources. |
interval | string | No | 1h | Candle interval. One of 1m, 5m, 15m, 1h, 4h, 1d. |
start | string | No | — | ISO 8601 start time (inclusive). |
end | string | No | — | ISO 8601 end time (exclusive). |
limit | integer | No | 100 | Number of rows to return. Range: 1–1000. |
after | string | No | — | Cursor for pagination. Pass the meta.next_cursor value from a previous response. |
Response
| Field | Type | Description | Sources |
|---|---|---|---|
timestamp | string | ISO 8601 candle open time. | All |
symbol | string | Asset symbol. | All |
source | string | Data source identifier. | All |
interval | string | Candle interval. | All |
open | number | Opening price. | All |
high | number | Highest price in the interval. | All |
low | number | Lowest price in the interval. | All |
close | number | Closing price. Polymarket returns the outcome probability (0–1). | All |
volume | number | Trade volume in the base asset. | All except Chainlink |
num_trades | integer | null | Number of trades in the interval. | Binance only |
taker_buy_ratio | number | null | Fraction of volume from taker buys (0–1). | Binance futures only |
funding_rate | number | null | Funding rate for the interval. | Binance futures, Hyperliquid |
open_interest | number | null | Open interest in the base asset at candle close. | Binance futures, Hyperliquid |
Response Headers
| Header | Description |
|---|---|
X-Credits-Used | Credits consumed by this request. |
X-Credits-Remaining | Credits remaining in your billing cycle. |
X-Rows-Returned | Number of rows in the response. |
X-Rows-Capped | true if the result set was truncated by your plan's row limit. |
Example
cURL
curl "https://kwery-api.com/v1/candles?api-key=YOUR_KEY&symbol=BTC&source=binance_futures&interval=4h&start=2026-03-01T00:00:00Z&end=2026-03-02T00:00:00Z&limit=6"
Python
import requests
resp = requests.get("https://kwery-api.com/v1/candles", params={
"api-key": "YOUR_KEY",
"symbol": "BTC",
"source": "binance_futures",
"interval": "4h",
"start": "2026-03-01T00:00:00Z",
"end": "2026-03-02T00:00:00Z",
"limit": 6,
})
data = resp.json()
TypeScript
const params = new URLSearchParams({
"api-key": "YOUR_KEY",
"symbol": "BTC",
"source": "binance_futures",
"interval": "4h",
"start": "2026-03-01T00:00:00Z",
"end": "2026-03-02T00:00:00Z",
"limit": "6",
});
const res = await fetch(`https://kwery-api.com/v1/candles?${params}`);
const data = await res.json();
Example Response
{
"data": [
{
"timestamp": "2026-03-01T00:00:00Z",
"symbol": "BTC",
"source": "binance_futures",
"interval": "4h",
"open": 93850.00,
"high": 94200.50,
"low": 93600.00,
"close": 94150.25,
"volume": 8420.15,
"num_trades": 184320,
"taker_buy_ratio": 0.54,
"funding_rate": 0.0001,
"open_interest": 52340.80
},
{
"timestamp": "2026-03-01T04:00:00Z",
"symbol": "BTC",
"source": "binance_futures",
"interval": "4h",
"open": 94150.25,
"high": 94680.00,
"low": 94050.00,
"close": 94520.75,
"volume": 7835.42,
"num_trades": 167540,
"taker_buy_ratio": 0.51,
"funding_rate": 0.0001,
"open_interest": 53100.20
}
],
"meta": {
"symbol": "BTC",
"source": "binance_futures",
"interval": "4h",
"returned": 6,
"next_cursor": "eyJ0IjoiMjAyNi0wMy0wMVQyMDowMDowMFoifQ",
"has_more": false
}
}
Source-Specific Behavior
Polymarket — The close field represents the outcome probability (0–1) rather than a dollar price. volume is denominated in USDC. Fields like num_trades, taker_buy_ratio, funding_rate, and open_interest are always null.
Chainlink — Only 5m and 15m intervals are available. volume is always null because Chainlink is an oracle feed, not an exchange. Prices reflect the on-chain aggregated answer.
Binance (spot and futures) — num_trades is populated on every candle. taker_buy_ratio, funding_rate, and open_interest are only present on binance_futures.
Hyperliquid — Funding settles continuously (hourly), unlike Binance's 8-hour schedule. funding_rate and open_interest may be null on sub-hourly intervals.
Tier Access
| Plan | History Depth | Intervals |
|---|---|---|
| Free | 14 days | 15m, 1h, 4h, 1d |
| Pro | 30 days | 5m, 15m, 1h, 4h, 1d |
| Business | Full history | All intervals including 1m |
Errors
| Status | Code | When |
|---|---|---|
| 400 | invalid_symbol | The symbol parameter is missing or not recognized. |
| 400 | invalid_interval | The requested interval is not supported for the given source. |
| 400 | invalid_time_range | start is after end, or the range exceeds your plan's history depth. |
| 401 | unauthorized | Missing or invalid api-key. |
| 403 | tier_restricted | Your plan does not allow the requested interval or history depth. |
| 429 | rate_limited | You have exceeded your plan's request rate. Retry after the Retry-After header value. |