---
title: "Get opening prices for an event"
method: GET
path: "/api/v2/events/{eventID}/openers"
tags: ["V2 Events"]
---

# Get opening prices for an event

`GET /api/v2/events/{eventID}/openers`

## Request

- Base URL: `https://therundown.io`
- URL: `https://therundown.io/api/v2/events/{eventID}/openers`
- Auth: API key in header `X-TheRundown-Key`

Returns the earliest recorded price for each available line at each sportsbook. Opening snapshots are available whenever a price has been recorded, including before, during, or after an event. The response always uses an `events` array, even for one event ID.

## Path parameters

- `eventID` string, required

## Query parameters

- `market_ids` string
- `affiliate_ids` string
- `main_line` 'true' | 'false'
- `hide_closed` 'true' | 'false'

## Response `200`

Event with opening prices

- EventsV2Response
  - `meta` EventsSnapshotMeta, nullable
    - `delta_last_id` union: Positive whole-integer cursor for `/api/v2/markets/delta`. The API may return it as an integer or a numeric string. Use a snapshot value to begin market-delta polling only for known zero-delay access when that snapshot explicitly reports `X-Data-Delay-Seconds: 0`; otherwise use scoped snapshots and never substitute `0`.
      - integer
      - string
  - `events` EventV2[]
    - `event_id` string: Canonical event identifier string used by V2 endpoints, filters, and delta feeds.
    - `event_uuid` string: Compatibility identifier retained for older integrations. Do not assume it matches `event_id`.
    - `sport_id` integer
    - `event_date` string, date-time
    - `rotation_number_away` integer
    - `rotation_number_home` integer
    - `score` Score
      - `event_id` string
      - `event_status` string: Event status. Common values: STATUS_SCHEDULED, STATUS_IN_PROGRESS, STATUS_FINAL, STATUS_POSTPONED, STATUS_CANCELED, STATUS_SUSPENDED, STATUS_DELAYED, STATUS_RAIN_DELAY, STATUS_HALFTIME, STATUS_END_PERIOD, STATUS_END_OF_REGULATION, STATUS_OVERTIME, STATUS_FIRST_HALF, STATUS_SECOND_HALF
      - `team_id_away` integer: Away team ID. Omitted when zero.
      - `team_id_home` integer: Home team ID. Omitted when zero.
      - `score_away` integer
      - `score_home` integer
      - `winner_away` integer
      - `winner_home` integer
      - `score_away_by_period` integer[]: Away team's per-period scores, not running totals; index `0` is the first period. Overtime periods are appended. Read this array by its own length. Its sum is not guaranteed to equal `score_away`; verify before using it.
      - `score_home_by_period` integer[]: Home team's per-period scores, not running totals; index `0` is the first period. Overtime periods are appended. Read this array by its own length. Its sum is not guaranteed to equal `score_home`; verify before using it.
      - `venue_name` string: Arena or stadium name. May be an empty string when unavailable.
      - `venue_location` string: City and state. May be an empty string when unavailable.
      - `game_clock` integer
      - `display_clock` string
      - `is_clock_running` boolean: Clock-running flag when supplied. Omitted when unavailable.
      - `game_period` integer
      - `broadcast` string
      - `event_status_detail` string
      - `updated_at` string, date-time
    - `teams` TeamNormalized[]
      - `team_id` integer
      - `name` string
      - `mascot` string
      - `abbreviation` string
      - `record` string
      - `is_home` boolean
      - `is_away` boolean
      - `ranking` integer, nullable
      - `conference` Conference
        - `conference_id` integer
        - `sport_id` integer
        - `name` string
      - `division` Division
        - `division_id` integer
        - `conference_id` integer
        - `sport_id` integer
        - `name` string
    - `schedule` Schedule
      - `season_type` string
      - `season_year` integer
      - `conference_competition` boolean, nullable
      - `conference_name` string
      - `league_name` string, nullable
      - `event_name` string
      - `attendance` string
      - `event_headline` string
      - `game_number` 1 | 2: Game number for a true MLB doubleheader. Omitted for ordinary and standalone makeup games.
      - `game_type` 'doubleheader' | 'makeup' | 'doubleheader_makeup': Structured MLB doubleheader or makeup classification. Omitted for ordinary games.
      - `week` integer
      - `week_name` string
      - `week_detail` string
    - `pitcher_away` Pitcher
      - `id` integer
      - `name` string
      - `throws_left_handed` boolean, nullable
      - `throws_right_handed` boolean, nullable
      - `bats_left_handed` boolean, nullable
      - `bats_right_handed` boolean, nullable
    - `pitcher_home` Pitcher
      - `id` integer
      - `name` string
      - `throws_left_handed` boolean, nullable
      - `throws_right_handed` boolean, nullable
      - `bats_left_handed` boolean, nullable
      - `bats_right_handed` boolean, nullable
    - `markets` MarketResponse[]
      - `id` integer
      - `market_id` integer
      - `period_id` integer
      - `name` string
      - `market_description` string
      - `participants` MarketParticipantResponse[]
        - `id` integer: Stable, joinable participant identifier. Join on this field rather than name to avoid shared-name collisions. Its meaning depends on `type`: for `TYPE_TEAM` it is the normalized team ID (stable across seasons, matches `event.teams[].team_id`; full record at GET /api/v2/teams/{team_id}); for `TYPE_PLAYER` it is the player ID (full record at GET /api/v2/players/{player_id}); for `TYPE_RESULT` it is a small outcome index (e.g. 0/1 for Over/Under) and is not a team or player resource key.
        - `type` 'TYPE_TEAM' | 'TYPE_PLAYER' | 'TYPE_RESULT': Kind of participant. Determines what `id` points to (team, player, or result outcome).
        - `name` string: Display name. Not guaranteed unique across participants: join on `id`, not `name`.
        - `lines` MarketLinesResponse[]
          - `id` string
          - `value` string: Line value. For spreads/totals this is numeric; for some prop and special markets it can be a method, round, threshold, or other display value. When `line_value_is_participant` is true, the participant usually carries the selection.
          - `selection` string
          - `handicap` string
          - `prices` object: Prices keyed by affiliate ID
    - `live_game_state` LiveGameState: Real-time game-state snapshot embedded on live event payloads. Requires the live game state entitlement (Ultra plan or higher); keys without it never receive this field. Sport-specific blocks (`mlb`, `football`, `basketball`, `hockey`) are present only for the relevant sport.
      - `event_id` string
      - `sport_id` integer
      - `sport` string: Sport slug: `mlb`, `nba`, `nba-summer`, `ncaab`, `nfl`, `ncaaf`, `nhl`, `wnba`, or `soccer`
      - `period` integer: Current period/inning/quarter number
      - `half_indicator` string: Half within the period where applicable (e.g. `top`/`bottom` for MLB innings)
      - `display_clock` string: Clock display string. Omitted when inapplicable or not yet known.
      - `clock_seconds` integer: The same clock in seconds. Omitted when inapplicable or not yet known.
      - `clock_running` boolean: Whether the clock has been observed running. Omitted when inapplicable or not yet known.
      - `clock_as_of` string, date-time: When this clock value was observed, separate from the state row's updated_at.
      - `last_play` LastPlayRef: Reference to the most recent play, mirrored from the play-by-play timeline
        - `play_id` integer
        - `sequence` integer
        - `type` string
        - `result` string
        - `description` string
        - `team_id` integer
        - `scoring_play` boolean
        - `score_value` integer
        - `occurred_at` string, date-time
        - `win_probability_home` number
        - `participants` PlayParticipant[]
          - `player_id` integer: Normalized player ID: joins to the players endpoints
          - `name` string
          - `team_id` integer
          - `role` string
          - `position` string
      - `updated_at` string, date-time
      - `mlb` object: Baseball-only snapshot
        - `balls` integer
        - `strikes` integer
        - `outs` integer
        - `on_first` PlayPlayerSummary
          - `player_id` integer
          - `name` string
          - `team_id` integer
        - `on_second` PlayPlayerSummary
          - `player_id` integer
          - `name` string
          - `team_id` integer
        - `on_third` PlayPlayerSummary
          - `player_id` integer
          - `name` string
          - `team_id` integer
        - `current_batter` PlayPlayerSummary
          - `player_id` integer
          - `name` string
          - `team_id` integer
        - `current_pitcher` PlayPlayerSummary
          - `player_id` integer
          - `name` string
          - `team_id` integer
      - `football` object: NFL/NCAAF-only snapshot
        - `possession_team_id` integer
        - `down` integer
        - `distance` integer
        - `yard_line` integer
        - `down_distance_text` string
        - `short_down_distance_text` string
        - `possession_text` string
        - `is_red_zone` boolean
        - `home_timeouts` integer
        - `away_timeouts` integer
      - `basketball` object: NBA/WNBA/NCAAB-only snapshot
        - `possession_team_id` integer
        - `home_timeouts` integer
        - `away_timeouts` integer
        - `home_in_bonus` boolean
        - `away_in_bonus` boolean
      - `hockey` object: NHL-only snapshot
        - `possession_team_id` integer
        - `strength` string: Skater strength situation (e.g. even strength, power play)
        - `power_play_team_id` integer
        - `home_shots_on_goal` integer
        - `away_shots_on_goal` integer
        - `home_goalie_pulled` boolean
        - `away_goalie_pulled` boolean
    - `affiliate_source_ids` object: Map of affiliate ID (as a string) to that sportsbook's own identifier for this event, when available. Useful for deep-linking or joining against a book's data. For Polymarket (affiliate 26) the value is the Polymarket event slug; see the Source identifiers section of the Sportsbook reference.

## Other responses

- `400`: Invalid request parameters
- `401`: Missing or invalid API key
- `403`: The requested historical data is not available for this plan

## Changes

- **2026-10-29** `5a4eb15704f7`: 5 info
  - added the optional property `events/items/live_game_state/clock_as_of` to the response with the `200` status
  - added the optional property `events/items/live_game_state/clock_running` to the response with the `200` status
  - added the optional property `events/items/live_game_state/clock_seconds` to the response with the `200` status
  - added the optional property `events/items/live_game_state/display_clock` to the response with the `200` status
  - …1 more
- **2026-09-10** `75e26606912e`: 3 info
  - added the non-success response with the status `400`
  - added the non-success response with the status `401`
  - added the non-success response with the status `403`
- **2026-09-08** `8d16611813bf`: 3 breaking, 1 warning
  - for the `query` request parameter `hide_closed`, default value `false` was added
  - the response property `meta` became nullable for the status `200`
  - response property `meta/delta_last_id` list-of-types was widened by adding types `integer` to media type `application/json` of response `200`
  - removed the optional property `events/items/espn_uid` from the response with the `200` status
- **2026-08-13** `5aa0aa5c5f66`: 1 info
  - added the optional property `events/items/markets/items/participants/items/lines/items/prices/additionalProperties/liquidity_usd` to the response with the `200` status
- …earlier changes not shown

[Operation history](https://skmtc.dev/therundown/apis/therundown-sports-api/changes/api/v2/events/:eventID/openers/get.md)

---

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