The Rundown V1 Events API
Events with line-based odds (V1 legacy)
Documentation
Documentation
https://docs.therundown.io/introduction
Authentication
https://docs.therundown.io/authentication
Events with line-based odds (V1 legacy)
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