/api/v1/markets/{id}/candlesGETak_ prefix), sent as a Bearer token or an ?api_key= query parameter.. Token in: header1Min: 1100Min: 1Max: 500timestamptimestamp60Min: 1interval minutes ending at this instant.yes_bid and yes_ask when both are present, otherwise the period's mean traded price, otherwise the closing traded price. It is therefore not always a book midpoint and can be identical to close, so do not read it as a quote without checking yes_bid and yes_ask.polymarket candles when that hour has trade volume. Absent for polymarket-us candles, which come from a display-price feed with no trade sizes.kalshi_candlestick and kalshi_historical_candlestick are Kalshi venue candles. polymarket_clob_history is the Polymarket CLOB prices-history midpoint feed. polymarket_us_price_history is the Polymarket US gateway price-history feed, with bid and ask from that feed.total and total_pages reflect the server's counting ceiling rather than the exact matched count: the real set is at least total large. Render such totals as a lower bound (for example "10,000+"). Omitted when the count is exact. A sorted markets search that fills the 10,000-candidate ceiling sets this flag.message. One of bad_request, unauthorized, forbidden, not_found, conflict, service_unavailable, upstream_error, service_error, or internal_error.rate_limited. Branch on this to detect a throttled request.rpm for the per-minute cap, daily for the daily one, or concurrency for the cap on requests running at the same time.curl -X GET "https://api.adjacent.markets/api/v1/markets/<id>/candles" \ -H "Authorization: Bearer <token>"
{ "data": [ { "timestamp": "2026-06-01T14:00:00Z", "yes_bid": 47, "yes_ask": 49, "mid": 48, "close": 48, "volume": 12500, "source": "kalshi_candlestick", "synthetic_book": false }, { "timestamp": "2026-06-01T13:00:00Z", "yes_bid": 47, "yes_ask": 47, "mid": 47, "close": 47, "volume": 9800, "source": "polymarket_clob_history", "synthetic_book": true } ], "meta": { "total": 2, "page": 1, "per_page": 100, "total_pages": 1, "has_next": false, "has_prev": false } }