---
title: "Batch Get Market Candlesticks"
method: GET
path: "/markets/candlesticks"
tags: ["market"]
---

# Batch Get Market Candlesticks

`GET /markets/candlesticks`

## Request

- Base URL: `https://external-api.kalshi.com/trade-api/v2`
- URL: `https://external-api.kalshi.com/trade-api/v2/markets/candlesticks`
- Auth: none declared

Endpoint for retrieving candlestick data for multiple markets.

- Accepts up to 100 market tickers per request
- Returns up to 10,000 candlesticks total across all markets
- Returns candlesticks grouped by market_id
- Optionally includes a synthetic initial candlestick for price continuity (see `include_latest_before_start` parameter)

## Query parameters

- `market_tickers` string, required
- `start_ts` integer, required
- `end_ts` integer, required
- `period_interval` integer, required
- `include_latest_before_start` boolean

## Response `200`

Market candlesticks retrieved successfully

- BatchGetMarketCandlesticksResponse
  - `markets` MarketCandlesticksResponse[], required: Array of market candlestick data, one entry per requested market.
    - `market_ticker` string, required: Market ticker string (e.g., 'INXD-24JAN01').
    - `candlesticks` MarketCandlestick[], required: Array of candlestick data points for the market. Includes an initial data point at the start timestamp when available.
      - `end_period_ts` integer, required: Unix timestamp for the inclusive end of the candlestick period.
      - `yes_bid` BidAskDistribution, required
        - `open_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
        - `low_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
        - `high_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
        - `close_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
      - `yes_ask` BidAskDistribution, required
        - `open_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
        - `low_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
        - `high_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
        - `close_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
      - `price` PriceDistribution, required
        - `open_dollars` string: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
        - `low_dollars` string: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
        - `high_dollars` string: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
        - `close_dollars` string: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
        - `mean_dollars` string: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
        - `previous_dollars` string: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
        - `min_dollars` string: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
        - `max_dollars` string: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
      - `volume_fp` string, required: Fixed-point contract count string (2 decimals, e.g., "10.00"; referred to as "fp" in field names). Requests accept 0-2 decimal places (e.g., "10", "10.0", "10.00"); responses always emit 2 decimals. Fractional contract values (e.g., "2.50") are supported; the minimum granularity is 0.01 contracts.
      - `open_interest_fp` string, required: Fixed-point contract count string (2 decimals, e.g., "10.00"; referred to as "fp" in field names). Requests accept 0-2 decimal places (e.g., "10", "10.0", "10.00"); responses always emit 2 decimals. Fractional contract values (e.g., "2.50") are supported; the minimum granularity is 0.01 contracts.

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `500`: Internal server error

## Changes

- **2026-04-13** `218c1f661cbd`: 10 breaking, 8 warning
  - removed the required property `markets/items/candlesticks/items/open_interest` from the response with the `200` status
  - removed the required property `markets/items/candlesticks/items/volume` from the response with the `200` status
  - removed the required property `markets/items/candlesticks/items/yes_ask/close` from the response with the `200` status
  - removed the required property `markets/items/candlesticks/items/yes_ask/high` from the response with the `200` status
  - …14 more
- **2026-01-26** `ea5437268cb9`: 2 info
  - added the required property `markets/items/candlesticks/items/open_interest_fp` to the response with the `200` status
  - added the required property `markets/items/candlesticks/items/volume_fp` to the response with the `200` status
- **2025-12-02** `02c9ca7d135f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/changes/markets/candlesticks/get.md)

---

[API](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints.md) - [All operations](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/llms.txt) - [OpenAPI document](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/revisions/e6691cdd1915?raw)
