---
title: "Currently-live Kalshi sports games (NHL/NBA/MLB/NFL+UFL/soccer/esports)"
method: GET
path: "/sports/kalshi-live-games"
tags: ["Sports"]
---

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

`GET /sports/kalshi-live-games`

## Request

- Base URL: `https://data.kairos.trade`
- URL: `https://data.kairos.trade/sports/kalshi-live-games`
- Auth: none required

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.

## Response `200`

Currently live Kalshi sports games with team, score/clock, and market data.

- SportsKalshiLiveGamesResponse
  - `games` SportsKalshiLiveGame[], required
    - `milestoneId` string, required
    - `type` 'hockey_tournament' | 'basketball_game' | 'baseball_game' | 'football_game' | 'soccer_tournament_multi_leg' | 'esports_match', required
    - `family` 'team' | 'soccer' | 'esports', required
    - `league` string, required
    - `sport` string, required
    - `title` string, required
    - `startDate` string, date-time, required
    - `homeTeamId` string, required
    - `awayTeamId` string, required
    - `home` SportsKalshiTeamBlock, required
      - `name` string, required
      - `logoUrl` string, nullable, required
      - `color` string, nullable, required
    - `away` SportsKalshiTeamBlock, required
      - `name` string, required
      - `logoUrl` string, nullable, required
      - `color` string, nullable, required
    - `draw` SportsKalshiTeamBlock
      - `name` string, required
      - `logoUrl` string, nullable, required
      - `color` string, nullable, required
    - `drawTicker` string, nullable: Only meaningful for family=soccer.
    - `drawPrice` number, double, nullable: Only meaningful for family=soccer.
    - `live` SportsKalshiLiveData, required: 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.
      - `homePoints` integer
      - `awayPoints` integer
      - `lastPlay` string
      - `status` string
    - `moneyline` SportsKalshiMoneyline, required
      - `eventTicker` string, required
      - `seriesTicker` string, required
      - `homeTicker` string, required
      - `awayTicker` string, required
      - `homePrice` number, double, nullable, required: yes_ask, falling back to last_price.
      - `awayPrice` number, double, nullable, required
      - `homeYesAsk` number, double, nullable, required
      - `awayYesAsk` number, double, nullable, required
    - `spread` SportsKalshiLinesGroup, required
      - `eventTicker` string, required
      - `seriesTicker` string, required
      - `markets` SportsKalshiLineMarket[], required
        - `ticker` string, required
        - `yesSubTitle` string, required
        - `noSubTitle` string, required
        - `lastPrice` number, double, nullable, required
        - `yesAsk` number, double, nullable, required
        - `noAsk` number, double, nullable, required
        - `volume` number, double, nullable, required
    - `total` SportsKalshiLinesGroup, required
      - `eventTicker` string, required
      - `seriesTicker` string, required
      - `markets` SportsKalshiLineMarket[], required
        - `ticker` string, required
        - `yesSubTitle` string, required
        - `noSubTitle` string, required
        - `lastPrice` number, double, nullable, required
        - `yesAsk` number, double, nullable, required
        - `noAsk` number, double, nullable, required
        - `volume` number, double, nullable, required
    - `featuredImageUrl` string, nullable, required
    - `totalVolume` number, double, required: Sum of moneyline market volumes.

## Other responses

- `429`: 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.

---

[API](https://skmtc.dev/kairos/apis/kairos-data-api.md) - [All operations](https://skmtc.dev/kairos/apis/kairos-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kairos/apis/kairos-data-api/revisions/cf6b76079e38?raw)
