---
title: "Get Milestone"
method: GET
path: "/milestones/{milestone_id}"
tags: ["milestone"]
---

# Get Milestone

`GET /milestones/{milestone_id}`

## Request

- Base URL: `https://external-api.kalshi.com/trade-api/v2`
- URL: `https://external-api.kalshi.com/trade-api/v2/milestones/{milestone_id}`
- Auth: none declared

Endpoint for getting data about a specific milestone by its ID. The milestone's `details.status`, when present, is maintained by a periodic background job. It lags the game's live state and may be stale or inaccurate, for example remaining `live` after the game ends. For game status, prefer live data, which is updated far more often: `live_data.details.status` from `GET /live_data/milestone/{milestone_id}`, or each entry's `details.status` from `GET /live_data/batch`. Scores are in the sport-specific fields of that live data `details` object.

## Path parameters

- `milestone_id` string, required

## Response `200`

Milestone retrieved successfully

- GetMilestoneResponse
  - `milestone` Milestone, required
    - `id` string, required: Unique identifier for the milestone.
    - `category` string, required: Category of the milestone. E.g. Sports, Elections, Esports, Crypto.
    - `type` string, required: Type of the milestone. E.g. football_game, basketball_game, soccer_tournament_multi_leg, baseball_game, hockey_match, golf_tournament, political_race.
    - `start_date` string, date-time, required: Start date of the milestone.
    - `end_date` string, date-time, nullable: End date of the milestone, if any.
    - `related_event_tickers` string[], required: List of event tickers related to this milestone.
    - `title` string, required: Title of the milestone.
    - `notification_message` string, required: Notification message for the milestone.
    - `source_id` string, nullable: Source id of milestone if available.
    - `source_ids` object: Source ids of milestone if available.
    - `details` object, required: Additional details about the milestone. `details.status`, when present, is maintained by a periodic background job. It lags the game's live state and may be stale or inaccurate, for example remaining `live` after the game ends. For game status, prefer live data, which is updated far more often: `live_data.details.status` from `GET /live_data/milestone/{milestone_id}`, or each entry's `details.status` from `GET /live_data/batch`. Scores are in the sport-specific fields of that live data `details` object.
    - `primary_event_tickers` string[], required: List of event tickers directly related to the outcome of this milestone.
    - `last_updated_ts` string, date-time, required: Last time this structured target was updated.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `404`: Not Found
- `500`: Internal Server Error

## Changes

- **2026-03-08** `0efefc7b0f73`: 1 info
  - added the optional property `milestone/source_ids` to the response with the `200` status
- **2025-11-06** `6ad7527f54aa`: 2 breaking, 1 warning, 15 info
  - the response property `milestone/end_date` became nullable for the status `200`
  - the response property `milestone/source_id` became nullable for the status `200`
  - removed the optional property `milestone/details/key` from the response with the `200` status
  - added the non-success response with the status `400`
  - …14 more
- **2025-10-17** `32e75b657779`: 12 info
  - added the optional property `milestone/category` to the response with the `200` status
  - added the optional property `milestone/details` to the response with the `200` status
  - added the optional property `milestone/end_date` to the response with the `200` status
  - added the optional property `milestone/id` to the response with the `200` status
  - …8 more
- **2025-10-17** `6ce8fe6c1c3b`: 12 warning
  - removed the optional property `milestone/category` from the response with the `200` status
  - removed the optional property `milestone/details` from the response with the `200` status
  - removed the optional property `milestone/end_date` from the response with the `200` status
  - removed the optional property `milestone/id` from the response with the `200` status
  - …8 more

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