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

# Get one futures competition, with progress and leaders

> Returns **one** futures/outright competition event — the same envelope and event object shape as `GET /api/v2/sports/{sportID}/futures` (`meta.delta_last_id`, `events` with a single event carrying `event_id`, `sport_id`, `event_date`, `settle_by`, `event_status`, `settlement`, `schedule`, `markets`) — plus up to three optional detail-only keys not served on the listing. **Early access — requires an Ultra plan or higher.**

**`progress`** — the competition's live non-odds state (a golf leaderboard, a team-sport standings table), refreshed on its own cycle independent of the odds board. `entries[].participant_id` is the same participant ID space `markets[].participants[].id` uses, so a progress row joins directly to a price. Omitted entirely (never `null`) when no progress document exists yet for the competition — "priced, no odds-board progress" is the normal state for a fresh team-championship board, not a degraded response. See [Competition Stats (Progress)](/guides/futures#competition-stats-progress) for the full field-by-field breakdown of both kinds live today.

**`leaders`** / **`player_leaders`** — optional curated season-stats leaderboards, team-grain and player-grain respectively, for a hand-verified set of sports. Both reuse the same `{stat, stat_id, season_year, entries[]}` shape and are omitted entirely (never an empty array) when the sport is not curated or no stat rows exist yet — see [Competition Stats (Progress)](/guides/futures#competition-stats-progress) for the curated sport list and the two distinct entry ID spaces.

**Settled competitions are always served here.** Unlike the listing (which hides settled markets and terminal events unless `include_settled=true`), this is a deep link to a specific competition you already hold the ID for, and it keeps working after settlement, with the graded results visible in `settlement`. There is no `include_settled` parameter on this endpoint.




## OpenAPI

````yaml get /api/v2/sports/{sportID}/futures/{eventID}
openapi: 3.1.0
info:
  title: TheRundown Sports API
  version: 2.0.0
  description: >
    Real-time and historical sports betting data, odds, lines, and statistics
    across major North American and international sports leagues.


    ## Authentication

    All endpoints (except `/sports` and `/affiliates`) require authentication.
    Pass your API key using one of:

    - **Query parameter**: `?key=YOUR_API_KEY`

    - **Header**: `X-Therundown-Key: YOUR_API_KEY`

    ## Off-the-Board Sentinel Value

    The value **0.0001** indicates a line is "off the board" — the sportsbook
    has temporarily removed pricing (e.g., pending injury news). This is NOT an
    error. Display as "Off Board" or "N/A" in your UI.


    ## Rate Limiting

    Requests are rate-limited per API key tier. Check response headers for
    current limits.


    ## Data Updates

    - Live odds update in real-time during games

    - Use delta endpoints for efficient polling of changes

    - WebSocket connections available for streaming updates


    ## V1 vs V2

    V2 endpoints use market-based data structures (market_id, participants, line
    prices). V1 endpoints use legacy line-based structures (moneyline, spread,
    total objects). V2 is recommended for new integrations.
  contact:
    name: TheRundown API Support
    url: https://therundown.io
    email: support@therundown.io
  termsOfService: https://therundown.io/terms
servers:
  - url: https://therundown.io
    description: Production
security:
  - ApiKeyQuery: []
  - ApiKeyHeader: []
tags:
  - name: V2 Sports
    description: Sport listings, dates, and teams (V2)
  - name: V2 Events
    description: Events with market-based odds (V2)
  - name: V2 Markets
    description: Market definitions, odds, deltas, and history (V2)
  - name: V2 Futures
    description: >-
      Futures/outright competition events — championship and tournament-winner
      boards (V2, early access)
  - name: V2 Teams
    description: Team data, players, and stats (V2)
  - name: V2 Players
    description: Player data (V2)
  - name: V2 Stats
    description: Team and player statistics (V2)
  - name: V2 WebSocket
    description: Real-time streaming via WebSocket (V2)
  - name: V2 Reference
    description: Reference data — affiliates, sportsbooks, season types (V2)
  - name: V1 Events
    description: Events with line-based odds (V1 legacy)
  - name: V1 Lines
    description: Moneyline, spread, total, best-line endpoints (V1 legacy)
  - name: V1 Sports
    description: Sport listings, dates, events, schedules (V1 legacy)
  - name: V1 Delta
    description: Delta/change feeds (V1 legacy)
  - name: V1 Reference
    description: Reference data (V1 legacy)
  - name: V1 WebSocket
    description: Real-time streaming via WebSocket (V1 legacy)
paths:
  /api/v2/sports/{sportID}/futures/{eventID}:
    get:
      tags:
        - V2 Futures
      summary: Get one futures competition, with progress and leaders
      description: >
        Returns **one** futures/outright competition event — the same envelope
        and event object shape as `GET /api/v2/sports/{sportID}/futures`
        (`meta.delta_last_id`, `events` with a single event carrying `event_id`,
        `sport_id`, `event_date`, `settle_by`, `event_status`, `settlement`,
        `schedule`, `markets`) — plus up to three optional detail-only keys not
        served on the listing. **Early access — requires an Ultra plan or
        higher.**


        **`progress`** — the competition's live non-odds state (a golf
        leaderboard, a team-sport standings table), refreshed on its own cycle
        independent of the odds board. `entries[].participant_id` is the same
        participant ID space `markets[].participants[].id` uses, so a progress
        row joins directly to a price. Omitted entirely (never `null`) when no
        progress document exists yet for the competition — "priced, no
        odds-board progress" is the normal state for a fresh team-championship
        board, not a degraded response. See [Competition Stats
        (Progress)](/guides/futures#competition-stats-progress) for the full
        field-by-field breakdown of both kinds live today.


        **`leaders`** / **`player_leaders`** — optional curated season-stats
        leaderboards, team-grain and player-grain respectively, for a
        hand-verified set of sports. Both reuse the same `{stat, stat_id,
        season_year, entries[]}` shape and are omitted entirely (never an empty
        array) when the sport is not curated or no stat rows exist yet — see
        [Competition Stats
        (Progress)](/guides/futures#competition-stats-progress) for the curated
        sport list and the two distinct entry ID spaces.


        **Settled competitions are always served here.** Unlike the listing
        (which hides settled markets and terminal events unless
        `include_settled=true`), this is a deep link to a specific competition
        you already hold the ID for, and it keeps working after settlement, with
        the graded results visible in `settlement`. There is no
        `include_settled` parameter on this endpoint.
      operationId: v2GetFuturesEventByID
      parameters:
        - $ref: '#/components/parameters/SportIDPath'
        - $ref: '#/components/parameters/EventIDPath'
        - name: market_ids
          in: query
          schema:
            type: string
          description: >-
            Comma-separated market IDs, intersected with the future-class market
            set. When omitted, all future-class markets are returned.
          example: '1141'
        - $ref: '#/components/parameters/AffiliateIDsQuery'
      responses:
        '200':
          description: Futures event retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FuturesEventDetailResponse'
              example:
                meta:
                  delta_last_id: '1595215769'
                events:
                  - event_id: a3d1f9f94f220a45cfd944181569cc46
                    sport_id: 2
                    event_date: '2026-09-10T00:00:00Z'
                    settle_by: '2027-02-21T00:00:00Z'
                    event_status: STATUS_SCHEDULED
                    settlement: {}
                    schedule:
                      event_name: NFL Super Bowl Winner (2026 Season)
                      season_year: 2026
                    markets:
                      - id: 4967891
                        market_id: 1141
                        period_id: 0
                        name: tournament_winner
                        market_description: Tournament Winner
                        participants:
                          - id: 61
                            type: TYPE_TEAM
                            name: Buffalo Bills
                            lines:
                              - id: 8155509548895b87157633c87df81b3e
                                prices:
                                  '22':
                                    id: '665502535'
                                    price: 1000
                                    is_main_line: true
                                    updated_at: '2026-07-29T17:01:46Z'
                    progress:
                      kind: league_standings
                      as_of: '2026-08-07T09:05:00Z'
                      phase:
                        status: STATUS_SCHEDULED
                        label: Week 1
                        unit: week
                        current: null
                        total: null
                      context: {}
                      entries:
                        - participant_id: 61
                          name: Buffalo Bills
                          rank: 1
                          wins: 0
                          losses: 0
                          ties: 0
                          win_pct: 0
                          points: 0
                          conference: AFC
                          division: AFC East
                        - participant_id: 63
                          name: New England Patriots
                          rank: 2
                          wins: 0
                          losses: 0
                          ties: 0
                          win_pct: 0
                          points: 0
                          conference: AFC
                          division: AFC East
                    leaders:
                      - stat: Total Yards
                        stat_id: 1120
                        season_year: 2025
                        entries:
                          - participant_id: 61
                            name: Buffalo Bills
                            value: 6432
                            rank: 1
                          - participant_id: 63
                            name: New England Patriots
                            value: 5211
                            rank: 2
                    player_leaders:
                      - stat: Passing Yards
                        stat_id: 1101
                        season_year: 2025
                        entries:
                          - participant_id: 15847
                            name: Josh Allen
                            value: 4306
                            rank: 1
        '400':
          description: Invalid parameter
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
        '403':
          description: Plan does not include futures markets
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  upgrade_url:
                    type: string
              example:
                error: Futures markets require Ultra plan or higher
                upgrade_url: /pricing/api
        '404':
          description: >-
            Unknown event ID, event under a different sport, or a
            non-competition (game) event
components:
  parameters:
    SportIDPath:
      name: sportID
      in: path
      required: true
      schema:
        type: integer
      description: >
        Sport ID. Common values: 1=NCAAF, 2=NFL, 3=MLB, 4=NBA, 5=NCAAB, 6=NHL,
        7=UFC, 8=WNBA, 9=CFL, 10=MLS, 11=EPL, 16=UEFA Champions League, 33=UEFA
        Europa League, 38=ATP Tennis, 39=WTA Tennis, 40=PGA Tour Golf,
        41=Formula 1
    EventIDPath:
      name: eventID
      in: path
      required: true
      schema:
        type: string
      description: >-
        Canonical V2 event ID from the `event_id` field returned by event
        endpoints
    AffiliateIDsQuery:
      name: affiliate_ids
      in: query
      schema:
        type: string
      description: >-
        Comma-separated sportsbook/affiliate IDs to filter. Common values
        include DraftKings (19), FanDuel (23), BetMGM (22), Bovada (2), Pinnacle
        (3).
  schemas:
    FuturesEventDetailResponse:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/FuturesMeta'
        events:
          type: array
          description: A single-element array — one event per request, no paging.
          items:
            $ref: '#/components/schemas/FuturesEventDetail'
    FuturesMeta:
      type: object
      properties:
        delta_last_id:
          type: string
          description: >-
            Bootstrap cursor for `GET /api/v2/markets/delta` — the same
            watermark every other snapshot endpoint's `meta.delta_last_id`
            provides. Remember to pass futures market IDs explicitly when
            polling the delta feed; they are not in its default set.
          example: '1595215769'
        next_cursor:
          type: string
          description: >-
            Opaque keyset token for the next page. Present only while more rows
            exist; absent on the last page. Pass back verbatim as `cursor`.
    FuturesEventDetail:
      allOf:
        - $ref: '#/components/schemas/FuturesEvent'
        - type: object
          properties:
            progress:
              $ref: '#/components/schemas/FuturesProgress'
            leaders:
              type: array
              description: >-
                Optional team-grain season-stats leaderboard, omitted entirely
                (never an empty array) when the sport has no curated stat set or
                the competition has no resolvable team participant. Curated
                today for NFL, NCAAF, NBA, WNBA, NCAAB, MLB, NHL, MLS, EPL,
                Ligue 1, Bundesliga, La Liga, and Serie A.
              items:
                $ref: '#/components/schemas/FuturesLeaderStat'
            player_leaders:
              type: array
              description: >-
                Optional PLAYER-grain season-stats leaderboard — the same
                `{stat, stat_id, season_year, entries[]}` shape as `leaders`,
                but league-wide rather than competition-scoped (player season
                stats carry no team linkage) and keyed on the player ID space.
                Curated today for NFL, NCAAF, NBA, WNBA, NCAAB, MLB, and NHL;
                omitted entirely when the sport has no curated player-stat set
                or no rows exist yet.
              items:
                $ref: '#/components/schemas/FuturesLeaderStat'
    FuturesEvent:
      type: object
      description: >-
        One competition event. Competitions are intervals — `event_date` is the
        start and `settle_by` the settlement horizon. Futures events have no
        `teams` array and no score block.
      properties:
        event_id:
          type: string
          description: >-
            Opaque hash identifying the competition. Stable for the life of the
            competition — the public handle across snapshots and the delta feed.
          example: a3d1f9f94f220a45cfd944181569cc46
        sport_id:
          type: integer
          example: 2
        event_date:
          type: string
          format: date-time
          description: When the competition starts (interval start).
        settle_by:
          type: string
          format: date-time
          description: >-
            Settlement horizon — when the competition must have graded (interval
            end).
        event_status:
          type: string
          description: >-
            Event status. Season-long team competitions currently remain
            `STATUS_SCHEDULED` for the life of the board (live in-progress
            status for team seasons is not yet populated); short competitions
            like golf tournaments do transition to `STATUS_IN_PROGRESS` and
            `STATUS_FINAL`.
          example: STATUS_SCHEDULED
        settlement:
          type: object
          description: >-
            Per-market settlement state, keyed by market ID. Empty (`{}`) until
            grading begins — a market with no entry has not entered grading.
          additionalProperties:
            $ref: '#/components/schemas/FuturesSettlement'
        schedule:
          $ref: '#/components/schemas/FuturesSchedule'
        markets:
          type: array
          description: >-
            Future-class markets in the standard V2
            market/participant/line/price shape.
          items:
            $ref: '#/components/schemas/MarketResponse'
    FuturesProgress:
      type: object
      description: >-
        The competition's live non-odds state — a leaderboard or a standings
        table — refreshed on its own cycle, independent of the odds board.
        `entries[].participant_id` is the same participant ID space
        `markets[].participants[].id` uses, so a progress row joins directly to
        a price. See [Competition Stats
        (Progress)](/guides/futures#competition-stats-progress) for the full
        field list per `kind`.
      properties:
        kind:
          type: string
          description: >-
            Which document shape `context`/`entries` follow. Live today —
            `stroke_play_leaderboard` (golf) and `league_standings` (team-sport
            championships).
          enum:
            - stroke_play_leaderboard
            - league_standings
          example: league_standings
        as_of:
          type: string
          format: date-time
          description: When the document was last refreshed.
        phase:
          $ref: '#/components/schemas/FuturesProgressPhase'
        context:
          type: object
          description: >-
            Kind-specific competition-wide state. `stroke_play_leaderboard`:
            `cut_score`, `cut_count`, `purse`, `round`, `round_state`.
            `league_standings`: an empty object today — standings context lives
            on each entry, not the shared block.
          additionalProperties: true
        entries:
          type: array
          description: >-
            Kind-specific ranked rows. `stroke_play_leaderboard`:
            `participant_id`, `name`, `position`, `tied`, `score_to_par`,
            `today`, `thru`, `movement`, `country`, `total_strokes`,
            `round_state`. `league_standings`: `participant_id`, `name`, `rank`,
            `wins`, `losses`, `ties`, `win_pct`, `points`, plus sport-specific
            fields such as `conference`, `division`, `seed`, `games_behind`,
            `streak`, and (soccer) `goal_difference`. Every field beyond the
            core set is optional and omitted when the source doesn't provide it.
          items:
            type: object
            additionalProperties: true
    FuturesLeaderStat:
      type: object
      description: One curated stat's top-5 leaderboard.
      properties:
        stat:
          type: string
          description: House display name — never an upstream stat's raw field name.
          example: Total Yards
        stat_id:
          type: integer
          format: int64
          description: >-
            Internal stat identifier, exposed the same way `market_id` is
            elsewhere.
          example: 1120
        season_year:
          type: integer
          description: >-
            The most recent season with data for this stat, derived per request
            — never hardcoded.
          example: 2025
        entries:
          type: array
          description: Top 5 ranked rows for this stat.
          items:
            $ref: '#/components/schemas/FuturesLeaderEntry'
    FuturesSettlement:
      type: object
      description: Per-market settlement state for a competition event.
      properties:
        status:
          type: string
          description: >-
            Settlement state. A market with no `settlement` entry at all has not
            entered grading; entries appear with a pre-grading status (e.g.
            `pending`) as the competition nears resolution, and become `settled`
            once graded. `settled` is the only terminal value — treat anything
            else as grading in progress; the vocabulary may grow.
          example: settled
        winning_line:
          type: string
          description: >-
            Canonical name of the winning participant. Present once settled, for
            winner-shaped markets only — entry markets (Top 10, Make The Cut)
            grade per participant and settle without a single winner.
          example: Jackson Koivun
        winning_participant_id:
          type: integer
          format: int64
          description: >-
            Participant ID of the winner, matching
            `markets[].participants[].id`. Present once settled, for
            winner-shaped markets only.
          example: 139644
        settled_at:
          type: string
          format: date-time
          description: When the market graded. Present once settled.
    FuturesSchedule:
      type: object
      description: Trimmed schedule block for a competition event.
      properties:
        event_name:
          type: string
          description: Human-readable competition name — the display identity of the event.
          example: NFL Super Bowl Winner (2026 Season)
        season_year:
          type: integer
          example: 2026
        league_name:
          type: string
          description: >-
            League or tour label, when applicable (e.g. `PGA Tour`). Omitted
            otherwise.
          example: PGA Tour
    MarketResponse:
      type: object
      description: Market with participants and prices for a specific event
      properties:
        id:
          type: integer
          format: int64
        market_id:
          type: integer
          example: 1
        period_id:
          type: integer
        name:
          type: string
          example: Money Line
        market_description:
          type: string
        participants:
          type: array
          items:
            $ref: '#/components/schemas/MarketParticipantResponse'
    FuturesProgressPhase:
      type: object
      description: Where the competition is in its lifecycle right now.
      properties:
        status:
          type: string
          description: >-
            Same status vocabulary as `event_status` elsewhere (e.g.
            `STATUS_IN_PROGRESS`, `STATUS_FINAL`).
          example: STATUS_IN_PROGRESS
        label:
          type: string
          description: >-
            Human-readable phase label, synthesized for display — never raw
            upstream text.
          example: Round 3 of 4
        unit:
          type: string
          description: The unit `current`/`total` are counted in (e.g. `round` for golf).
          example: round
        current:
          type:
            - integer
            - 'null'
          description: >-
            Current position within `unit`. `null` when there is no meaningful
            "current" — for example a standings table between games.
          example: 3
        total:
          type:
            - integer
            - 'null'
          description: >-
            Total `unit` count for the competition, when known; `null`
            otherwise.
          example: 4
    FuturesLeaderEntry:
      type: object
      description: One ranked participant within a curated stat.
      properties:
        participant_id:
          type: integer
          format: int64
          description: >-
            In `leaders`, the same team participant ID space
            `markets[].participants[].id` and `progress.entries[]` use. In
            `player_leaders`, the normalized player ID space player-prop market
            participants use — a different space from the team IDs.
          example: 61
        name:
          type: string
          example: Buffalo Bills
        value:
          type: number
          description: The stat's value for this participant, in the stat's native unit.
          example: 6432
        rank:
          type: integer
          description: >-
            1-based rank within this stat's top 5. Ascending stats (e.g. ERA)
            rank the MINIMUM value as 1.
          example: 1
    MarketParticipantResponse:
      type: object
      properties:
        id:
          type: integer
          description: >-
            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.
          example: 51
        type:
          type: string
          description: >-
            Kind of participant. Determines what `id` points to (team, player,
            or result outcome).
          enum:
            - TYPE_TEAM
            - TYPE_PLAYER
            - TYPE_RESULT
        name:
          type: string
          description: >-
            Display name. Not guaranteed unique across participants — join on
            `id`, not `name`.
          example: New England Patriots
        lines:
          type: array
          items:
            $ref: '#/components/schemas/MarketLinesResponse'
    MarketLinesResponse:
      type: object
      properties:
        id:
          type: string
        value:
          type: string
          description: >-
            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:
          type: string
        handicap:
          type: string
        prices:
          type: object
          description: Prices keyed by affiliate ID
          additionalProperties:
            $ref: '#/components/schemas/MarketLinePriceResponse'
    MarketLinePriceResponse:
      type: object
      properties:
        id:
          type: string
        price:
          type: number
          description: American odds price. Value of 0.0001 means "off the board".
          example: -110
        price_delta:
          type: number
          nullable: true
          description: Change from previous price
        is_main_line:
          type: boolean
          description: Whether this is the primary/main line
        source_id:
          type: string
          description: >-
            The sportsbook's own identifier for this price/selection, when
            available. Omitted when the book does not expose one.
        liquidity_usd:
          type: number
          description: >-
            Approximate USD resting-order-book depth for this price. Polymarket
            reports its own figure directly, refreshed alongside the price;
            Kalshi's is derived from its order book on a separate background
            refresh cadence (see the docs FAQ for details). Present only for
            prediction-market exchanges (Kalshi, affiliate 25; Polymarket,
            affiliate 26) — omitted entirely, never null and never a fabricated
            0, for every traditional sportsbook and for any exchange price
            without a current reading.
          example: 4210.5
        updated_at:
          type: string
          format: date-time
        closed_at:
          type: string
          format: date-time
          nullable: true
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: key
      description: API key as query parameter
    ApiKeyHeader:
      type: apiKey
      in: header
      name: X-Therundown-Key
      description: API key as request header

````