> ## Documentation Index
> Fetch the complete documentation index at: https://docs.predexon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Orderbook History (Sub-Cent)

> Fetch historical sub-cent orderbook snapshots for a Kalshi market

Fetch historical orderbook snapshots for a Kalshi market with **full sub-cent price
precision**. Data starts from **January 8th, 2026**.

Kalshi prices markets in sub-cent increments. This endpoint reflects those prices
exactly: a level at 57.5 cents is reported as `"57.5"`, spreads are as tight as they
really are, and sizes include fractional contracts. The
[legacy orderbook endpoint](/api-reference/kalshi/orderbooks) rounds everything to
whole cents, which widens spreads and merges neighboring price levels into one.

For example, in a live market where this endpoint reported a best bid/ask of
`57.50 / 57.60` (a 0.1-cent spread), the legacy endpoint reported `57 / 58` for the
same moment, and folded the `57.5`, `57.1`, and `57.0` bid levels into a single `57`
bucket.

<Warning>
  **The legacy endpoint will be deprecated soon.** Use this endpoint for all
  integrations. The deprecation date will be announced in the
  [changelog](/changelog).
</Warning>

<Tip>**Free & Unlimited.** This endpoint does not count toward your monthly usage limits on any plan.</Tip>

| Constraint | Value                |
| ---------- | -------------------- |
| `limit`    | 1–2000 (default 100) |

<Warning>
  Timestamps are in **milliseconds**. Prices and sizes are exact decimal **strings**
  (`"36.50"`, `"196.52"`). Parse them as decimals, not floats, if exactness matters.
  Sizes may be fractional (Kalshi fractional contracts).
</Warning>

## Differences from the legacy endpoint

|              | `/v2/kalshi/orderbooks` (legacy) | `/v2/kalshi/orderbooks-subcent`         |
| ------------ | -------------------------------- | --------------------------------------- |
| Prices       | integer cents (`36`)             | decimal-cent strings (`"36.50"`)        |
| Sizes        | integers                         | strings, may be fractional              |
| Extra fields | none                             | `source` per snapshot, `sources` filter |
| Status       | **deprecated soon**              | active development                      |

## The `source` field and `sources` parameter

Snapshots are assembled from several capture streams, reported per snapshot in
`source`:

* `websocket`: the primary capture spine (bulk of the data)
* `api`: REST resyncs
* `live_early`: trade-triggered early capture of brand-new markets

The default `sources=spine` serves the standard capture streams. `sources=websocket`
(or any comma-separated list) narrows to specific streams. `sources=all` returns the
raw table including experimental capture streams, and is intended for debugging
rather than analytics.

## Migrating from the legacy endpoint

* Prices arrive as strings with decimal scale. `legacy_price == round(float(subcent_price))`
  does **not** hold in general, because sub-cent levels have no integer-cent
  equivalent.
* Pagination works identically (`pagination_key` cursor over `timestamp`, `sequence`).
* Most consumers can ignore `source`.


## OpenAPI

````yaml GET /v2/kalshi/orderbooks-subcent
openapi: 3.1.0
info:
  title: Predexon API
  description: Prediction market data aggregation and matching API
  version: 2.0.0
servers:
  - url: https://api.predexon.com
security:
  - apiKey: []
paths:
  /v2/kalshi/orderbooks-subcent:
    get:
      tags:
        - kalshi
      summary: Get Kalshi Orderbooks V2
      description: >-
        Fetch historical **sub-cent** orderbook snapshots for a Kalshi market.


        Identical in shape to `/orderbooks`, but prices are decimal-cent strings

        (e.g. "36.50") instead of integers, and each snapshot carries a `source`

        field. All timestamps are in milliseconds.


        The default (`sources=spine`) serves the standard capture streams;
        experimental

        streams are excluded unless `sources=all` is passed.
      operationId: get_kalshi_orderbooks_v2_v2_kalshi_orderbooks_subcent_get
      parameters:
        - name: ticker
          in: query
          required: true
          schema:
            type: string
            description: The Kalshi market ticker
            title: Ticker
          description: The Kalshi market ticker
        - name: start_time
          in: query
          required: true
          schema:
            type: integer
            description: Start time in Unix timestamp (milliseconds)
            title: Start Time
          description: Start time in Unix timestamp (milliseconds)
        - name: end_time
          in: query
          required: true
          schema:
            type: integer
            description: End time in Unix timestamp (milliseconds)
            title: End Time
          description: End time in Unix timestamp (milliseconds)
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 2000
            minimum: 1
            description: Maximum number of snapshots to return
            default: 100
            title: Limit
          description: Maximum number of snapshots to return
        - name: pagination_key
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Pagination key to get the next chunk of data
            title: Pagination Key
          description: Pagination key to get the next chunk of data
        - name: sources
          in: query
          required: false
          schema:
            type: string
            description: >-
              Which capture sources to include: 'spine' (default, the standard
              capture streams), 'all' (raw table, may include experimental
              duplicate streams), or a comma-separated list of exact source
              names.
            default: spine
            title: Sources
          description: >-
            Which capture sources to include: 'spine' (default, the standard
            capture streams), 'all' (raw table, may include experimental
            duplicate streams), or a comma-separated list of exact source names.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KalshiOrderbooksV2Response'
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad Request
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal Server Error
components:
  schemas:
    KalshiOrderbooksV2Response:
      properties:
        snapshots:
          items:
            $ref: '#/components/schemas/KalshiOrderbookSnapshotV2'
          type: array
          title: Snapshots
        pagination:
          $ref: '#/components/schemas/CursorPagination'
      type: object
      required:
        - snapshots
        - pagination
      title: KalshiOrderbooksV2Response
      description: Sub-cent Kalshi orderbooks endpoint response.
    ErrorResponse:
      properties:
        error:
          type: string
          title: Error
        message:
          type: string
          title: Message
      type: object
      required:
        - error
        - message
      title: ErrorResponse
      description: Standard error response.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    KalshiOrderbookSnapshotV2:
      properties:
        ticker:
          type: string
          title: Ticker
          description: Market ticker
        timestamp:
          type: integer
          title: Timestamp
          description: Snapshot timestamp in milliseconds
        yes_bids:
          items:
            $ref: '#/components/schemas/KalshiOrderbookLevelV2'
          type: array
          title: Yes Bids
          description: Yes bid levels, ordered by price descending
        yes_asks:
          items:
            $ref: '#/components/schemas/KalshiOrderbookLevelV2'
          type: array
          title: Yes Asks
          description: Yes ask levels, ordered by price ascending
        best_bid:
          type: string
          title: Best Bid
          description: >-
            Best bid price in decimal cents, fixed 2 decimals as a string (e.g.
            "36.50")
        best_ask:
          type: string
          title: Best Ask
          description: >-
            Best ask price in decimal cents, fixed 2 decimals as a string (e.g.
            "37.00")
        bid_depth:
          type: integer
          title: Bid Depth
          description: Total bid depth (number of contracts)
        ask_depth:
          type: integer
          title: Ask Depth
          description: Total ask depth (number of contracts)
        sequence:
          type: integer
          title: Sequence
          description: Sequence number for ordering within same timestamp
        source:
          type: string
          title: Source
          description: >-
            Origin of this snapshot within the capture pipeline:
            "websocket"/"api" (the primary spine) or "live_early"
            (trade-triggered early capture of brand-new markets).
      type: object
      required:
        - ticker
        - timestamp
        - yes_bids
        - yes_asks
        - best_bid
        - best_ask
        - bid_depth
        - ask_depth
        - sequence
        - source
      title: KalshiOrderbookSnapshotV2
      description: Single sub-cent Kalshi orderbook snapshot.
    CursorPagination:
      properties:
        limit:
          type: integer
          title: Limit
          description: Requested limit
        count:
          type: integer
          title: Count
          description: Number of items in current response
        pagination_key:
          anyOf:
            - type: string
            - type: 'null'
          title: Pagination Key
          description: Base64-encoded cursor for next page
        has_more:
          type: boolean
          title: Has More
          description: Whether there are more items available
      type: object
      required:
        - limit
        - count
        - has_more
      title: CursorPagination
      description: Cursor-based pagination for endpoints that don't support offset.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    KalshiOrderbookLevelV2:
      properties:
        price:
          type: string
          title: Price
          description: Price in decimal cents as a string (e.g. "36.50")
        size:
          type: string
          title: Size
          description: >-
            Quantity at this price level as an exact string; may be fractional
            (e.g. "196.52")
      type: object
      required:
        - price
        - size
      title: KalshiOrderbookLevelV2
      description: |-
        Single price level in a sub-cent Kalshi orderbook.

        Unlike the integer-cent endpoint, prices are decimal-cent strings
        (e.g. "36.50") to preserve sub-cent precision and exact scale.
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````