---
title: "Get Historical Fills"
method: GET
path: "/historical/fills"
tags: ["historical"]
---

# Get Historical Fills

`GET /historical/fills`

## Request

- Base URL: `https://external-api.kalshi.com/trade-api/v2`
- URL: `https://external-api.kalshi.com/trade-api/v2/historical/fills`
- Auth: one of:
  - API key in header `KALSHI-ACCESS-KEY` and API key in header `KALSHI-ACCESS-SIGNATURE` and API key in header `KALSHI-ACCESS-TIMESTAMP`
  - HTTP bearer

Endpoint for getting all historical fills for the member. A fill is when a trade you have is matched.
API keys restricted to a subaccount return only that subaccount's fills. If supplied, `subaccount` must match the key's restriction.
Registered partners may also use a user OAuth access token with the explicitly granted read::compliance_partner scope.

## Query parameters

- `ticker` string
- `min_ts` integer
- `max_ts` integer
- `limit` integer
- `cursor` string
- `subaccount` integer

## Response `200`

Fills retrieved successfully

- GetFillsResponse
  - `fills` Fill[], required
    - `fill_id` string, required: Unique identifier for this fill
    - `exchange_index` integer, required: Identifier for an exchange shard.
    - `trade_id` string, required: Unique identifier for this fill (legacy field name, same as fill_id)
    - `order_id` string, required: Unique identifier for the order that resulted in this fill
    - `ticker` string, required: Unique identifier for the market
    - `market_ticker` string, required: Unique identifier for the market (legacy field name, same as ticker)
    - `side` 'yes' | 'no': Deprecated. Use `outcome_side` (or `book_side`) instead. See [Order direction](/getting_started/order_direction). This field will not be removed before May 14, 2026.
    - `action` 'buy' | 'sell': Deprecated. Use `outcome_side` (or `book_side`) instead. See [Order direction](/getting_started/order_direction). This field will not be removed before May 14, 2026.
    - `outcome_side` 'yes' | 'no', required: Outcome side.
    - `book_side` 'bid' | 'ask', required: Side of the book for an order or trade. For event markets, this refers to the YES leg only: `bid` means buy YES, `ask` means sell YES. (Selling YES is economically equivalent to buying NO at `1 - price`, but this endpoint quotes everything from the YES side.)
    - `count_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.
    - `yes_price_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.
    - `no_price_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.
    - `is_taker` boolean, required: If true, this fill was a taker (removed liquidity from the order book)
    - `created_time` string, date-time: Timestamp when this fill was executed
    - `fee_cost` 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.
    - `subaccount_number` integer, nullable: Subaccount number (0 for primary, 1-63 for subaccounts). Present for direct users.
    - `ts` integer: Unix timestamp when this fill was executed (legacy field name)
  - `cursor` string, required

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `404`: Resource not found
- `500`: Internal server error

## Changes

- **2026-10-16** `bd0c218a65b7`: 1 warning
  - for the `query` request parameter `subaccount`, the min was set to `0.00`
- **2026-09-22** `4c03a1c6fdf8`: 1 info
  - added the new optional `query` request parameter `subaccount`
- **2026-09-18** `30e750f714ab`: 1 info
  - the endpoint scheme security `kalshiOauthAccessToken` was added to the API
- **2026-09-15** `75098a17c536`: 1 info
  - added the new optional `query` request parameter `min_ts`
- **2026-08-19** `87cbea53ccd8`: 1 info
  - added the required property `fills/items/exchange_index` to the response with the `200` status

[Operation history](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/changes/historical/fills/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)
