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

# Currently-live Kalshi sports games (NHL/NBA/MLB/NFL+UFL/soccer/esports)

> Returns every Kalshi milestone currently live for the supported milestone types (hockey_tournament, basketball_game, baseball_game, football_game, soccer_tournament_multi_leg, esports_match), built into moneyline/spread/total market blocks from Kalshi's trading API. "Live" means started recently or starting soon, per Kalshi's live-data status. Responses are cacheable.



## OpenAPI

````yaml /openapi/data-api.yaml get /sports/kalshi-live-games
openapi: 3.1.0
info:
  title: Kairos Data API
  version: 1.0.0
  summary: >-
    The full Kairos data plane — markets, candles, trades, search, discover,
    sports, trader analytics, and PnL.
  description: |
    The Kairos Data API at `data.kairos.trade` is the platform's primary data
    plane: market metadata and prices, OHLCV candles, live venue trade proxies,
    normalized trade history, full-text search, discovery feeds, the sports
    catalog, public trader analytics, and account PnL.

    ## Authentication

    Most endpoints accept a Kairos **API key** (`X-Client-Id` + `X-Api-Key` +
    `X-Api-Secret`, all three) or a first-party session JWT. Endpoints tagged
    `public` (trader analytics, provider configs, several sports feeds) need
    no credentials at all. Some endpoints additionally require an API-key
    **scope** (`trade:read`, `position:read`) — stated per operation.

    For high-volume market-data consumption (candles/trades/metadata at
    scale), prefer the dedicated **Market Data API** at `md.kairos.trade` —
    it has higher budgets, ETag caching, and a binary candle format.

    ## Rate limits

    Rate limits use a sliding window keyed on the authenticated user (JWT
    `sub`) or, for anonymous callers, the trusted client IP. Routes belong to
    a named **bucket** (`x-kairos-bucket`) whose per-minute budget is shared
    by every route in it; routes with no bucket run under the service default
    of 100/minute. `x-kairos-rate-limit` states the bucket's compile-time
    default — operators can raise or lower a bucket at runtime, so treat the
    documented number as the baseline, not a contract. 429 responses carry
    `Retry-After` and `X-RateLimit-*`.

    ## Conventions

    - Prices are on the **0–100 cents scale** unless a field says otherwise
      (trader-analytics position/trade prices use the 0–1 scale; each field's
      description states its scale).
    - Errors: `{"detail": "<message>"}` for handler errors; FastAPI's
      standard validation envelope for 422s. Errors surfaced from a venue
      adapter instead use `{"error", "provider", "operation", "message"}` —
      see `DataProviderError`. Unhandled failures always return the generic
      500 body; internal details are logged, never returned.
    - Every request body is capped at 8 MiB service-wide (413).
  contact:
    name: Kairos
    url: https://app.kairos.trade/docs/api-reference
  termsOfService: https://kairos.trade/terms
servers:
  - url: https://data.kairos.trade
    description: Production
  - url: https://staging-data.kairos.trade
    description: Staging
security:
  - apiKeyClientId: []
    apiKeyKey: []
    apiKeySecret: []
paths:
  /sports/kalshi-live-games:
    get:
      tags:
        - Sports
      summary: Currently-live Kalshi sports games (NHL/NBA/MLB/NFL+UFL/soccer/esports)
      description: >-
        Returns every Kalshi milestone currently live for the supported
        milestone types (hockey_tournament, basketball_game, baseball_game,
        football_game, soccer_tournament_multi_leg, esports_match), built into
        moneyline/spread/total market blocks from Kalshi's trading API. "Live"
        means started recently or starting soon, per Kalshi's live-data status.
        Responses are cacheable.
      operationId: getSportsKalshiLiveGames
      responses:
        '200':
          description: >-
            Currently live Kalshi sports games with team, score/clock, and
            market data.
          headers:
            Cache-Control:
              schema:
                type: string
                example: public, max-age=240
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SportsKalshiLiveGamesResponse'
        '429':
          $ref: '#/components/responses/DataRateLimited'
      security: []
components:
  schemas:
    SportsKalshiLiveGamesResponse:
      type: object
      required:
        - games
      properties:
        games:
          type: array
          items:
            $ref: '#/components/schemas/SportsKalshiLiveGame'
    SportsKalshiLiveGame:
      type: object
      required:
        - milestoneId
        - type
        - family
        - league
        - sport
        - title
        - startDate
        - homeTeamId
        - awayTeamId
        - home
        - away
        - live
        - moneyline
        - spread
        - total
        - featuredImageUrl
        - totalVolume
      properties:
        milestoneId:
          type: string
          example: MILESTONE-987
        type:
          type: string
          enum:
            - hockey_tournament
            - basketball_game
            - baseball_game
            - football_game
            - soccer_tournament_multi_leg
            - esports_match
        family:
          type: string
          enum:
            - team
            - soccer
            - esports
        league:
          type: string
          example: NBA
        sport:
          type: string
          example: basketball
        title:
          type: string
          example: Lakers at Celtics
        startDate:
          type: string
          format: date-time
        homeTeamId:
          type: string
        awayTeamId:
          type: string
        home:
          $ref: '#/components/schemas/SportsKalshiTeamBlock'
        away:
          $ref: '#/components/schemas/SportsKalshiTeamBlock'
        draw:
          oneOf:
            - $ref: '#/components/schemas/SportsKalshiTeamBlock'
            - type: 'null'
          description: Only meaningful for family=soccer.
        drawTicker:
          type:
            - string
            - 'null'
          description: Only meaningful for family=soccer.
        drawPrice:
          type:
            - number
            - 'null'
          format: double
          description: Only meaningful for family=soccer.
        live:
          $ref: '#/components/schemas/SportsKalshiLiveData'
        moneyline:
          $ref: '#/components/schemas/SportsKalshiMoneyline'
        spread:
          oneOf:
            - $ref: '#/components/schemas/SportsKalshiLinesGroup'
            - type: 'null'
        total:
          oneOf:
            - $ref: '#/components/schemas/SportsKalshiLinesGroup'
            - type: 'null'
        featuredImageUrl:
          type:
            - string
            - 'null'
        totalVolume:
          type: number
          format: double
          description: Sum of moneyline market volumes.
          example: 84213
    SportsKalshiTeamBlock:
      type: object
      required:
        - name
        - logoUrl
        - color
      properties:
        name:
          type: string
          example: Boston Celtics
        logoUrl:
          type:
            - string
            - 'null'
        color:
          type:
            - string
            - 'null'
          example: '#007A33'
    SportsKalshiLiveData:
      type: object
      description: >-
        Live game-state block. Always includes homePoints, awayPoints, lastPlay,
        status. The remaining fields vary by milestone type:
        soccer_tournament_multi_leg adds statusText/half/time; esports_match
        adds format/currentMap; hockey_tournament adds period/periodRemaining;
        basketball_game adds period/periodType/periodRemaining/possession;
        baseball_game adds inning/inningHalf/balls/strikes/outs/bases;
        football_game adds
        quarter/clock/down/yardsToFirst/yardline/possessionTeamId.
      additionalProperties: true
      properties:
        homePoints:
          type: integer
        awayPoints:
          type: integer
        lastPlay:
          type: string
        status:
          type: string
      example:
        homePoints: 88
        awayPoints: 91
        lastPlay: 3-pointer made
        status: in_progress
        period: 4
        periodType: quarter
        periodRemaining: '02:14'
        possession: away
    SportsKalshiMoneyline:
      type: object
      required:
        - eventTicker
        - seriesTicker
        - homeTicker
        - awayTicker
        - homePrice
        - awayPrice
        - homeYesAsk
        - awayYesAsk
      properties:
        eventTicker:
          type: string
          example: KXNBAGAME-26JAN15LALBOS
        seriesTicker:
          type: string
          example: KXNBAGAME
        homeTicker:
          type: string
          example: KXNBAGAME-26JAN15LALBOS-BOS
        awayTicker:
          type: string
          example: KXNBAGAME-26JAN15LALBOS-LAL
        homePrice:
          type:
            - number
            - 'null'
          format: double
          description: yes_ask, falling back to last_price.
          example: 0.6
        awayPrice:
          type:
            - number
            - 'null'
          format: double
          example: 0.41
        homeYesAsk:
          type:
            - number
            - 'null'
          format: double
        awayYesAsk:
          type:
            - number
            - 'null'
          format: double
    SportsKalshiLinesGroup:
      type: object
      required:
        - eventTicker
        - seriesTicker
        - markets
      properties:
        eventTicker:
          type: string
        seriesTicker:
          type: string
        markets:
          type: array
          items:
            $ref: '#/components/schemas/SportsKalshiLineMarket'
    SportsKalshiLineMarket:
      type: object
      required:
        - ticker
        - yesSubTitle
        - noSubTitle
        - lastPrice
        - yesAsk
        - noAsk
        - volume
      properties:
        ticker:
          type: string
          example: KXNBAGAME-26JAN15LALBOS-T220.5
        yesSubTitle:
          type: string
          example: Over 220.5
        noSubTitle:
          type: string
          example: Under 220.5
        lastPrice:
          type:
            - number
            - 'null'
          format: double
        yesAsk:
          type:
            - number
            - 'null'
          format: double
        noAsk:
          type:
            - number
            - 'null'
          format: double
        volume:
          type:
            - number
            - 'null'
          format: double
  responses:
    DataRateLimited:
      description: >
        Rate limit exceeded for this route's sliding window, keyed on the
        session `sub` when

        authenticated and on the trusted client IP otherwise. Honor
        `Retry-After`. A per-API-key

        data ceiling (set per credential) rejects with `{"detail": "API key data
        rate limit

        exceeded"}` instead of the `error` envelope below.
      headers:
        Retry-After:
          schema:
            type: integer
        X-RateLimit-Limit:
          schema:
            type: integer
        X-RateLimit-Remaining:
          schema:
            type: integer
        X-RateLimit-Reset:
          schema:
            type: integer
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                example: 'Rate limit exceeded: 100 per 1 minute'
  securitySchemes:
    apiKeyClientId:
      type: apiKey
      in: header
      name: X-Client-Id
      description: >-
        Credential client id (`kairos_ck_...`). Must be sent together with
        X-Api-Key and X-Api-Secret.
    apiKeyKey:
      type: apiKey
      in: header
      name: X-Api-Key
      description: 64-char hex API key.
    apiKeySecret:
      type: apiKey
      in: header
      name: X-Api-Secret
      description: 64-char hex API secret.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.