Kalshi events API

Event endpoints

Operations 6

GET /series/{series_ticker}/events/{ticker}/candlesticks Get Event Candlesticks #
GET /events Get Events #
GET /events/multivariate Get Multivariate Events #
GET /events/{event_ticker} Get Event #
GET /events/{event_ticker}/metadata Get Event Metadata #
GET /series/{series_ticker}/events/{ticker}/forecast_percentile_history Get Event Forecast Percentile History #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/kalshi-events-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

kalshi-events-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Kalshi Trade API Manual Endpoints account Events API
  version: 3.19.0
  description: Manually defined OpenAPI spec for endpoints being migrated to spec-first approach
servers:
- url: https://external-api.kalshi.com/trade-api/v2
  description: Production Trade API server
- url: https://api.elections.kalshi.com/trade-api/v2
  description: Production shared API server, also supported
- url: https://external-api.demo.kalshi.co/trade-api/v2
  description: Demo Trade API server
- url: https://demo-api.kalshi.co/trade-api/v2
  description: Demo shared API server, also supported
tags:
- name: events
  description: Event endpoints
paths:
  /series/{series_ticker}/events/{ticker}/candlesticks:
    get:
      operationId: GetMarketCandlesticksByEvent
      summary: Get Event Candlesticks
      description: ' End-point for returning aggregated data across all markets corresponding to an event.'
      tags:
      - events
      parameters:
      - name: ticker
        in: path
        required: true
        description: The event ticker
        schema:
          type: string
      - name: series_ticker
        in: path
        required: true
        description: The series ticker
        schema:
          type: string
      - name: start_ts
        in: query
        required: true
        description: Start timestamp for the range
        schema:
          type: integer
          format: int64
        x-oapi-codegen-extra-tags:
          validate: required
      - name: end_ts
        in: query
        required: true
        description: End timestamp for the range
        schema:
          type: integer
          format: int64
        x-oapi-codegen-extra-tags:
          validate: required
      - name: period_interval
        in: query
        required: true
        description: Specifies the length of each candlestick period, in minutes. Must be one minute, one hour, or one day.
        schema:
          type: integer
          format: int32
          enum:
          - 1
          - 60
          - 1440
        x-oapi-codegen-extra-tags:
          validate: required,oneof=1 60 1440
      responses:
        '200':
          description: Event candlesticks retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetEventCandlesticksResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal server error
  /events:
    get:
      operationId: GetEvents
      summary: Get Events
      description: 'Get all events. This endpoint excludes multivariate events.

        To retrieve multivariate events, use the GET /events/multivariate endpoint.

        All events are accessible through this endpoint, even if their associated markets are older than the historical cutoff.

        '
      tags:
      - events
      parameters:
      - name: limit
        in: query
        required: false
        description: Parameter to specify the number of results per page. Defaults to 200. Maximum value is 200.
        schema:
          type: integer
          minimum: 1
          maximum: 200
          default: 200
      - name: cursor
        in: query
        required: false
        description: Parameter to specify the pagination cursor. Use the cursor value returned from the previous response to get the next page of results. Leave empty for the first page.
        schema:
          type: string
      - name: with_nested_markets
        in: query
        required: false
        description: Parameter to specify if nested markets should be included in the response. When true, each event will include a 'markets' field containing a list of Market objects associated with that event. Historical markets settled before the historical cutoff will not be included.
        schema:
          type: boolean
          default: false
        x-go-type-skip-optional-pointer: true
      - name: with_milestones
        in: query
        required: false
        description: If true, includes related milestones as a field alongside events.
        schema:
          type: boolean
          default: false
        x-go-type-skip-optional-pointer: true
      - name: status
        in: query
        required: false
        description: Filter by event status. Possible values are 'unopened', 'open', 'closed', 'settled'. Leave empty to return events with any status.
        schema:
          type: string
          enum:
          - unopened
          - open
          - closed
          - settled
      - $ref: '#/components/parameters/SeriesTickerQuery'
      - name: min_close_ts
        in: query
        required: false
        description: Filter events with at least one market with close timestamp greater than this Unix timestamp (in seconds).
        schema:
          type: integer
          format: int64
      - name: min_updated_ts
        in: query
        required: false
        description: Filter events with metadata updated after this Unix timestamp (in seconds). Use this to efficiently poll for changes.
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: Events retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetEventsResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal server error
  /events/multivariate:
    get:
      operationId: GetMultivariateEvents
      summary: Get Multivariate Events
      description: Retrieve multivariate (combo) events. These are dynamically created events from multivariate event collections. Supports filtering by series and collection ticker.
      tags:
      - events
      parameters:
      - name: limit
        in: query
        required: false
        description: Number of results per page. Defaults to 100. Maximum value is 200.
        schema:
          type: integer
          minimum: 1
          maximum: 200
          default: 100
      - name: cursor
        in: query
        required: false
        description: Pagination cursor. Use the cursor value returned from the previous response to get the next page of results.
        schema:
          type: string
      - $ref: '#/components/parameters/SeriesTickerQuery'
      - name: collection_ticker
        in: query
        required: false
        description: Filter events by collection ticker. Returns only multivariate events belonging to the specified collection. Cannot be used together with series_ticker.
        schema:
          type: string
      - name: with_nested_markets
        in: query
        required: false
        description: Parameter to specify if nested markets should be included in the response. When true, each event will include a 'markets' field containing a list of Market objects associated with that event.
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Multivariate events retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetMultivariateEventsResponse'
        '400':
          description: Bad request - invalid parameters
        '401':
          description: Unauthorized
        '500':
          description: Internal server error
  /events/{event_ticker}:
    get:
      operationId: GetEvent
      summary: Get Event
      description: 'Endpoint for getting data about an event by its ticker. An event represents a real-world occurrence that can be traded on, such as an election, sports game, or economic indicator release.

        Events contain one or more markets where users can place trades on different outcomes.

        All events are accessible through this endpoint, even if their associated markets are older than the historical cutoff.

        '
      tags:
      - events
      parameters:
      - name: event_ticker
        in: path
        required: true
        description: Event ticker
        schema:
          type: string
      - name: with_nested_markets
        in: query
        required: false
        description: If true, markets are included within the event object. If false (default), markets are returned as a separate top-level field in the response. Historical markets settled before the historical cutoff will not be included.
        schema:
          type: boolean
          default: false
          x-go-type-skip-optional-pointer: true
      responses:
        '200':
          description: Event retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetEventResponse'
        '400':
          description: Bad request
        '404':
          description: Event not found
        '401':
          description: Unauthorized
        '500':
          description: Internal server error
  /events/{event_ticker}/metadata:
    get:
      operationId: GetEventMetadata
      summary: Get Event Metadata
      description: ' Endpoint for getting metadata about an event by its ticker.  Returns only the metadata information for an event.'
      tags:
      - events
      parameters:
      - name: event_ticker
        in: path
        required: true
        description: Event ticker
        schema:
          type: string
      responses:
        '200':
          description: Event metadata retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetEventMetadataResponse'
        '400':
          description: Bad request
        '404':
          description: Event not found
        '401':
          description: Unauthorized
        '500':
          description: Internal server error
  /series/{series_ticker}/events/{ticker}/forecast_percentile_history:
    get:
      operationId: GetEventForecastPercentilesHistory
      summary: Get Event Forecast Percentile History
      description: Endpoint for getting the historical raw and formatted forecast numbers for an event at specific percentiles.
      tags:
      - events
      security:
      - kalshiAccessKey: []
        kalshiAccessSignature: []
        kalshiAccessTimestamp: []
      parameters:
      - name: ticker
        in: path
        required: true
        description: The event ticker
        schema:
          type: string
      - name: series_ticker
        in: path
        required: true
        description: The series ticker
        schema:
          type: string
      - name: percentiles
        in: query
        required: true
        description: Array of percentile values to retrieve (0-9999, max 10 values)
        schema:
          type: array
          items:
            type: integer
            format: int32
            minimum: 0
            maximum: 9999
          maxItems: 10
        style: form
        explode: true
      - name: start_ts
        in: query
        required: true
        description: Start timestamp for the range
        schema:
          type: integer
          format: int64
      - name: end_ts
        in: query
        required: true
        description: End timestamp for the range
        schema:
          type: integer
          format: int64
      - name: period_interval
        in: query
        required: true
        description: Specifies the length of each forecast period, in minutes. 0 for 5-second intervals, or 1, 60, or 1440 for minute-based intervals.
        schema:
          type: integer
          format: int32
          enum:
          - 0
          - 1
          - 60
          - 1440
      responses:
        '200':
          description: Event forecast percentile history retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetEventForecastPercentilesHistoryResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '500':
          description: Internal server error
components:
  schemas:
    Market:
      type: object
      required:
      - ticker
      - event_ticker
      - market_type
      - yes_sub_title
      - no_sub_title
      - created_time
      - updated_time
      - open_time
      - close_time
      - latest_expiration_time
      - settlement_timer_seconds
      - status
      - notional_value_dollars
      - yes_bid_dollars
      - yes_ask_dollars
      - no_bid_dollars
      - no_ask_dollars
      - yes_bid_size_fp
      - yes_ask_size_fp
      - last_price_dollars
      - previous_yes_bid_dollars
      - previous_yes_ask_dollars
      - previous_price_dollars
      - volume_fp
      - volume_24h_fp
      - liquidity_dollars
      - open_interest_fp
      - result
      - can_close_early
      - fractional_trading_enabled
      - expiration_value
      - rules_primary
      - rules_secondary
      - price_level_structure
      - price_ranges
      properties:
        ticker:
          type: string
        event_ticker:
          type: string
        market_type:
          type: string
          enum:
          - binary
          - scalar
          description: Identifies the type of market
        title:
          type: string
          deprecated: true
          x-go-type-skip-optional-pointer: true
        subtitle:
          type: string
          deprecated: true
          x-go-type-skip-optional-pointer: true
        yes_sub_title:
          type: string
          description: Shortened title for the yes side of this market
        no_sub_title:
          type: string
          description: Shortened title for the no side of this market
        created_time:
          type: string
          format: date-time
        updated_time:
          type: string
          format: date-time
          description: Time of the last non-trading metadata update.
        open_time:
          type: string
          format: date-time
        close_time:
          type: string
          format: date-time
        expected_expiration_time:
          type:
          - string
          - 'null'
          format: date-time
          x-omitempty: true
          description: Time when this market is expected to expire
        expiration_time:
          type: string
          format: date-time
          deprecated: true
          x-go-type-skip-optional-pointer: true
        latest_expiration_time:
          type: string
          format: date-time
          description: Latest possible time for this market to expire
        settlement_timer_seconds:
          type: integer
          description: The amount of time after determination that the market settles
        status:
          type: string
          enum:
          - initialized
          - inactive
          - active
          - closed
          - determined
          - disputed
          - amended
          - finalized
          description: The current status of the market in its lifecycle.
        response_price_units:
          type: string
          enum:
          - usd_cent
          deprecated: true
          description: 'DEPRECATED: Use price_level_structure and price_ranges instead.'
          x-go-type-skip-optional-pointer: true
        yes_bid_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Price for the highest YES buy offer on this market in dollars
        yes_bid_size_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: Total contract size of orders to buy YES at the best bid price (fixed-point count string).
        yes_ask_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Price for the lowest YES sell offer on this market in dollars
        yes_ask_size_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: Total contract size of orders to sell YES at the best ask price (fixed-point count string).
        no_bid_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Price for the highest NO buy offer on this market in dollars
        no_ask_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Price for the lowest NO sell offer on this market in dollars
        last_price_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Price for the last traded YES contract on this market in dollars
        volume_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: String representation of the market volume in contracts
        volume_24h_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: String representation of the 24h market volume in contracts
        result:
          type: string
          enum:
          - 'yes'
          - 'no'
          - scalar
          - ''
        can_close_early:
          type: boolean
        fractional_trading_enabled:
          type: boolean
          deprecated: true
          description: Deprecated. This flag is always `true` and carries no information. Will be removed after a pre-announcement with the removal date.
        open_interest_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: String representation of the number of contracts bought on this market disconsidering netting
        notional_value_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: The total value of a single contract at settlement in dollars
        previous_yes_bid_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Price for the highest YES buy offer on this market a day ago in dollars
        previous_yes_ask_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Price for the lowest YES sell offer on this market a day ago in dollars
        previous_price_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Price for the last traded YES contract on this market a day ago in dollars
        liquidity_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          deprecated: true
          description: 'DEPRECATED: This field is deprecated and will always return "0.0000".'
        settlement_value_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          x-omitempty: true
          description: The settlement value of the YES/LONG side of the contract in dollars. Only filled after determination
        settlement_ts:
          type:
          - string
          - 'null'
          format: date-time
          x-omitempty: true
          description: Timestamp when the market was settled. Only filled for settled markets
        expiration_value:
          type: string
          description: The value that was considered for the settlement
        occurrence_datetime:
          type:
          - string
          - 'null'
          format: date-time
          description: The recorded datetime when the underlying event occurred, if available
        fee_waiver_expiration_time:
          type:
          - string
          - 'null'
          format: date-time
          x-omitempty: true
          description: Time when this market's fee waiver expires
        early_close_condition:
          type:
          - string
          - 'null'
          x-omitempty: true
          description: The condition under which the market can close early
          x-go-type-skip-optional-pointer: true
        strike_type:
          type: string
          enum:
          - greater
          - greater_or_equal
          - less
          - less_or_equal
          - between
          - functional
          - custom
          - structured
          x-omitempty: true
          description: Strike type defines how the market strike is defined and evaluated
          x-go-type-skip-optional-pointer: true
        floor_strike:
          type:
          - number
          - 'null'
          format: double
          x-omitempty: true
          description: Minimum expiration value that leads to a YES settlement
        cap_strike:
          type:
          - number
          - 'null'
          format: double
          x-omitempty: true
          description: Maximum expiration value that leads to a YES settlement
        functional_strike:
          type:
          - string
          - 'null'
          x-omitempty: true
          description: Mapping from expiration values to settlement values
        custom_strike:
          type:
          - object
          - 'null'
          x-omitempty: true
          description: Expiration value for each target that leads to a YES settlement
        rules_primary:
          type: string
          description: A plain language description of the most important market terms
        rules_secondary:
          type: string
          description: A plain language description of secondary market terms
        mve_collection_ticker:
          type: string
          x-omitempty: true
          description: The ticker of the multivariate event collection
          x-go-type-skip-optional-pointer: true
        mve_selected_legs:
          type: array
          x-omitempty: true
          items:
            $ref: '#/components/schemas/MveSelectedLeg'
          x-go-type-skip-optional-pointer: true
        primary_participant_key:
          type:
          - string
          - 'null'
          x-omitempty: true
        price_level_structure:
          type: string
          description: Price level structure for this market, defining price ranges and tick sizes
        price_ranges:
          type: array
          description: Valid price ranges for orders on this market
          items:
            $ref: '#/components/schemas/PriceRange'
        is_provisional:
          type: boolean
          x-omitempty: true
          description: If true, the market may be removed after determination if there is no activity on it
          x-go-type-skip-optional-pointer: true
        exchange_index:
          allOf:
          - $ref: '#/components/schemas/ExchangeIndex'
          x-go-type-skip-optional-pointer: true
    GetEventForecastPercentilesHistoryResponse:
      type: object
      required:
      - forecast_history
      properties:
        forecast_history:
          type: array
          description: Array of forecast percentile data points over time.
          items:
            $ref: '#/components/schemas/ForecastPercentilesPoint'
    GetEventsResponse:
      type: object
      required:
      - events
      - cursor
      properties:
        events:
          type: array
          description: Array of events matching the query criteria.
          items:
            $ref: '#/components/schemas/EventData'
        milestones:
          type: array
          description: Array of milestones related to the events.
          items:
            $ref: '#/components/schemas/Milestone'
        cursor:
          type: string
          description: Pagination cursor for the next page. Empty if there are no more results.
    MarketMetadata:
      type: object
      required:
      - market_ticker
      - image_url
      - color_code
      properties:
        market_ticker:
          type: string
          description: The ticker of the market.
        image_url:
          type: string
          description: A path to an image that represents this market.
        color_code:
          type: string
          description: The color code for the market.
    MarketCandlestick:
      type: object
      required:
      - end_period_ts
      - yes_bid
      - yes_ask
      - price
      - volume_fp
      - open_interest_fp
      properties:
        end_period_ts:
          type: integer
          format: int64
          description: Unix timestamp for the inclusive end of the candlestick period.
        yes_bid:
          $ref: '#/components/schemas/BidAskDistribution'
          description: Open, high, low, close (OHLC) data for YES buy offers on the market during the candlestick period.
        yes_ask:
          $ref: '#/components/schemas/BidAskDistribution'
          description: Open, high, low, close (OHLC) data for YES sell offers on the market during the candlestick period.
        price:
          $ref: '#/components/schemas/PriceDistribution'
          description: Open, high, low, close (OHLC) and more data for trade YES contract prices on the market during the candlestick period.
        volume_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: String representation of the number of contracts bought on the market during the candlestick period.
        open_interest_fp:
          $ref: '#/components/schemas/FixedPointCount'
          description: String representation of the number of contracts bought on the market by end of the candlestick period (end_period_ts).
    FixedPointDollars:
      type: string
      description: US dollar amount as a fixed-point decimal string with up to 6 decimal places of precision. This is the maximum supported precision; valid quote intervals for a given market are constrained by that market's price level structure.
      example: '0.5600'
    ForecastPercentilesPoint:
      type: object
      required:
      - event_ticker
      - end_period_ts
      - period_interval
      - percentile_points
      properties:
        event_ticker:
          type: string
          description: The event ticker this forecast is for.
        end_period_ts:
          type: integer
          format: int64
          description: Unix timestamp for the inclusive end of the forecast period.
        period_interval:
          type: integer
          format: int32
          description: Length of the forecast period in minutes.
        percentile_points:
          type: array
          description: Array of forecast values at different percentiles.
          items:
            $ref: '#/components/schemas/PercentilePoint'
    GetEventCandlesticksResponse:
      type: object
      required:
      - market_tickers
      - market_candlesticks
      - adjusted_end_ts
      properties:
        market_tickers:
          type: array
          description: Array of market tickers in the event.
          items:
            type: string
        market_candlesticks:
          type: array
          description: Array of market candlestick arrays, one for each market in the event.
          items:
            type: array
            items:
              $ref: '#/components/schemas/MarketCandlestick'
        adjusted_end_ts:
          type: integer
          format: int64
          description: Adjusted end timestamp if the requested candlesticks would be larger than maxAggregateCandidates.
    BidAskDistribution:
      type: object
      required:
      - open_dollars
      - low_dollars
      - high_dollars
      - close_dollars
      properties:
        open_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Offer price on the market at the start of the candlestick period (in dollars).
        low_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Lowest offer price on the market during the candlestick period (in dollars).
        high_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Highest offer price on the market during the candlestick period (in dollars).
        close_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Offer price on the market at the end of the candlestick period (in dollars).
    GetMultivariateEventsResponse:
      type: object
      required:
      - events
      - cursor
      properties:
        events:
          type: array
          description: Array of multivariate events matching the query criteria.
          items:
            $ref: '#/components/schemas/EventData'
        cursor:
          type: string
          description: Pagination cursor for the next page. Empty if there are no more results.
    GetEventResponse:
      type: object
      required:
      - event
      - markets
      properties:
        event:
          $ref: '#/components/schemas/EventData'
          description: Data for the event.
        markets:
          type: array
          description: Data for the markets in this event. This field is deprecated in favour of the "markets" field inside the event. Which will be filled with the same value if you use the query parameter "with_nested_markets=true".
          items:
            $ref: '#/components/schemas/Market'
    FixedPointCount:
      type: string
      description: 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 on markets with fractional trading enabled; the minimum granularity is 0.01 contracts. Integer contract count fields are legacy and will be deprecated; when both integer and fp fields are provided, they must match.
      example: '10.00'
    PriceDistribution:
      type: object
      properties:
        open_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: First traded YES contract price on the market during the candlestick period (in dollars). May be null if there was no trade during the period.
        low_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Lowest traded YES contract price on the market during the candlestick period (in dollars). May be null if there was no trade during the period.
        high_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Highest traded YES contract price on the market during the candlestick period (in dollars). May be null if there was no trade during the period.
        close_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Last traded YES contract price on the market during the candlestick period (in dollars). May be null if there was no trade during the period.
        mean_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Mean traded YES contract price on the market during the candlestick period (in dollars). May be null if there was no trade during the period.
        previous_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Last traded YES contract price on the market before the candlestick period (in dollars). May be null if there were no trades before the period.
        min_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Minimum close price of any market during the candlestick period (in dollars).
        max_dollars:
          $ref: '#/components/schemas/FixedPointDollars'
          description: Maximum close price of any market during the candlestick period (in dollars).
    PercentilePoint:
      type: object
      required:
      - percentile
      - raw_numerical_forecast
      - numerical_forecast
      - formatted_forecast
      properties:
        percentile:
          type: integer
          format: int32
          description: The percentile value (0-9999).
        raw_numerical_forecast:
          type: number
          description: The raw numerical forecast value.
        numerical_forecast:
          type: number
          description: The processed numerical forecast value.
        formatted_forecast:
          type: string
          description: The human-readable formatted forecast value.
    EventData:
      type: object
      required:
      - event_ticker
      - series_ticker
      - sub_title
      - title
      - collateral_return_type
      - mutually_exclusive
      - available_on_brokers
      - product_metadata
      properties:
        event_ticker:
          type: string
          description: Unique identifier for this event.
        series_ticker:
          type: string
          description: Unique identifier for the series this event belongs to.
        sub_title:
          type: string
          description: Shortened descriptive title for the event.
        title:
          type: string
          description: Full title of the event.
        collateral_return_type:

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kalshi/refs/heads/main/openapi/kalshi-events-api-openapi.yml