The Rundown V1 Events API

Events with line-based odds (V1 legacy)

OpenAPI Specification

therundown-v1-events-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: TheRundown Sports V1 Delta V1 Events 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: V1 Events
  description: Events with line-based odds (V1 legacy)
paths:
  /api/v1/events/{eventId}:
    get:
      operationId: v1GetEventByID
      tags:
      - V1 Events
      summary: Get a single event with lines
      parameters:
      - name: eventId
        in: path
        required: true
        schema:
          type: string
      - name: include
        in: query
        schema:
          type: string
          enum:
          - all_periods
        description: Set to `all_periods` to include period-specific lines
      - name: affiliate_ids
        in: query
        schema:
          type: string
        description: Comma-separated affiliate IDs
      responses:
        '200':
          description: Event with lines
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1Event'
              example:
                event_id: 09bfa53f8484a63e584398545c035932
                sport_id: 4
                event_date: '2026-02-12T00:00:00Z'
                score:
                  event_status: STATUS_FINAL
                  score_away: 107
                  score_home: 110
                  venue_name: Spectrum Center
                  venue_location: Charlotte, NC
                  event_status_detail: Final
                teams:
                - team_id: 178
                  team_normalized_id: 11
                  name: Atlanta Hawks
                  is_away: true
                  is_home: false
                - team_id: 164
                  team_normalized_id: 12
                  name: Charlotte Hornets
                  is_away: false
                  is_home: true
                teams_normalized:
                - team_id: 11
                  name: Atlanta
                  mascot: Hawks
                  abbreviation: ATL
                  record: 26-30
                  is_away: true
                  is_home: false
                - team_id: 12
                  name: Charlotte
                  mascot: Hornets
                  abbreviation: CHA
                  record: 26-29
                  is_away: false
                  is_home: true
                lines:
                  '4':
                    line_id: 17980122
                    moneyline:
                      moneyline_away: -105
                      moneyline_home: -115
                      moneyline_draw: 0.0001
                    spread:
                      point_spread_away: 1.5
                      point_spread_away_money: -110
                      point_spread_home: -1.5
                      point_spread_home_money: -110
                    total:
                      total_over: 235.5
                      total_over_money: -110
                      total_under: 235.5
                      total_under_money: -110
  /api/v1/events/{eventId}/lines/{lineId}:
    get:
      operationId: v1GetByLineID
      tags:
      - V1 Events
      summary: Get event by line ID
      parameters:
      - name: eventId
        in: path
        required: true
        schema:
          type: string
      - name: lineId
        in: path
        required: true
        schema:
          type: string
      - name: include
        in: query
        schema:
          type: string
          enum:
          - all_periods
      responses:
        '200':
          description: Event for the line
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1Event'
              example:
                event_id: 09bfa53f8484a63e584398545c035932
                sport_id: 4
                event_date: '2026-02-12T00:00:00Z'
                teams_normalized:
                - team_id: 11
                  name: Atlanta
                  mascot: Hawks
                  abbreviation: ATL
                  is_away: true
                  is_home: false
  /api/v1/sports/{sportID}/events/{date}:
    get:
      operationId: v1GetEventsBySportAndDate
      tags:
      - V1 Events
      summary: Get events with lines for a sport and date
      parameters:
      - $ref: '#/components/parameters/SportIDPath'
      - name: date
        in: path
        required: true
        schema:
          type: string
          format: date
      - $ref: '#/components/parameters/OffsetQuery'
      - name: conference_id
        in: query
        schema:
          type: integer
      - name: division_id
        in: query
        schema:
          type: integer
      - $ref: '#/components/parameters/AffiliateIDsQuery'
      - name: exclude_status
        in: query
        schema:
          type: string
        description: Comma-separated event statuses to exclude
      - name: include
        in: query
        schema:
          type: string
          enum:
          - all_periods
      responses:
        '200':
          description: Events with lines
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1EventsResponse'
              example:
                events:
                - event_id: 09bfa53f8484a63e584398545c035932
                  sport_id: 4
                  event_date: '2026-02-12T00:00:00Z'
                  teams_normalized:
                  - team_id: 11
                    name: Atlanta
                    mascot: Hawks
                    abbreviation: ATL
                    record: 26-30
                    is_away: true
                    is_home: false
                  - team_id: 12
                    name: Charlotte
                    mascot: Hornets
                    abbreviation: CHA
                    record: 26-29
                    is_away: false
                    is_home: true
                  lines:
                    '4':
                      line_id: 17980122
                      moneyline:
                        moneyline_away: -105
                        moneyline_home: -115
                      spread:
                        point_spread_away: 1.5
                        point_spread_away_money: -110
                        point_spread_home: -1.5
                        point_spread_home_money: -110
                      total:
                        total_over: 235.5
                        total_over_money: -110
                        total_under: 235.5
                        total_under_money: -110
  /api/v1/sports/{sportID}/openers/{date}:
    get:
      operationId: v1GetOpenersBySportAndDate
      tags:
      - V1 Events
      summary: Get opening lines for a sport and date
      parameters:
      - $ref: '#/components/parameters/SportIDPath'
      - name: date
        in: path
        required: true
        schema:
          type: string
          format: date
      - $ref: '#/components/parameters/OffsetQuery'
      - name: conference_id
        in: query
        schema:
          type: integer
      - name: division_id
        in: query
        schema:
          type: integer
      - $ref: '#/components/parameters/AffiliateIDsQuery'
      - name: exclude_status
        in: query
        schema:
          type: string
      - name: include
        in: query
        schema:
          type: string
          enum:
          - all_periods
      responses:
        '200':
          description: Events with opening lines
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1EventsResponse'
              example:
                events:
                - event_id: 09bfa53f8484a63e584398545c035932
                  sport_id: 4
                  event_date: '2026-02-12T00:00:00Z'
                  teams_normalized:
                  - team_id: 11
                    name: Atlanta
                    mascot: Hawks
                    abbreviation: ATL
                    is_away: true
                    is_home: false
                  lines:
                    '4':
                      moneyline:
                        moneyline_away: -120
                        moneyline_home: 100
  /api/v1/sports/{sportID}/closing/{date}:
    get:
      operationId: v1GetClosingBySportAndDate
      tags:
      - V1 Events
      summary: Get closing lines for a sport and date
      parameters:
      - $ref: '#/components/parameters/SportIDPath'
      - name: date
        in: path
        required: true
        schema:
          type: string
          format: date
      - $ref: '#/components/parameters/OffsetQuery'
      - name: conference_id
        in: query
        schema:
          type: integer
      - name: division_id
        in: query
        schema:
          type: integer
      - $ref: '#/components/parameters/AffiliateIDsQuery'
      - name: exclude_status
        in: query
        schema:
          type: string
      - name: include
        in: query
        schema:
          type: string
          enum:
          - all_periods
      responses:
        '200':
          description: Events with closing lines
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1EventsResponse'
              example:
                events:
                - event_id: 09bfa53f8484a63e584398545c035932
                  sport_id: 4
                  event_date: '2026-02-12T00:00:00Z'
                  teams_normalized:
                  - team_id: 11
                    name: Atlanta
                    mascot: Hawks
                    abbreviation: ATL
                    is_away: true
                    is_home: false
                  lines:
                    '4':
                      moneyline:
                        moneyline_away: -105
                        moneyline_home: -115
  /api/v1/sports/{sportID}/widget/events:
    get:
      operationId: v1GetWidgetEvents
      tags:
      - V1 Events
      summary: Get events for widget display
      description: Internal widget endpoint. Returns events with pagination.
      parameters:
      - $ref: '#/components/parameters/SportIDPath'
      - name: last_id
        in: query
        schema:
          type: string
      - name: limit
        in: query
        schema:
          type: integer
          default: 10
      - $ref: '#/components/parameters/AffiliateIDsQuery'
      - name: include
        in: query
        schema:
          type: string
          enum:
          - all_periods
      responses:
        '200':
          description: Events
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1EventsResponse'
              example:
                events:
                - event_id: 09bfa53f8484a63e584398545c035932
                  sport_id: 4
                  event_date: '2026-02-12T00:00:00Z'
  /api/v1/sports/{sportID}/widget/opening:
    get:
      operationId: v1GetWidgetOpening
      tags:
      - V1 Events
      summary: Get opening lines for widget
      parameters:
      - $ref: '#/components/parameters/SportIDPath'
      - $ref: '#/components/parameters/AffiliateIDsQuery'
      - name: include
        in: query
        schema:
          type: string
          enum:
          - all_periods
      responses:
        '200':
          description: Events with opening lines
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1EventsResponse'
              example:
                events:
                - event_id: 09bfa53f8484a63e584398545c035932
                  sport_id: 4
                  event_date: '2026-02-12T00:00:00Z'
  /api/v1/sports/{sportID}/widget/closing:
    get:
      operationId: v1GetWidgetClosing
      tags:
      - V1 Events
      summary: Get closing lines for widget
      parameters:
      - $ref: '#/components/parameters/SportIDPath'
      - $ref: '#/components/parameters/AffiliateIDsQuery'
      - name: include
        in: query
        schema:
          type: string
          enum:
          - all_periods
      responses:
        '200':
          description: Events with closing lines
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V1EventsResponse'
              example:
                events:
                - event_id: 09bfa53f8484a63e584398545c035932
                  sport_id: 4
                  event_date: '2026-02-12T00:00:00Z'
components:
  schemas:
    Pitcher:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        throws_left_handed:
          type: boolean
          nullable: true
        throws_right_handed:
          type: boolean
          nullable: true
        bats_left_handed:
          type: boolean
          nullable: true
        bats_right_handed:
          type: boolean
          nullable: true
    V1LinePeriods:
      type: object
      properties:
        period_full_game:
          $ref: '#/components/schemas/V1Line'
        period_first_half:
          $ref: '#/components/schemas/V1Line'
        period_second_half:
          $ref: '#/components/schemas/V1Line'
        period_first_period:
          $ref: '#/components/schemas/V1Line'
        period_second_period:
          $ref: '#/components/schemas/V1Line'
        period_third_period:
          $ref: '#/components/schemas/V1Line'
        period_fourth_period:
          $ref: '#/components/schemas/V1Line'
        period_live_full_game:
          $ref: '#/components/schemas/V1Line'
        period_live_first_half:
          $ref: '#/components/schemas/V1Line'
        period_live_second_half:
          $ref: '#/components/schemas/V1Line'
        period_live_first_period:
          $ref: '#/components/schemas/V1Line'
        period_live_second_period:
          $ref: '#/components/schemas/V1Line'
        period_live_third_period:
          $ref: '#/components/schemas/V1Line'
        period_live_fourth_period:
          $ref: '#/components/schemas/V1Line'
    Meta:
      type: object
      properties:
        delta_last_id:
          type: string
    Schedule:
      type: object
      properties:
        season_type:
          type: string
          example: Regular Season
        season_year:
          type: integer
          example: 2026
        conference_competition:
          type: boolean
          nullable: true
        conference_name:
          type: string
        league_name:
          type: string
          nullable: true
        event_name:
          type: string
        attendance:
          type: string
        event_headline:
          type: string
        week:
          type: integer
        week_name:
          type: string
        week_detail:
          type: string
    Score:
      type: object
      properties:
        event_id:
          type: string
        event_status:
          type: string
          description: '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:
          type: integer
          description: Away team ID. Omitted when zero.
        team_id_home:
          type: integer
          description: Home team ID. Omitted when zero.
        score_away:
          type: integer
        score_home:
          type: integer
        winner_away:
          type: integer
        winner_home:
          type: integer
        score_away_by_period:
          type: array
          items:
            type: integer
        score_home_by_period:
          type: array
          items:
            type: integer
        venue_name:
          type: string
          description: Arena or stadium name. May be an empty string when unavailable from the live feed.
        venue_location:
          type: string
          description: City and state. May be an empty string when unavailable from the live feed.
        game_clock:
          type: integer
        display_clock:
          type: string
        game_period:
          type: integer
        broadcast:
          type: string
        event_status_detail:
          type: string
        updated_at:
          type: string
          format: date-time
    V1Moneyline:
      type: object
      properties:
        moneyline_away:
          type: number
          description: Away team moneyline. 0.0001 = off the board.
          example: 150
        moneyline_away_delta:
          type: number
        moneyline_home:
          type: number
          example: -180
        moneyline_home_delta:
          type: number
        moneyline_draw:
          type: number
          description: Draw moneyline (soccer, UFC)
        moneyline_draw_delta:
          type: number
        date_updated:
          type: string
          format: date-time
          nullable: true
        format:
          type: string
          example: American
    TeamNormalized:
      type: object
      properties:
        team_id:
          type: integer
        name:
          type: string
        mascot:
          type: string
        abbreviation:
          type: string
        record:
          type: string
        is_home:
          type: boolean
        is_away:
          type: boolean
        ranking:
          type: integer
          nullable: true
        conference:
          $ref: '#/components/schemas/Conference'
        division:
          $ref: '#/components/schemas/Division'
    Affiliate:
      type: object
      properties:
        affiliate_id:
          type: integer
          example: 19
        affiliate_name:
          type: string
          example: Draftkings
        affiliate_url:
          type: string
          example: https://draftkings.com
        regions:
          type: array
          items:
            $ref: '#/components/schemas/Region'
    V1Spread:
      type: object
      properties:
        point_spread_away:
          type: number
          example: 3.5
        point_spread_away_delta:
          type: number
        point_spread_home:
          type: number
          example: -3.5
        point_spread_home_delta:
          type: number
        point_spread_away_money:
          type: number
          example: -110
        point_spread_away_money_delta:
          type: number
        point_spread_home_money:
          type: number
          example: -110
        point_spread_home_money_delta:
          type: number
        date_updated:
          type: string
          format: date-time
          nullable: true
        format:
          type: string
        extended_spreads:
          type: array
          items:
            $ref: '#/components/schemas/V1Spread'
    Conference:
      type: object
      properties:
        conference_id:
          type: integer
        sport_id:
          type: integer
        name:
          type: string
    V1Event:
      type: object
      properties:
        event_id:
          type: string
        event_uuid:
          type: string
        sport_id:
          type: integer
        event_date:
          type: string
          format: date-time
        rotation_number_away:
          type: integer
        rotation_number_home:
          type: integer
        score:
          $ref: '#/components/schemas/Score'
        teams:
          type: array
          items:
            type: object
            properties:
              team_id:
                type: integer
              team_normalized_id:
                type: integer
              name:
                type: string
              is_home:
                type: boolean
              is_away:
                type: boolean
        teams_normalized:
          type: array
          items:
            $ref: '#/components/schemas/TeamNormalized'
        schedule:
          $ref: '#/components/schemas/Schedule'
        lines:
          type: object
          description: Lines keyed by affiliate ID
          additionalProperties:
            $ref: '#/components/schemas/V1Line'
        line_periods:
          type: object
          description: Period-specific lines keyed by affiliate ID (when `include=all_periods`)
          additionalProperties:
            $ref: '#/components/schemas/V1LinePeriods'
        pitcher_away:
          $ref: '#/components/schemas/Pitcher'
        pitcher_home:
          $ref: '#/components/schemas/Pitcher'
    V1Line:
      type: object
      properties:
        line_id:
          type: integer
        moneyline:
          $ref: '#/components/schemas/V1Moneyline'
        spread:
          $ref: '#/components/schemas/V1Spread'
        total:
          $ref: '#/components/schemas/V1Total'
        affiliate:
          $ref: '#/components/schemas/Affiliate'
        teams:
          type: array
          items:
            type: object
            properties:
              team_id:
                type: integer
              team_normalized_id:
                type: integer
              name:
                type: string
              is_home:
                type: boolean
              is_away:
                type: boolean
        period_id:
          type: integer
        period_description:
          type: string
    V1Total:
      type: object
      properties:
        total_over:
          type: number
          example: 47.5
        total_over_delta:
          type: number
        total_under:
          type: number
          example: 47.5
        total_under_delta:
          type: number
        total_over_money:
          type: number
          example: -110
        total_over_money_delta:
          type: number
        total_under_money:
          type: number
          example: -110
        total_under_money_delta:
          type: number
        date_updated:
          type: string
          format: date-time
          nullable: true
        format:
          type: string
        extended_totals:
          type: array
          items:
            $ref: '#/components/schemas/V1Total'
    V1EventsResponse:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        events:
          type: array
          items:
            $ref: '#/components/schemas/V1Event'
    Region:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
    Division:
      type: object
      properties:
        division_id:
          type: integer
        conference_id:
          type: integer
        sport_id:
          type: integer
        name:
          type: string
  parameters:
    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).
    OffsetQuery:
      name: offset
      in: query
      schema:
        type: integer
        default: 0
        example: 300
      description: UTC offset in **minutes** for the date boundary. Use `300` for US Central, `240` for Eastern, `360` for Mountain, `420` for Pacific. Without this, the API day boundary is midnight UTC.
    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

        '
  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