STAT-API

NBA API Reference

Every NBA game across the 82-game regular season, the In-Season Tournament, the play-in round, and the four-round playoffs through the Finals — with the players, coaching staffs, depth charts, injuries, betting markets, and possession-level play-by-play behind them.

Main

seasonsnba.seasons
Each NBA league year, running from October through June — the 82-game regular season, the play-in tournament, and the four-round playoffs that end with the NBA Finals.
GET/api/v1/nba/seasons
Parameters
limitqueryintegeroptionaldefault 25
Page size. Defaults to 25; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/seasons?limit=3'
Responses
200seasons rows matching the declared filter set, wrapped in { seasons, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(6 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
end_date
timestamptznullable——
e.g. 2017-06-12T04:00:00.000Z
post_season_start_date
timestamptznullable——
e.g. 2017-04-15T04:00:00.000Z
regular_season_start_date
timestamptznullable——
e.g. 2016-10-25T04:00:00.000Z
start_date
timestamptz——
e.g. 2016-10-25T04:00:00.000Z
start_year
integer——
e.g. 2016
GET/api/v1/nba/seasons/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/seasons/{pk_value}'
Responses
200Single season row.application/jsonshow example ▸
404Row not found.
Response Schema(6 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
end_date
timestamptznullable——
e.g. 2017-06-12T04:00:00.000Z
post_season_start_date
timestamptznullable——
e.g. 2017-04-15T04:00:00.000Z
regular_season_start_date
timestamptznullable——
e.g. 2016-10-25T04:00:00.000Z
start_date
timestamptz——
e.g. 2016-10-25T04:00:00.000Z
start_year
integer——
e.g. 2016
teamsnba.teams
The 30 NBA franchises, organized into the Eastern and Western Conferences with three divisions in each.
GET/api/v1/nba/teams
Parameters
activequerybooleanoptional
Filter by active status (defaults to true to show only currently-active rows; pass active=false to include inactive).
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/teams?limit=3'
Responses
200teams rows matching the declared filter set, wrapped in { teams, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(10 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
league_team_id
integernullable—Official NBA team ID from stats.nba.com
e.g. 1610612738
stadium_id
bigintnullable—
e.g. — (all-null in sample)
abbreviation
string——
e.g. BOS
active
boolean——
e.g. true
city
string——
e.g. Los Angeles
conference
string——
Values:EasternWestern
division
string——
Values:AtlanticCentralSoutheastNorthwestPacificSouthwest
full_name
string——
e.g. Boston Celtics
name
string——
e.g. Celtics
GET/api/v1/nba/teams/{id}
Parameters
idpathbigintrequired
Primary key (id) of the team row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/teams/{pk_value}'
Responses
200Single team row.application/jsonshow example ▸
404Row not found.
Response Schema(10 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
league_team_id
integernullable—Official NBA team ID from stats.nba.com
e.g. 1610612738
stadium_id
bigintnullable—
e.g. — (all-null in sample)
abbreviation
string——
e.g. BOS
active
boolean——
e.g. true
city
string——
e.g. Los Angeles
conference
string——
Values:EasternWestern
division
string——
Values:AtlanticCentralSoutheastNorthwestPacificSouthwest
full_name
string——
e.g. Boston Celtics
name
string——
e.g. Celtics
gamesnba.games
Every scheduled and played NBA game from the 2020-21 season onward — preseason, the 82-game regular season, the In-Season Tournament, the play-in round, and the four-round playoffs through the NBA Finals. All-Star exhibitions are not included.
GET/api/v1/nba/games
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
season_idquerybigintoptional
Filter to a season. Defaults to the current season.
home_team_idquerybigintoptional
Filter by home team.
away_team_idquerybigintoptional
Filter by away team.
statusquerystringoptional
Filter by game status. Values: Cancelled, Final, Scheduled.
dayqueryintegeroptional
Filter by calendar day (YYYYMMDD integer, US Eastern) — e.g. day=20260609 for tonight's slate. Note season_id defaults to the current season; pass season_id explicitly when querying a past season's day. Range syntax: day__gte=, day__lte=, day__between=.
season_typequerystringoptional
Filter by season phase (regular_season, preseason, postseason, play_in, in_season_tournament, all_star). Values: all_star, in_season_tournament, play_in, postseason, preseason, regular_season.
limitqueryintegeroptionaldefault 100
Page size. Defaults to 100; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/games?season_id=2026'
Responses
200games rows matching the declared filter set, wrapped in { games, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(27 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
away_team_id
bigint—
e.g. 1
home_team_id
bigint—
e.g. 1
league_game_id
stringnullable—Official NBA game ID from stats.nba.com
e.g. 0022500650
season_id
bigint—
e.g. 2023
stadium_id
integernullable—
e.g. 19
attendance
integernullable——
e.g. 19156
away_rotation_number
integernullable——
e.g. — (all-null in sample)
away_team
string——
e.g. BOS
away_team_score
integer——
e.g. 113
channel
stringnullable——
e.g. NBA TV
day
integer——
e.g. 20250413
end_time
timestamptznullable——
e.g. 2025-03-20T04:11:00.000Z
game_label
stringnullable——
e.g. — (all-null in sample)
game_sub_label
stringnullable——
e.g. — (all-null in sample)
game_time
timestamptznullable—Scheduled tip-off (timezone-aware); null when the league published no time.
e.g. 2025-04-13T19:30:00.000Z
home_rotation_number
integernullable——
e.g. — (all-null in sample)
home_team
string——
e.g. BOS
home_team_score
integer——
e.g. 112
if_necessary
booleannullable——
e.g. — (all-null in sample)
neutral_venue
boolean——
Values:falsetrue
postponed_status
stringnullable——
e.g. — (all-null in sample)
season_type
string——
Values:regular_seasonpostseasonpreseasonplay_inin_season_tournament
series_game_number
stringnullable——
e.g. — (all-null in sample)
series_name
stringnullable——
e.g. — (all-null in sample)
series_text
stringnullable——
e.g. — (all-null in sample)
status
string——
e.g. Final
GET/api/v1/nba/games/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/games/{pk_value}'
Responses
200Single game row.application/jsonshow example ▸
404Row not found.
Response Schema(27 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
away_team_id
bigint—
e.g. 1
home_team_id
bigint—
e.g. 1
league_game_id
stringnullable—Official NBA game ID from stats.nba.com
e.g. 0022500650
season_id
bigint—
e.g. 2023
stadium_id
integernullable—
e.g. 19
attendance
integernullable——
e.g. 19156
away_rotation_number
integernullable——
e.g. — (all-null in sample)
away_team
string——
e.g. BOS
away_team_score
integer——
e.g. 113
channel
stringnullable——
e.g. NBA TV
day
integer——
e.g. 20250413
end_time
timestamptznullable——
e.g. 2025-03-20T04:11:00.000Z
game_label
stringnullable——
e.g. — (all-null in sample)
game_sub_label
stringnullable——
e.g. — (all-null in sample)
game_time
timestamptznullable—Scheduled tip-off (timezone-aware); null when the league published no time.
e.g. 2025-04-13T19:30:00.000Z
home_rotation_number
integernullable——
e.g. — (all-null in sample)
home_team
string——
e.g. BOS
home_team_score
integer——
e.g. 112
if_necessary
booleannullable——
e.g. — (all-null in sample)
neutral_venue
boolean——
Values:falsetrue
postponed_status
stringnullable——
e.g. — (all-null in sample)
season_type
string——
Values:regular_seasonpostseasonpreseasonplay_inin_season_tournament
series_game_number
stringnullable——
e.g. — (all-null in sample)
series_name
stringnullable——
e.g. — (all-null in sample)
series_text
stringnullable——
e.g. — (all-null in sample)
status
string——
e.g. Final
playersnba.players
Every individual who has played in the NBA — current rosters, two-way and 10-day contracts, G-League call-ups, free agents, and retired veterans. The roster signal lives in `roster_status` (the canonical cross-league vocabulary) and `team_id` (null for free agents and retired players). Pass `?team_id=` to scope to one franchise's current roster, or omit it to scan the full historical roster pool.
GET/api/v1/nba/players
Requires one of: roster_status — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter to players whose current team_id matches. Null team_id rows (free agents, retired) are excluded when this filter is applied.
roster_statusquerystringoptional
Filter by canonical roster status. Defaults to active (current roster); pass roster_status= explicitly for other tiers (injured_reserve, free_agent, retired, inactive). The "on a team now" set is {active, injured_reserve}. Values: active, injured_reserve, free_agent, retired, inactive.
limitqueryintegeroptionaldefault 100
Page size. Defaults to 100; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/players?roster_status=example'
Responses
200players rows matching the declared filter set, wrapped in { players, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(40 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
league_player_id
integer—Official NBA player ID from stats.nba.com. Stable across seasons; use for cross-API joins to nba_stats sources.
e.g. 203999
team_id
bigintnullableFK to nba.teams. Null for free agents and retired players.
e.g. 12
birth_city
stringnullable—City of birth.
e.g. Sombor
birth_country
stringnullable—Country of birth (ISO English name).
e.g. Serbia
birth_date
datenullable—Birth date in YYYY-MM-DD form.
e.g. 1995-02-19
birth_state
stringnullable—State / province of birth (US/Canadian players).
e.g.
display_fi_last
stringnullable—Display name in "F. Last" form.
e.g. N. Jokić
display_last_comma_first
stringnullable—Display name in "Last, First" form. Useful for sorted lists.
e.g. Jokić, Nikola
dleague_flag
stringnullable—Two-character bit-string from stats.nba.com: "00" no G-League history, "01" G-League experience, "11" currently G-League-affiliated (two-way / assignment).
e.g. 00
draft_number
stringnullable—Overall pick number within the draft (string). Empty for undrafted.
e.g. 41
draft_round
stringnullable—Draft round (string). Empty for undrafted players.
e.g. 2
draft_year
stringnullable—Year the player was drafted (string form). Empty for undrafted players.
e.g. 2014
experience
integernullable—Years of NBA experience as of the most recent season. Rookies = 0.
e.g. 10
first_name
string—Player's legal first name as registered with the league.
e.g. Nikola
from_year
stringnullable—Player's NBA debut year as a string (per stats.nba.com).
e.g. 2015
full_name
string—Convenience concatenation of first_name + last_name. Use this for display.
e.g. Nikola Jokić
full_position_list
stringnullable—Hyphenated full-word position list (e.g., "Guard-Forward", "Center-Forward").
Values:GuardForwardCenterGuard-ForwardForward-CenterCenter-ForwardForward-Guard
games_played_flag
stringnullable—String "Y"/"N" indicating whether the player has played at least one regular-season game.
Values:YN
height
integernullable—Height in inches.
e.g. 83
injury_body_part
stringnullable—Affected body part for the most recent injury (e.g., "Knee", "Ankle"). Null when injury_status is null.
Values:anklekneeillnesshiptoebackwristfootcalfhamstringpelvisabdomenheelrestachillesthumbhand
injury_detail
stringnullable—Free-text injury description from the source feed.
e.g.
injury_since
timestamptznullable—Timestamp of the injury status snapshot. Updated when player_news produces a new injury entry.
e.g. 2026-04-12T18:30:00Z
injury_status
stringnullable—Current injury status snapshot derived from player_news. Values: "OUT", "QUESTIONABLE"; null = no active injury designation (healthy).
Values:OUTQUESTIONABLE
jersey
stringnullable—Current jersey number as a string (some leagues allow leading zeros, e.g., "00").
e.g. 15
last_affiliation
stringnullable—Most recent pre-NBA affiliation (school, league, or team).
e.g. Mega Basket / Serbia
last_name
string—Player's legal last name.
e.g. Jokić
league_slug
stringnullable—NBA-issued URL slug (e.g., for stats.nba.com player page).
e.g. nikola-jokic
nba_flag
stringnullable—String "Y"/"N" indicating NBA experience. Almost always "Y" in this table.
e.g. Y
playercode
stringnullable—NBA-issued player code (lastname_firstname format).
e.g. jokic_nikola
position_category
stringnullable—Coarse positional grouping. One of Guard, Forward, Center, Utility.
Values:GuardForwardCenterUtility
primary_position
string—Primary position. One of G, F, C, G-F, F-C. (True PG/SG/SF/PF splits live in team_depth_charts.position.)
Values:GFCG-FF-CUnknown
roster_status
stringnullable—Canonical roster status, shared across leagues. NBA source granularity is coarse: "active" (on an NBA roster), "free_agent" (no team), "inactive" (not currently rostered); injured_reserve/retired appear where derivable. The "on a team now" set is {active, injured_reserve}.
Values:inactiveactivefree_agent
school
stringnullable—Last school attended before the NBA (college, prep, or international club).
e.g. Mega Basket
team_abbreviation
stringnullable—Current team's tri-letter code.
e.g. DEN
team_city
stringnullable—Current team's city name.
e.g. Denver
team_code
stringnullable—Current team's lowercase URL slug.
e.g. nuggets
team_name
stringnullable—Current team's mascot name (denormalized from teams.name for read convenience).
e.g. Nuggets
to_year
stringnullable—Player's most recent NBA season year. Equal to from_year for rookies.
e.g. 2025
weight
integernullable—Listed weight in pounds.
e.g. 284
GET/api/v1/nba/players/{id}
Parameters
idpathbigintrequired
Primary key (id) of the player row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/players/{pk_value}'
Responses
200Single player row.application/jsonshow example ▸
404Row not found.
Response Schema(40 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
league_player_id
integer—Official NBA player ID from stats.nba.com. Stable across seasons; use for cross-API joins to nba_stats sources.
e.g. 203999
team_id
bigintnullableFK to nba.teams. Null for free agents and retired players.
e.g. 12
birth_city
stringnullable—City of birth.
e.g. Sombor
birth_country
stringnullable—Country of birth (ISO English name).
e.g. Serbia
birth_date
datenullable—Birth date in YYYY-MM-DD form.
e.g. 1995-02-19
birth_state
stringnullable—State / province of birth (US/Canadian players).
e.g.
display_fi_last
stringnullable—Display name in "F. Last" form.
e.g. N. Jokić
display_last_comma_first
stringnullable—Display name in "Last, First" form. Useful for sorted lists.
e.g. Jokić, Nikola
dleague_flag
stringnullable—Two-character bit-string from stats.nba.com: "00" no G-League history, "01" G-League experience, "11" currently G-League-affiliated (two-way / assignment).
e.g. 00
draft_number
stringnullable—Overall pick number within the draft (string). Empty for undrafted.
e.g. 41
draft_round
stringnullable—Draft round (string). Empty for undrafted players.
e.g. 2
draft_year
stringnullable—Year the player was drafted (string form). Empty for undrafted players.
e.g. 2014
experience
integernullable—Years of NBA experience as of the most recent season. Rookies = 0.
e.g. 10
first_name
string—Player's legal first name as registered with the league.
e.g. Nikola
from_year
stringnullable—Player's NBA debut year as a string (per stats.nba.com).
e.g. 2015
full_name
string—Convenience concatenation of first_name + last_name. Use this for display.
e.g. Nikola Jokić
full_position_list
stringnullable—Hyphenated full-word position list (e.g., "Guard-Forward", "Center-Forward").
Values:GuardForwardCenterGuard-ForwardForward-CenterCenter-ForwardForward-Guard
games_played_flag
stringnullable—String "Y"/"N" indicating whether the player has played at least one regular-season game.
Values:YN
height
integernullable—Height in inches.
e.g. 83
injury_body_part
stringnullable—Affected body part for the most recent injury (e.g., "Knee", "Ankle"). Null when injury_status is null.
Values:anklekneeillnesshiptoebackwristfootcalfhamstringpelvisabdomenheelrestachillesthumbhand
injury_detail
stringnullable—Free-text injury description from the source feed.
e.g.
injury_since
timestamptznullable—Timestamp of the injury status snapshot. Updated when player_news produces a new injury entry.
e.g. 2026-04-12T18:30:00Z
injury_status
stringnullable—Current injury status snapshot derived from player_news. Values: "OUT", "QUESTIONABLE"; null = no active injury designation (healthy).
Values:OUTQUESTIONABLE
jersey
stringnullable—Current jersey number as a string (some leagues allow leading zeros, e.g., "00").
e.g. 15
last_affiliation
stringnullable—Most recent pre-NBA affiliation (school, league, or team).
e.g. Mega Basket / Serbia
last_name
string—Player's legal last name.
e.g. Jokić
league_slug
stringnullable—NBA-issued URL slug (e.g., for stats.nba.com player page).
e.g. nikola-jokic
nba_flag
stringnullable—String "Y"/"N" indicating NBA experience. Almost always "Y" in this table.
e.g. Y
playercode
stringnullable—NBA-issued player code (lastname_firstname format).
e.g. jokic_nikola
position_category
stringnullable—Coarse positional grouping. One of Guard, Forward, Center, Utility.
Values:GuardForwardCenterUtility
primary_position
string—Primary position. One of G, F, C, G-F, F-C. (True PG/SG/SF/PF splits live in team_depth_charts.position.)
Values:GFCG-FF-CUnknown
roster_status
stringnullable—Canonical roster status, shared across leagues. NBA source granularity is coarse: "active" (on an NBA roster), "free_agent" (no team), "inactive" (not currently rostered); injured_reserve/retired appear where derivable. The "on a team now" set is {active, injured_reserve}.
Values:inactiveactivefree_agent
school
stringnullable—Last school attended before the NBA (college, prep, or international club).
e.g. Mega Basket
team_abbreviation
stringnullable—Current team's tri-letter code.
e.g. DEN
team_city
stringnullable—Current team's city name.
e.g. Denver
team_code
stringnullable—Current team's lowercase URL slug.
e.g. nuggets
team_name
stringnullable—Current team's mascot name (denormalized from teams.name for read convenience).
e.g. Nuggets
to_year
stringnullable—Player's most recent NBA season year. Equal to from_year for rookies.
e.g. 2025
weight
integernullable—Listed weight in pounds.
e.g. 284

Plays

game_possessionsnba.game_possessions
Each offensive possession in an NBA game (regular season, play-in, IST, and playoffs — no preseason) — which team had the ball, how the possession started, how it ended (made shot, missed shot, turnover, foul), and how long it lasted.
GET/api/v1/nba/game_possessions
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
team_idquerybigintoptional
Filter by team in possession.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_possessions?game_id=1'
Responses
200game_possessions rows matching the declared filter set, wrapped in { game_possessions, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(29 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 2357
team_id
bigintnullable—
e.g. 19
ast
integer——
e.g. 0
away_score
integer——
e.g. 38
blk
integer——
e.g. 0
cum_away_poss
integer——
e.g. 13
cum_home_poss
integer——
e.g. 75
dreb
integer——
e.g. 0
end_clock
integernullable——
e.g. 0
end_nba_event_num
integer——
e.g. 7
fg3a
integer——
e.g. 0
fg3m
integer——
e.g. 0
fga
integer——
e.g. 1
fgm
integer——
e.g. 0
fta
integer——
e.g. 0
ftm
integer——
e.g. 0
game_seconds_elapsed
integer——
e.g. 720
home_score
integer——
e.g. 82
oreb
integer——
e.g. 0
period
integer——
e.g. 1
pf
integer——
e.g. 0
pts
integer——
e.g. 0
start_clock
integer——
e.g. 720
start_nba_event_num
integer——
e.g. 4
stl
integer——
e.g. 0
time_actual_end
timestamptznullable——
e.g. 2024-10-30T02:08:06.000Z
time_actual_start
timestamptznullable——
e.g. 2024-10-28T23:53:48.400Z
tov
integer——
e.g. 0
GET/api/v1/nba/game_possessions/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_possession row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_possessions/{pk_value}'
Responses
200Single game_possession row.application/jsonshow example ▸
404Row not found.
Response Schema(29 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 2357
team_id
bigintnullable—
e.g. 19
ast
integer——
e.g. 0
away_score
integer——
e.g. 38
blk
integer——
e.g. 0
cum_away_poss
integer——
e.g. 13
cum_home_poss
integer——
e.g. 75
dreb
integer——
e.g. 0
end_clock
integernullable——
e.g. 0
end_nba_event_num
integer——
e.g. 7
fg3a
integer——
e.g. 0
fg3m
integer——
e.g. 0
fga
integer——
e.g. 1
fgm
integer——
e.g. 0
fta
integer——
e.g. 0
ftm
integer——
e.g. 0
game_seconds_elapsed
integer——
e.g. 720
home_score
integer——
e.g. 82
oreb
integer——
e.g. 0
period
integer——
e.g. 1
pf
integer——
e.g. 0
pts
integer——
e.g. 0
start_clock
integer——
e.g. 720
start_nba_event_num
integer——
e.g. 4
stl
integer——
e.g. 0
time_actual_end
timestamptznullable——
e.g. 2024-10-30T02:08:06.000Z
time_actual_start
timestamptznullable——
e.g. 2024-10-28T23:53:48.400Z
tov
integer——
e.g. 0
play_by_playsnba.play_by_plays
Every individual event in every NBA game (regular season, play-in, IST, and playoffs — no preseason) — made and missed shots, rebounds, assists, fouls, turnovers, blocks, steals, substitutions, and timeouts, with the game clock at the moment. Period and score context live on game_possessions (FK game_possession_id).
GET/api/v1/nba/play_by_plays
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
player_idquerybigintoptional
Filter to plays involving a specific player.
team_idquerybigintoptional
Filter to plays by a specific team.
event_typequeryintegeroptional
Filter by event type code: 1 made shot, 2 missed shot, 3 free throw, 4 rebound, 5 turnover, 6 foul, 7 violation, 8 substitution, 9 timeout, 10 jump ball, 11 ejection, 12 period start, 13 period end, 18 instant replay (stats.nba.com codes).
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/play_by_plays?game_id=1'
Responses
200play_by_plays rows matching the declared filter set, wrapped in { play_by_plays, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(21 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 2377
game_possession_id
bigint—
e.g. 16457458
play_id
string——
e.g. 0052400111_2
player_id
bigintnullable—
e.g. 49
player2_id
bigintnullable—
e.g. 49
player2_team_id
bigintnullable—
e.g. 21
player3_id
bigintnullable—
e.g. 227
player3_team_id
bigintnullable—
e.g. 21
team_id
bigintnullable—
e.g. 21
end_clock
integernullable——
e.g. — (all-null in sample)
event_seq
integer——
e.g. 100
event_sub_type
integer——
e.g. 0
event_type
integer——
e.g. 8
home_description
string——
e.g.
nba_event_num
integer——
e.g. 2
neutral_description
string——
e.g.
possession_seq
integer——
e.g. 142
start_clock
integer——
e.g. 720
time_actual
timestamptznullable——
e.g. 2025-04-17T01:56:41.900Z
visitor_description
string——
e.g.
GET/api/v1/nba/play_by_plays/{id}
Parameters
idpathbigintrequired
Primary key (id) of the play_by_play row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/play_by_plays/{pk_value}'
Responses
200Single play_by_play row.application/jsonshow example ▸
404Row not found.
Response Schema(21 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 2377
game_possession_id
bigint—
e.g. 16457458
play_id
string——
e.g. 0052400111_2
player_id
bigintnullable—
e.g. 49
player2_id
bigintnullable—
e.g. 49
player2_team_id
bigintnullable—
e.g. 21
player3_id
bigintnullable—
e.g. 227
player3_team_id
bigintnullable—
e.g. 21
team_id
bigintnullable—
e.g. 21
end_clock
integernullable——
e.g. — (all-null in sample)
event_seq
integer——
e.g. 100
event_sub_type
integer——
e.g. 0
event_type
integer——
e.g. 8
home_description
string——
e.g.
nba_event_num
integer——
e.g. 2
neutral_description
string——
e.g.
possession_seq
integer——
e.g. 142
start_clock
integer——
e.g. 720
time_actual
timestamptznullable——
e.g. 2025-04-17T01:56:41.900Z
visitor_description
string——
e.g.

Stats

season_team_statsnba.season_team_stats
Season totals for each NBA team — wins and losses, points scored and allowed, pace, offensive and defensive ratings, rebounding margins, shooting splits, and turnover differentials. Regular-season games only; playoff, play-in, and preseason totals are not included.
GET/api/v1/nba/season_team_stats
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
season_idquerybigintoptional
Filter to a single season. Defaults to the current season.
team_idquerybigintoptional
Filter by team.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/season_team_stats?season_id=2026'
Responses
200season_team_stats rows matching the declared filter set, wrapped in { season_team_stats, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(9 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
season_id
bigint—
e.g. 2024
team_id
bigint—
e.g. 11
games_played
integer——
e.g. 82
losses
integer——
e.g. 38
pts_allowed
integer——
e.g. 0
pts_scored
integer——
e.g. 9372
ties
integer——
e.g. 0
wins
integer——
e.g. 44
GET/api/v1/nba/season_team_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season_team_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/season_team_stats/{pk_value}'
Responses
200Single season_team_stat row.application/jsonshow example ▸
404Row not found.
Response Schema(9 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
season_id
bigint—
e.g. 2024
team_id
bigint—
e.g. 11
games_played
integer——
e.g. 82
losses
integer——
e.g. 38
pts_allowed
integer——
e.g. 0
pts_scored
integer——
e.g. 9372
ties
integer——
e.g. 0
wins
integer——
e.g. 44
team_standingsnba.team_standings
Conference and division standings throughout the NBA season — wins, losses, win percentage, games behind, last-10 record, win/loss streak, and home/away splits as of each date.
GET/api/v1/nba/team_standings
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
season_idquerybigintoptional
Filter to a single season. Defaults to the current season.
team_idquerybigintoptional
Filter by team.
dayqueryintegeroptional
Standings as of this day (YYYYMMDD integer). Omit for all daily snapshots, newest first; pass a day for a point-in-time table. Range syntax: day__gte=, day__lte=, day__between=.
limitqueryintegeroptionaldefault 100
Page size. Defaults to 100; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/team_standings?season_id=2026'
Responses
200team_standings rows matching the declared filter set, wrapped in { team_standings, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(21 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
season_id
bigint—
e.g. 2024
team_id
bigint—
e.g. 1
away_losses
integer——
e.g. 6
away_wins
integer——
e.g. 1
conference_gb
decimal—Games back from conference leader
e.g. 0.0000
conference_rank
integer—1-15 within conference
e.g. 8
day
integer—YYYYMMDD — standings as of this date (before games on this day)
e.g. 20241103
division_rank
integer—1-5 within division
e.g. 1
games_played
integer——
e.g. 1
games_remaining
integer——
e.g. 81
home_losses
integer——
e.g. 4
home_wins
integer——
e.g. 1
l10_losses
integer——
e.g. 4
l10_wins
integer——
e.g. 6
losses
integer——
e.g. 1
playin_gb
decimal—Games back from 10th seed (play-in cutoff)
e.g. 0.0000
playoff_gb
decimal—Games back from 6th seed (auto-qualify cutoff)
e.g. 0.0000
streak
integer—Positive = win streak, negative = loss streak
e.g. -1
win_pct
decimal——
e.g. 0.5000
wins
integer——
e.g. 2
GET/api/v1/nba/team_standings/{id}
Parameters
idpathbigintrequired
Primary key (id) of the team_standing row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/team_standings/{pk_value}'
Responses
200Single team_standing row.application/jsonshow example ▸
404Row not found.
Response Schema(21 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
season_id
bigint—
e.g. 2024
team_id
bigint—
e.g. 1
away_losses
integer——
e.g. 6
away_wins
integer——
e.g. 1
conference_gb
decimal—Games back from conference leader
e.g. 0.0000
conference_rank
integer—1-15 within conference
e.g. 8
day
integer—YYYYMMDD — standings as of this date (before games on this day)
e.g. 20241103
division_rank
integer—1-5 within division
e.g. 1
games_played
integer——
e.g. 1
games_remaining
integer——
e.g. 81
home_losses
integer——
e.g. 4
home_wins
integer——
e.g. 1
l10_losses
integer——
e.g. 4
l10_wins
integer——
e.g. 6
losses
integer——
e.g. 1
playin_gb
decimal—Games back from 10th seed (play-in cutoff)
e.g. 0.0000
playoff_gb
decimal—Games back from 6th seed (auto-qualify cutoff)
e.g. 0.0000
streak
integer—Positive = win streak, negative = loss streak
e.g. -1
win_pct
decimal——
e.g. 0.5000
wins
integer——
e.g. 2
game_player_statsnba.game_player_stats
Each NBA player's stat line for each game — points, rebounds, assists, steals, blocks, shooting line, three-point line, free-throw line, plus-minus, and minutes played.
GET/api/v1/nba/game_player_stats
Requires one of: game_id or player_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
player_idquerybigintoptional
Filter to a single player — their full game log, newest first. Combine with game_date ranges to window it.
team_idquerybigintoptional
Filter by team.
game_datequeryintegeroptional
Filter by game day (YYYYMMDD integer, US Eastern). Range syntax: game_date__gte=, game_date__lte=, game_date__between=.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_player_stats?game_id=1'
Responses
200game_player_stats rows matching the declared filter set, wrapped in { game_player_stats, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(113 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 122
player_id
bigint—
e.g. 75
team_id
bigint—
e.g. 17
abnormal_exit_clock
integer——
e.g. 0
abnormal_exit_period
integer——
e.g. 0
alley_oops
integer——
e.g. 0
and_ones
integer——
e.g. 0
assist_percentage
decimalnullable——
e.g. 0.0000
assist_ratio
decimalnullable——
e.g. 0.0000
assist_to_turnover
decimalnullable——
e.g. 0.0000
assists
integer——
e.g. 0
avg_dribbles_per_touch
decimalnullable——
e.g. 0.0000
avg_seconds_per_touch
decimalnullable——
e.g. 0.0000
backcourt_violations
integer——
e.g. 0
balls_stolen
integernullable——
e.g. 0
basket_interference_violations
integer——
e.g. 0
blocks
integer——
e.g. 0
box_outs
integernullable——
e.g. 0
carrying_palming_violations
integer——
e.g. 0
challenges_requested
integer——
e.g. 0
charges_taken
integernullable——
e.g. 0
comment
stringnullable——
e.g. — (all-null in sample)
competitive_minutes
decimal——
e.g. 0.0
contests
integernullable——
e.g. 1
defensive_rating
decimalnullable——
e.g. 100.0000
defensive_rebound_percentage
decimalnullable——
e.g. 0.0000
defensive_rebounds
integer——
e.g. 1
deflections
integernullable——
e.g. 1
double_doubles
integer——
e.g. 0
double_dribble_violations
integer——
e.g. 0
drives
integernullable——
e.g. 0
dunks
integer——
e.g. 0
effective_field_goal_percentage
decimalnullable——
e.g. 0.0000
ejections
integer——
e.g. 0
elbow_touches
integernullable——
e.g. 0
estimated_defensive_rating
decimalnullable——
e.g. 100.0000
estimated_net_rating
decimalnullable——
e.g. 0.0000
estimated_offensive_rating
decimalnullable——
e.g. 100.0000
estimated_pace
decimalnullable——
e.g. 84.7100
estimated_usage_percentage
decimalnullable——
e.g. 0.1670
fast_break_pts
integer——
e.g. 0
field_goal_percentage
decimalnullable——
e.g. 0.0000
field_goals_attempted
integer——
e.g. 5
field_goals_made
integer——
e.g. 1
foul_trouble_severity
integer——
e.g. 0
fouls
integer—Total fouls: personal_fouls + technical_fouls. Use personal_fouls, not this, to judge foul trouble — a player fouls out on 6 PERSONAL fouls and technicals do not count toward that.
e.g. 1
fouls_drawn
integer——
e.g. 0
free_throw_percentage
decimalnullable——
e.g. 0.0000
free_throws_attempted
integer——
e.g. 0
free_throws_made
integer——
e.g. 0
front_court_touches
integernullable——
e.g. 14
game_date
integer——
e.g. 20251112
garbage_time_minutes
decimal——
e.g. 0
goaltending_violations
integer——
e.g. 0
hockey_assists
integernullable——
e.g. 0
jump_balls_lost
integer——
e.g. 0
jump_balls_won
integer——
e.g. 0
lane_violations
integer——
e.g. 0
layups
integer——
e.g. 0
loose_balls_recovered
integernullable——
e.g. 0
minutes
decimal——
e.g. 31.7000
minutes_deviation_pct
decimal——
e.g. 0
net_rating
decimalnullable——
e.g. 0.0000
offensive_fouls
integer—Offensive fouls. A SUBSET of personal_fouls, not an addition to it.
e.g. 0
offensive_rating
decimalnullable——
e.g. 100.0000
offensive_rebound_percentage
decimalnullable——
e.g. 0.0000
offensive_rebounds
integer——
e.g. 0
paint_touches
integernullable——
e.g. 0
pass_percentage
decimalnullable——
e.g. 0.0000
passes
integernullable——
e.g. 18
passes_deflected
integernullable——
e.g. 0
personal_fouls
integer—Personal fouls only — the count a player fouls out on at 6. Includes offensive and flagrant fouls, which the NBA scores as personal fouls.
e.g. 1
player_impact_estimate
decimal——
e.g. 0.0000
plus_minus
integer——
e.g. 0
possessions
integer——
e.g. 53
post_touches
integernullable——
e.g. 0
potential_assists
integernullable——
e.g. 0
pts
integer——
e.g. 0
pts_per_elbow_touch
decimalnullable——
e.g. — (all-null in sample)
pts_per_paint_touch
decimalnullable——
e.g. — (all-null in sample)
pts_per_post_touch
decimalnullable——
e.g. — (all-null in sample)
pts_per_touch
decimalnullable——
e.g. 0.0000
put_backs
integer——
e.g. 0
rebound_percentage
decimalnullable——
e.g. 0.0000
rebounds
integer——
e.g. 2
role_anomalous_game
boolean——
Values:falsetrue
role_archetype
stringnullable——
Values:deep_benchco_starcore_starterrotationend_of_benchalphasixth_mantwo_way
role_archetype_confidence
decimal——
e.g. 0.6
rotation_context
stringnullable——
Values:normalgarbage_time_boostambiguous_anomalyblowout_restfoul_troublefoul_outinjury_exitdnp_coach
rotation_context_confidence
decimal——
e.g. 0.5
screen_assists
integernullable——
e.g. 0
second_chance_pts
integer——
e.g. 0
shot_clock_violations
integer——
e.g. 0
shot_contested_count
integernullable——
e.g. 1
shots_blocked
integernullable——
e.g. 0
start_position
stringnullable——
Values:GFC
steals
integer——
e.g. 0
substitutions_in
integer——
e.g. 0
substitutions_out
integer——
e.g. 0
technical_fouls
integer—Technical fouls. The one foul type the NBA keeps OUT of the personal count; 2 means ejection.
e.g. 0
three_point_percentage
decimalnullable——
e.g. 0.0000
three_pointers_attempted
integer——
e.g. 0
three_pointers_made
integer——
e.g. 0
time_of_possession
decimalnullable——
e.g. 0.2000
timeouts_called
integer——
e.g. 0
touches
integernullable——
e.g. 28
traveling_violations
integer——
e.g. 0
triple_doubles
integer——
e.g. 0
true_shooting_percentage
decimalnullable——
e.g. 0.0000
turnover_ratio
decimalnullable——
e.g. 0.0000
turnovers
integer——
e.g. 0
usage_percentage
decimalnullable——
e.g. 0.0000
GET/api/v1/nba/game_player_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_player_stats/{pk_value}'
Responses
200Single game_player_stat row.application/jsonshow example ▸
404Row not found.
Response Schema(113 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 122
player_id
bigint—
e.g. 75
team_id
bigint—
e.g. 17
abnormal_exit_clock
integer——
e.g. 0
abnormal_exit_period
integer——
e.g. 0
alley_oops
integer——
e.g. 0
and_ones
integer——
e.g. 0
assist_percentage
decimalnullable——
e.g. 0.0000
assist_ratio
decimalnullable——
e.g. 0.0000
assist_to_turnover
decimalnullable——
e.g. 0.0000
assists
integer——
e.g. 0
avg_dribbles_per_touch
decimalnullable——
e.g. 0.0000
avg_seconds_per_touch
decimalnullable——
e.g. 0.0000
backcourt_violations
integer——
e.g. 0
balls_stolen
integernullable——
e.g. 0
basket_interference_violations
integer——
e.g. 0
blocks
integer——
e.g. 0
box_outs
integernullable——
e.g. 0
carrying_palming_violations
integer——
e.g. 0
challenges_requested
integer——
e.g. 0
charges_taken
integernullable——
e.g. 0
comment
stringnullable——
e.g. — (all-null in sample)
competitive_minutes
decimal——
e.g. 0.0
contests
integernullable——
e.g. 1
defensive_rating
decimalnullable——
e.g. 100.0000
defensive_rebound_percentage
decimalnullable——
e.g. 0.0000
defensive_rebounds
integer——
e.g. 1
deflections
integernullable——
e.g. 1
double_doubles
integer——
e.g. 0
double_dribble_violations
integer——
e.g. 0
drives
integernullable——
e.g. 0
dunks
integer——
e.g. 0
effective_field_goal_percentage
decimalnullable——
e.g. 0.0000
ejections
integer——
e.g. 0
elbow_touches
integernullable——
e.g. 0
estimated_defensive_rating
decimalnullable——
e.g. 100.0000
estimated_net_rating
decimalnullable——
e.g. 0.0000
estimated_offensive_rating
decimalnullable——
e.g. 100.0000
estimated_pace
decimalnullable——
e.g. 84.7100
estimated_usage_percentage
decimalnullable——
e.g. 0.1670
fast_break_pts
integer——
e.g. 0
field_goal_percentage
decimalnullable——
e.g. 0.0000
field_goals_attempted
integer——
e.g. 5
field_goals_made
integer——
e.g. 1
foul_trouble_severity
integer——
e.g. 0
fouls
integer—Total fouls: personal_fouls + technical_fouls. Use personal_fouls, not this, to judge foul trouble — a player fouls out on 6 PERSONAL fouls and technicals do not count toward that.
e.g. 1
fouls_drawn
integer——
e.g. 0
free_throw_percentage
decimalnullable——
e.g. 0.0000
free_throws_attempted
integer——
e.g. 0
free_throws_made
integer——
e.g. 0
front_court_touches
integernullable——
e.g. 14
game_date
integer——
e.g. 20251112
garbage_time_minutes
decimal——
e.g. 0
goaltending_violations
integer——
e.g. 0
hockey_assists
integernullable——
e.g. 0
jump_balls_lost
integer——
e.g. 0
jump_balls_won
integer——
e.g. 0
lane_violations
integer——
e.g. 0
layups
integer——
e.g. 0
loose_balls_recovered
integernullable——
e.g. 0
minutes
decimal——
e.g. 31.7000
minutes_deviation_pct
decimal——
e.g. 0
net_rating
decimalnullable——
e.g. 0.0000
offensive_fouls
integer—Offensive fouls. A SUBSET of personal_fouls, not an addition to it.
e.g. 0
offensive_rating
decimalnullable——
e.g. 100.0000
offensive_rebound_percentage
decimalnullable——
e.g. 0.0000
offensive_rebounds
integer——
e.g. 0
paint_touches
integernullable——
e.g. 0
pass_percentage
decimalnullable——
e.g. 0.0000
passes
integernullable——
e.g. 18
passes_deflected
integernullable——
e.g. 0
personal_fouls
integer—Personal fouls only — the count a player fouls out on at 6. Includes offensive and flagrant fouls, which the NBA scores as personal fouls.
e.g. 1
player_impact_estimate
decimal——
e.g. 0.0000
plus_minus
integer——
e.g. 0
possessions
integer——
e.g. 53
post_touches
integernullable——
e.g. 0
potential_assists
integernullable——
e.g. 0
pts
integer——
e.g. 0
pts_per_elbow_touch
decimalnullable——
e.g. — (all-null in sample)
pts_per_paint_touch
decimalnullable——
e.g. — (all-null in sample)
pts_per_post_touch
decimalnullable——
e.g. — (all-null in sample)
pts_per_touch
decimalnullable——
e.g. 0.0000
put_backs
integer——
e.g. 0
rebound_percentage
decimalnullable——
e.g. 0.0000
rebounds
integer——
e.g. 2
role_anomalous_game
boolean——
Values:falsetrue
role_archetype
stringnullable——
Values:deep_benchco_starcore_starterrotationend_of_benchalphasixth_mantwo_way
role_archetype_confidence
decimal——
e.g. 0.6
rotation_context
stringnullable——
Values:normalgarbage_time_boostambiguous_anomalyblowout_restfoul_troublefoul_outinjury_exitdnp_coach
rotation_context_confidence
decimal——
e.g. 0.5
screen_assists
integernullable——
e.g. 0
second_chance_pts
integer——
e.g. 0
shot_clock_violations
integer——
e.g. 0
shot_contested_count
integernullable——
e.g. 1
shots_blocked
integernullable——
e.g. 0
start_position
stringnullable——
Values:GFC
steals
integer——
e.g. 0
substitutions_in
integer——
e.g. 0
substitutions_out
integer——
e.g. 0
technical_fouls
integer—Technical fouls. The one foul type the NBA keeps OUT of the personal count; 2 means ejection.
e.g. 0
three_point_percentage
decimalnullable——
e.g. 0.0000
three_pointers_attempted
integer——
e.g. 0
three_pointers_made
integer——
e.g. 0
time_of_possession
decimalnullable——
e.g. 0.2000
timeouts_called
integer——
e.g. 0
touches
integernullable——
e.g. 28
traveling_violations
integer——
e.g. 0
triple_doubles
integer——
e.g. 0
true_shooting_percentage
decimalnullable——
e.g. 0.0000
turnover_ratio
decimalnullable——
e.g. 0.0000
turnovers
integer——
e.g. 0
usage_percentage
decimalnullable——
e.g. 0.0000
game_team_statsnba.game_team_stats
Each NBA team's stat line for each game — the same offensive, defensive, rebounding, and shooting counters as the season aggregate, broken out per game with home/away context.
GET/api/v1/nba/game_team_stats
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
team_idquerybigintoptional
Filter by team.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_team_stats?game_id=1'
Responses
200game_team_stats rows matching the declared filter set, wrapped in { game_team_stats, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(70 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 6
team_id
bigint—
e.g. 12
assist_percentage
decimal——
e.g. 0.6670
assist_ratio
decimal——
e.g. 0.0000
assists
integer——
e.g. 24
assists_to_turnovers
decimal——
e.g. 2.0000
bench_pts
integer——
e.g. 34
blocks
integer——
e.g. 4
conference_rank
integer—Conference rank entering game
e.g. 0
defensive_rating
decimal——
e.g. 100.0000
defensive_rebound_percentage
decimal——
e.g. 0.6670
defensive_rebounds
integer——
e.g. 32
effective_field_goal_percentage
decimal——
e.g. 0.5000
estimated_defensive_rating
decimal——
e.g. 0.0000
estimated_net_rating
decimal——
e.g. 0.0000
estimated_offensive_rating
decimal——
e.g. 0.0000
estimated_pace
decimal——
e.g. 0.0000
fast_break_pts
integer——
e.g. 11
field_goal_percentage
decimal——
e.g. 0.5000
field_goals_attempted
integer——
e.g. 88
field_goals_made
integer——
e.g. 42
fouls
integer——
e.g. 19
free_throw_attempt_rate
decimal——
e.g. 0.2500
free_throw_percentage
decimal——
e.g. 0.7500
free_throws_attempted
integer——
e.g. 21
free_throws_made
integer——
e.g. 17
loss
integer——
e.g. 0
losses
integer—Cumulative losses
e.g. 0
minutes
integer——
e.g. 48
net_rating
decimal——
e.g. 2.0000
offensive_rating
decimal——
e.g. 100.0000
offensive_rebound_percentage
decimal——
e.g. 0.3330
offensive_rebounds
integer——
e.g. 10
pace
decimal——
e.g. 101.0000
pace_per40
decimal——
e.g. 0.0000
pct_ast_2pm
decimal——
e.g. 0.5000
pct_ast_3pm
decimal——
e.g. 1.0000
pct_ast_fgm
decimal——
e.g. 0.6670
pct_fga_2pt
decimal——
e.g. 0.0000
pct_fga_3pt
decimal——
e.g. 0.0000
pct_pts_2pt
decimal——
e.g. 0.5000
pct_pts_2pt_mr
decimal——
e.g. 0.0000
pct_pts_3pt
decimal——
e.g. 0.0000
pct_pts_fb
decimal——
e.g. 0.0000
pct_pts_ft
decimal——
e.g. 0.0000
pct_pts_off_tov
decimal——
e.g. 0.0000
pct_pts_paint
decimal——
e.g. 0.0000
pct_uast_2pm
decimal——
e.g. 0.5000
pct_uast_3pm
decimal——
e.g. 0.0000
pct_uast_fgm
decimal——
e.g. 0.3330
player_impact_estimate
decimal——
e.g. 0.0000
possessions
integer——
e.g. 101
pts
integer——
e.g. 113
pts_in_paint
integer——
e.g. 50
pts_off_turnovers
integer——
e.g. 17
rebound_percentage
decimal——
e.g. 0.5000
rebounds
integer——
e.g. 42
second_chance_pts
integer——
e.g. 14
steals
integer——
e.g. 7
steals_to_turnovers
decimal——
e.g. 0.5000
three_point_percentage
decimal——
e.g. 0.3330
three_pointers_attempted
integer——
e.g. 34
three_pointers_made
integer——
e.g. 12
timeouts_remaining
integer——
e.g. 0
true_shooting_percentage
decimal——
e.g. 0.5760
turnover_percentage
decimal——
e.g. 0.0000
turnovers
integer——
e.g. 13
win
integer——
e.g. 0
wins
integer—Cumulative wins
e.g. 0
GET/api/v1/nba/game_team_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_team_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_team_stats/{pk_value}'
Responses
200Single game_team_stat row.application/jsonshow example ▸
404Row not found.
Response Schema(70 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 6
team_id
bigint—
e.g. 12
assist_percentage
decimal——
e.g. 0.6670
assist_ratio
decimal——
e.g. 0.0000
assists
integer——
e.g. 24
assists_to_turnovers
decimal——
e.g. 2.0000
bench_pts
integer——
e.g. 34
blocks
integer——
e.g. 4
conference_rank
integer—Conference rank entering game
e.g. 0
defensive_rating
decimal——
e.g. 100.0000
defensive_rebound_percentage
decimal——
e.g. 0.6670
defensive_rebounds
integer——
e.g. 32
effective_field_goal_percentage
decimal——
e.g. 0.5000
estimated_defensive_rating
decimal——
e.g. 0.0000
estimated_net_rating
decimal——
e.g. 0.0000
estimated_offensive_rating
decimal——
e.g. 0.0000
estimated_pace
decimal——
e.g. 0.0000
fast_break_pts
integer——
e.g. 11
field_goal_percentage
decimal——
e.g. 0.5000
field_goals_attempted
integer——
e.g. 88
field_goals_made
integer——
e.g. 42
fouls
integer——
e.g. 19
free_throw_attempt_rate
decimal——
e.g. 0.2500
free_throw_percentage
decimal——
e.g. 0.7500
free_throws_attempted
integer——
e.g. 21
free_throws_made
integer——
e.g. 17
loss
integer——
e.g. 0
losses
integer—Cumulative losses
e.g. 0
minutes
integer——
e.g. 48
net_rating
decimal——
e.g. 2.0000
offensive_rating
decimal——
e.g. 100.0000
offensive_rebound_percentage
decimal——
e.g. 0.3330
offensive_rebounds
integer——
e.g. 10
pace
decimal——
e.g. 101.0000
pace_per40
decimal——
e.g. 0.0000
pct_ast_2pm
decimal——
e.g. 0.5000
pct_ast_3pm
decimal——
e.g. 1.0000
pct_ast_fgm
decimal——
e.g. 0.6670
pct_fga_2pt
decimal——
e.g. 0.0000
pct_fga_3pt
decimal——
e.g. 0.0000
pct_pts_2pt
decimal——
e.g. 0.5000
pct_pts_2pt_mr
decimal——
e.g. 0.0000
pct_pts_3pt
decimal——
e.g. 0.0000
pct_pts_fb
decimal——
e.g. 0.0000
pct_pts_ft
decimal——
e.g. 0.0000
pct_pts_off_tov
decimal——
e.g. 0.0000
pct_pts_paint
decimal——
e.g. 0.0000
pct_uast_2pm
decimal——
e.g. 0.5000
pct_uast_3pm
decimal——
e.g. 0.0000
pct_uast_fgm
decimal——
e.g. 0.3330
player_impact_estimate
decimal——
e.g. 0.0000
possessions
integer——
e.g. 101
pts
integer——
e.g. 113
pts_in_paint
integer——
e.g. 50
pts_off_turnovers
integer——
e.g. 17
rebound_percentage
decimal——
e.g. 0.5000
rebounds
integer——
e.g. 42
second_chance_pts
integer——
e.g. 14
steals
integer——
e.g. 7
steals_to_turnovers
decimal——
e.g. 0.5000
three_point_percentage
decimal——
e.g. 0.3330
three_pointers_attempted
integer——
e.g. 34
three_pointers_made
integer——
e.g. 12
timeouts_remaining
integer——
e.g. 0
true_shooting_percentage
decimal——
e.g. 0.5760
turnover_percentage
decimal——
e.g. 0.0000
turnovers
integer——
e.g. 13
win
integer——
e.g. 0
wins
integer—Cumulative wins
e.g. 0
season_player_statsnba.season_player_stats
Season totals for each NBA player — scoring, rebounding, assists, steals, blocks, shooting splits, advanced metrics, plus-minus, and minutes played. Regular-season games only; playoff, play-in, and preseason totals are not included. Players traded mid-season have one merged row (no per-team split).
GET/api/v1/nba/season_player_stats
Requires one of: season_id or player_id — requests satisfying none of these return 400.
Parameters
season_idquerybigintoptional
Filter to a single season. Defaults to the current season.
player_idquerybigintoptional
Filter to a single player.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/season_player_stats?season_id=2026'
Responses
200season_player_stats rows matching the declared filter set, wrapped in { season_player_stats, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(49 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 1
season_id
bigint—
e.g. 2021
assist_percentage
decimal——
e.g. 0.0000
assist_ratio
decimal——
e.g. 0.0000
assist_to_turnover
decimal——
e.g. 0.0000
assists
integer——
e.g. 0
avg_dribbles_per_touch
decimal——
e.g. 1.0000
avg_seconds_per_touch
decimal——
e.g. 1.6400
blocks
integer——
e.g. 0
defensive_rating
decimal——
e.g. 111.1000
defensive_rebound_percentage
decimal——
e.g. 0.0000
defensive_rebounds
integer——
e.g. 0
double_doubles
integer——
e.g. 0
effective_field_goal_percentage
decimal——
e.g. 0.5000
field_goal_percentage
decimal——
e.g. 0.5000
field_goals_attempted
integer——
e.g. 6
field_goals_made
integer——
e.g. 0
fouls
integer——
e.g. 0
free_throw_percentage
decimal——
e.g. 0.0000
free_throws_attempted
integer——
e.g. 0
free_throws_made
integer——
e.g. 0
front_court_touches
integer——
e.g. 24
games_played
integer——
e.g. 68
losses
integer——
e.g. 1
minutes
decimal——
e.g. 1297.0367
net_rating
decimal——
e.g. 0.3000
offensive_rating
decimal——
e.g. 113.9000
offensive_rebound_percentage
decimal——
e.g. 0.0000
offensive_rebounds
integer——
e.g. 0
pace
decimal——
e.g. 100.6900
player_impact_estimate
decimal——
e.g. 0.0730
plus_minus
integer——
e.g. -7
possessions
integer——
e.g. 41
pts
integer——
e.g. 0
rebound_percentage
decimal——
e.g. 0.0620
rebounds
integer——
e.g. 0
steals
integer——
e.g. 0
three_point_percentage
decimal——
e.g. 0.0000
three_pointers_attempted
integer——
e.g. 0
three_pointers_made
integer——
e.g. 0
time_of_possession
decimal——
e.g. 0.8000
touches
integer——
e.g. 160
triple_doubles
integer——
e.g. 0
true_shooting_percentage
decimal——
e.g. 0.0000
turnover_percentage
decimal——
e.g. 0.0000
turnovers
integer——
e.g. 0
usage_percentage
decimal——
e.g. 0.1360
wins
integer——
e.g. 1
GET/api/v1/nba/season_player_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season_player_stat row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/season_player_stats/{pk_value}'
Responses
200Single season_player_stat row.application/jsonshow example ▸
404Row not found.
Response Schema(49 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 1
season_id
bigint—
e.g. 2021
assist_percentage
decimal——
e.g. 0.0000
assist_ratio
decimal——
e.g. 0.0000
assist_to_turnover
decimal——
e.g. 0.0000
assists
integer——
e.g. 0
avg_dribbles_per_touch
decimal——
e.g. 1.0000
avg_seconds_per_touch
decimal——
e.g. 1.6400
blocks
integer——
e.g. 0
defensive_rating
decimal——
e.g. 111.1000
defensive_rebound_percentage
decimal——
e.g. 0.0000
defensive_rebounds
integer——
e.g. 0
double_doubles
integer——
e.g. 0
effective_field_goal_percentage
decimal——
e.g. 0.5000
field_goal_percentage
decimal——
e.g. 0.5000
field_goals_attempted
integer——
e.g. 6
field_goals_made
integer——
e.g. 0
fouls
integer——
e.g. 0
free_throw_percentage
decimal——
e.g. 0.0000
free_throws_attempted
integer——
e.g. 0
free_throws_made
integer——
e.g. 0
front_court_touches
integer——
e.g. 24
games_played
integer——
e.g. 68
losses
integer——
e.g. 1
minutes
decimal——
e.g. 1297.0367
net_rating
decimal——
e.g. 0.3000
offensive_rating
decimal——
e.g. 113.9000
offensive_rebound_percentage
decimal——
e.g. 0.0000
offensive_rebounds
integer——
e.g. 0
pace
decimal——
e.g. 100.6900
player_impact_estimate
decimal——
e.g. 0.0730
plus_minus
integer——
e.g. -7
possessions
integer——
e.g. 41
pts
integer——
e.g. 0
rebound_percentage
decimal——
e.g. 0.0620
rebounds
integer——
e.g. 0
steals
integer——
e.g. 0
three_point_percentage
decimal——
e.g. 0.0000
three_pointers_attempted
integer——
e.g. 0
three_pointers_made
integer——
e.g. 0
time_of_possession
decimal——
e.g. 0.8000
touches
integer——
e.g. 160
triple_doubles
integer——
e.g. 0
true_shooting_percentage
decimal——
e.g. 0.0000
turnover_percentage
decimal——
e.g. 0.0000
turnovers
integer——
e.g. 0
usage_percentage
decimal——
e.g. 0.1360
wins
integer——
e.g. 1

Odds

game_linesnba.game_lines
NBA game betting lines — point spreads, moneylines, and over/under totals from sportsbooks, captured over time as the lines move from opening to closing.
GET/api/v1/nba/game_lines
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
season_idquerybigintoptional
Filter by season.
operator_idquerybigintoptional
Filter by sportsbook id: 6 Consensus (full history), 1 DraftKings, 2 FanDuel, 1683 Pinnacle, 1684 BetMGM, 1685 Caesars, 1686 BetRivers, 1687 ESPN BET (per-book rows begin 2026-05).
is_openingquerybooleanoptional
Filter to opening lines only. Reliable from the 2025-26 season; earlier seasons largely lack opener flags.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_lines?game_id=1'
Responses
200game_lines rows matching the declared filter set, wrapped in { game_lines, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(30 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 16082
operator_id
bigintSportsbook id: 6 Consensus (full history); per-book ids (1 DraftKings, 2 FanDuel, 1683 Pinnacle, 1684 BetMGM, 1685 Caesars, 1686 BetRivers, 1687 ESPN BET) begin 2026-05.
e.g. 6
season_id
bigintDenormalized for efficient season-level queries
e.g. 2021
captured_at
timestamptz—When this snapshot was captured
e.g. 2022-04-10T00:00:00.000Z
implied_away_score
decimalnullable——
e.g. 109.0000
implied_away_win_pct
decimalnullable——
e.g. 0.4082
implied_home_score
decimalnullable—Calculated from spread + total
e.g. 109.7500
implied_home_win_pct
decimalnullable—From moneyline, 0-1
e.g. 0.6296
is_opening
boolean—True if this is the opening line
Values:falsetrue
moneyline_away
integernullable—American odds for away team win
e.g. 145
moneyline_bet_pct_away
integernullable——
e.g. — (all-null in sample)
moneyline_bet_pct_home
integernullable——
e.g. — (all-null in sample)
moneyline_home
integernullable—American odds for home team win
e.g. -170
moneyline_money_pct_away
integernullable——
e.g. — (all-null in sample)
moneyline_money_pct_home
integernullable——
e.g. — (all-null in sample)
over_odds
integernullable—American odds for over
e.g. 0
spread
decimalnullable—Home team spread (e.g., -3.5 means home favored by 3.5)
e.g. -2.5000
spread_away_odds
integernullable—American odds for away spread
e.g. -110
spread_bet_pct_away
integernullable——
e.g. — (all-null in sample)
spread_bet_pct_home
integernullable——
e.g. — (all-null in sample)
spread_home_odds
integernullable—American odds for home spread (e.g., -110)
e.g. -110
spread_money_pct_away
integernullable——
e.g. — (all-null in sample)
spread_money_pct_home
integernullable——
e.g. — (all-null in sample)
total
decimalnullable—Combined score total line (e.g., 224.5)
e.g. 225.5000
total_bet_pct_over
integernullable——
e.g. — (all-null in sample)
total_bet_pct_under
integernullable——
e.g. — (all-null in sample)
total_money_pct_over
integernullable——
e.g. — (all-null in sample)
total_money_pct_under
integernullable——
e.g. — (all-null in sample)
under_odds
integernullable—American odds for under
e.g. 0
GET/api/v1/nba/game_lines/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_line row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_lines/{pk_value}'
Responses
200Single game_line row.application/jsonshow example ▸
404Row not found.
Response Schema(30 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 16082
operator_id
bigintSportsbook id: 6 Consensus (full history); per-book ids (1 DraftKings, 2 FanDuel, 1683 Pinnacle, 1684 BetMGM, 1685 Caesars, 1686 BetRivers, 1687 ESPN BET) begin 2026-05.
e.g. 6
season_id
bigintDenormalized for efficient season-level queries
e.g. 2021
captured_at
timestamptz—When this snapshot was captured
e.g. 2022-04-10T00:00:00.000Z
implied_away_score
decimalnullable——
e.g. 109.0000
implied_away_win_pct
decimalnullable——
e.g. 0.4082
implied_home_score
decimalnullable—Calculated from spread + total
e.g. 109.7500
implied_home_win_pct
decimalnullable—From moneyline, 0-1
e.g. 0.6296
is_opening
boolean—True if this is the opening line
Values:falsetrue
moneyline_away
integernullable—American odds for away team win
e.g. 145
moneyline_bet_pct_away
integernullable——
e.g. — (all-null in sample)
moneyline_bet_pct_home
integernullable——
e.g. — (all-null in sample)
moneyline_home
integernullable—American odds for home team win
e.g. -170
moneyline_money_pct_away
integernullable——
e.g. — (all-null in sample)
moneyline_money_pct_home
integernullable——
e.g. — (all-null in sample)
over_odds
integernullable—American odds for over
e.g. 0
spread
decimalnullable—Home team spread (e.g., -3.5 means home favored by 3.5)
e.g. -2.5000
spread_away_odds
integernullable—American odds for away spread
e.g. -110
spread_bet_pct_away
integernullable——
e.g. — (all-null in sample)
spread_bet_pct_home
integernullable——
e.g. — (all-null in sample)
spread_home_odds
integernullable—American odds for home spread (e.g., -110)
e.g. -110
spread_money_pct_away
integernullable——
e.g. — (all-null in sample)
spread_money_pct_home
integernullable——
e.g. — (all-null in sample)
total
decimalnullable—Combined score total line (e.g., 224.5)
e.g. 225.5000
total_bet_pct_over
integernullable——
e.g. — (all-null in sample)
total_bet_pct_under
integernullable——
e.g. — (all-null in sample)
total_money_pct_over
integernullable——
e.g. — (all-null in sample)
total_money_pct_under
integernullable——
e.g. — (all-null in sample)
under_odds
integernullable—American odds for under
e.g. 0
game_period_linesnba.game_period_lines
Period-specific NBA betting lines — first-half, second-half, and individual-quarter spreads, moneylines, and totals offered alongside the full-game markets.
GET/api/v1/nba/game_period_lines
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
season_idquerybigintoptional
Filter by season.
operator_idquerybigintoptional
Filter by sportsbook.
period_codequerystringoptional
Filter by period (1H, 2H, Q1, Q2, Q3, Q4).
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_period_lines?game_id=1'
Responses
200game_period_lines rows matching the declared filter set, wrapped in { game_period_lines, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(17 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 769
operator_id
bigintData source (consensus, DraftKings, FanDuel, etc.)
e.g. 6
season_id
bigintDenormalized for efficient season-level queries
e.g. 2025
captured_at
timestamptz—When this snapshot was captured
e.g. 2024-01-05T05:00:00.000Z
implied_away_win_pct
decimalnullable——
e.g. 0.5121951219512195
implied_home_win_pct
decimalnullable—From moneyline, 0-1
e.g. 0.5121951219512195
is_opening
boolean—True if this is the first captured line for this period
e.g. false
moneyline_away
integernullable—American odds for away team win in this period
e.g. -105
moneyline_home
integernullable—American odds for home team win in this period
e.g. -105
over_odds
integernullable—American odds for over
e.g. -110
period_code
string—Market period code (1H, 2H, Q1, Q2, Q3, Q4)
Values:1HQ1Q3Q4Q22H
spread
decimalnullable—Home team spread for this period
e.g. -0.5
spread_away_odds
integernullable—American odds for away spread
e.g. -110
spread_home_odds
integernullable—American odds for home spread (e.g., -110)
e.g. -110
total
decimalnullable—Combined score total line for this period
e.g. 57.5
under_odds
integernullable—American odds for under
e.g. -110
GET/api/v1/nba/game_period_lines/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_period_line row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_period_lines/{pk_value}'
Responses
200Single game_period_line row.application/jsonshow example ▸
404Row not found.
Response Schema(17 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 769
operator_id
bigintData source (consensus, DraftKings, FanDuel, etc.)
e.g. 6
season_id
bigintDenormalized for efficient season-level queries
e.g. 2025
captured_at
timestamptz—When this snapshot was captured
e.g. 2024-01-05T05:00:00.000Z
implied_away_win_pct
decimalnullable——
e.g. 0.5121951219512195
implied_home_win_pct
decimalnullable—From moneyline, 0-1
e.g. 0.5121951219512195
is_opening
boolean—True if this is the first captured line for this period
e.g. false
moneyline_away
integernullable—American odds for away team win in this period
e.g. -105
moneyline_home
integernullable—American odds for home team win in this period
e.g. -105
over_odds
integernullable—American odds for over
e.g. -110
period_code
string—Market period code (1H, 2H, Q1, Q2, Q3, Q4)
Values:1HQ1Q3Q4Q22H
spread
decimalnullable—Home team spread for this period
e.g. -0.5
spread_away_odds
integernullable—American odds for away spread
e.g. -110
spread_home_odds
integernullable—American odds for home spread (e.g., -110)
e.g. -110
total
decimalnullable—Combined score total line for this period
e.g. 57.5
under_odds
integernullable—American odds for under
e.g. -110
game_player_propsnba.game_player_props
NBA player prop bets for each game — points, rebounds, assists, threes made, steals, blocks, and other player-statistic markets offered by sportsbooks.
GET/api/v1/nba/game_player_props
Requires one of: game_id or player_id + season_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
player_idquerybigintoptional
Filter to a single player. With season_id: the player's prop history across a season.
season_idquerybigintoptional
Filter by season.
operator_idquerybigintoptional
Filter by sportsbook. Historical rows are operator 6 (Consensus); per-book rows (1 DraftKings, 2 FanDuel, 1683 Pinnacle, 1684 BetMGM, 1685 Caesars, 1686 BetRivers, 1687 ESPN BET) begin 2026-05.
categoryquerystringoptional
Filter by prop category (points, rebounds, assists, pra, etc.). Values: assists, blocks, double_double, points, pts_assists, pts_rebounds, pts_rebounds_assists, rebounds, rebounds_assists, steals, steals_blocks, three_pointers_made, triple_double, turnovers.
market_keyquerystringoptional
Filter by raw market key (e.g., player_points). Values: player_assists, player_blocks, player_blocks_steals, player_double_double, player_points, player_points_assists, player_points_rebounds, player_points_rebounds_assists, player_rebounds, player_rebounds_assists, player_steals, player_threes, player_triple_double, player_turnovers.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_player_props?game_id=1'
Responses
200game_player_props rows matching the declared filter set, wrapped in { game_player_props, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(18 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 126
operator_id
bigintUsually consensus
e.g. 6
player_id
bigint—
e.g. 157
season_id
bigintDenormalized for efficient season-level queries
e.g. 2025
book_count
integer—Number of curated books contributing to this consensus value
e.g. 3
captured_at
timestamptz—When this snapshot was captured
e.g. 2025-10-22T04:00:00.000Z
category
string—Canonical category (points, rebounds, assists, pra, etc.)
Values:pointsreboundsthree_pointers_madepts_reboundsdouble_doubleassistspts_rebounds_assistsrebounds_assistspts_assiststriple_doubleblockssteals
is_opening
boolean—True if this is the first captured line for this player/market
e.g. false
line
decimalnullable—Prop line for over/under markets (e.g., 24.5)
e.g. 1.5
market_key
string—Raw market key from source API (e.g., player_points)
Values:player_pointsplayer_reboundsplayer_threesplayer_points_reboundsplayer_double_doubleplayer_assistsplayer_points_rebounds_…player_rebounds_assistsplayer_points_assistsplayer_triple_doubleplayer_blocksplayer_steals
no_odds
integernullable—American odds for no
e.g. -10000
outcome_type
string—ou | yes_no
Values:ouyes_no
over_odds
integernullable—American odds for over
e.g. -120
period_code
stringnullable—Optional period code (Q1, 1H)
e.g. — (all-null in sample)
subcategory
stringnullable—Optional subtype (alternate, boosted, etc.)
e.g. — (all-null in sample)
under_odds
integernullable—American odds for under
e.g. -110
yes_odds
integernullable—American odds for yes
e.g. 1100
GET/api/v1/nba/game_player_props/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_prop row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_player_props/{pk_value}'
Responses
200Single game_player_prop row.application/jsonshow example ▸
404Row not found.
Response Schema(18 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 126
operator_id
bigintUsually consensus
e.g. 6
player_id
bigint—
e.g. 157
season_id
bigintDenormalized for efficient season-level queries
e.g. 2025
book_count
integer—Number of curated books contributing to this consensus value
e.g. 3
captured_at
timestamptz—When this snapshot was captured
e.g. 2025-10-22T04:00:00.000Z
category
string—Canonical category (points, rebounds, assists, pra, etc.)
Values:pointsreboundsthree_pointers_madepts_reboundsdouble_doubleassistspts_rebounds_assistsrebounds_assistspts_assiststriple_doubleblockssteals
is_opening
boolean—True if this is the first captured line for this player/market
e.g. false
line
decimalnullable—Prop line for over/under markets (e.g., 24.5)
e.g. 1.5
market_key
string—Raw market key from source API (e.g., player_points)
Values:player_pointsplayer_reboundsplayer_threesplayer_points_reboundsplayer_double_doubleplayer_assistsplayer_points_rebounds_…player_rebounds_assistsplayer_points_assistsplayer_triple_doubleplayer_blocksplayer_steals
no_odds
integernullable—American odds for no
e.g. -10000
outcome_type
string—ou | yes_no
Values:ouyes_no
over_odds
integernullable—American odds for over
e.g. -120
period_code
stringnullable—Optional period code (Q1, 1H)
e.g. — (all-null in sample)
subcategory
stringnullable—Optional subtype (alternate, boosted, etc.)
e.g. — (all-null in sample)
under_odds
integernullable—American odds for under
e.g. -110
yes_odds
integernullable—American odds for yes
e.g. 1100

Lineups & Roster

coaching_staffsnba.coaching_staffs
NBA coaches and staff — head coaches, lead assistants, player-development coaches, and other basketball-operations staff who appear on team benches.
GET/api/v1/nba/coaching_staffs
Parameters
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/coaching_staffs?limit=3'
Responses
200coaching_staffs rows matching the declared filter set, wrapped in { coaching_staffs, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(5 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
coach_id
integer—Official NBA coach/staff ID from stats.nba.com
e.g. 57
first_name
string——
e.g. Mike
last_name
string——
e.g. Jones
name
string——
e.g. Stacey Augmon
GET/api/v1/nba/coaching_staffs/{id}
Parameters
idpathbigintrequired
Primary key (id) of the coaching_staff row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/coaching_staffs/{pk_value}'
Responses
200Single coaching_staff row.application/jsonshow example ▸
404Row not found.
Response Schema(5 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
coach_id
integer—Official NBA coach/staff ID from stats.nba.com
e.g. 57
first_name
string——
e.g. Mike
last_name
string——
e.g. Jones
name
string——
e.g. Stacey Augmon
team_coaching_staffsnba.team_coaching_staffs
The coaching staff each NBA team carries through the season — head coach, assistants, trainers — with the dates each staff member started and ended their tenure.
GET/api/v1/nba/team_coaching_staffs
Requires one of: team_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
season_idquerybigintoptional
Filter to a season.
coach_typequerystringoptional
Filter by coach role (Head Coach, Assistant Coach, Trainer). Values: Assistant Coach, Assistant Coach for Player Development, Assistant Trainer, Associate Head Coach, Director of Athletic Development, Head Coach, Interim Head Coach, Lead Assistant Coach, Strength and Conditioning Coach, Trainer.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/team_coaching_staffs?team_id=1'
Responses
200team_coaching_staffs rows matching the declared filter set, wrapped in { team_coaching_staffs, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(9 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
coaching_staff_id
bigint—
e.g. 395
season_id
bigintFirst season of this tenure
e.g. 2025
team_id
bigint—
e.g. 25
coach_type
string—Head Coach, Assistant Coach, Trainer
Values:Assistant CoachTrainerHead CoachAssistant Coach for Pla…Associate Head CoachAssistant TrainerStrength and Conditioni…Lead Assistant CoachDirector of Athletic De…Interim Head Coach
end_date
datenullable—Tenure end date. NULL = still active.
e.g. 2021-10-18
is_assistant
boolean——
Values:truefalse
sort_sequence
integernullable——
e.g. 4
start_date
date—Tenure start date (derived from season start)
e.g. 2025-10-21
GET/api/v1/nba/team_coaching_staffs/{id}
Parameters
idpathbigintrequired
Primary key (id) of the team_coaching_staff row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/team_coaching_staffs/{pk_value}'
Responses
200Single team_coaching_staff row.application/jsonshow example ▸
404Row not found.
Response Schema(9 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
coaching_staff_id
bigint—
e.g. 395
season_id
bigintFirst season of this tenure
e.g. 2025
team_id
bigint—
e.g. 25
coach_type
string—Head Coach, Assistant Coach, Trainer
Values:Assistant CoachTrainerHead CoachAssistant Coach for Pla…Associate Head CoachAssistant TrainerStrength and Conditioni…Lead Assistant CoachDirector of Athletic De…Interim Head Coach
end_date
datenullable—Tenure end date. NULL = still active.
e.g. 2021-10-18
is_assistant
boolean——
Values:truefalse
sort_sequence
integernullable——
e.g. 4
start_date
date—Tenure start date (derived from season start)
e.g. 2025-10-21
game_team_lineup_stintsnba.game_team_lineup_stints
Each continuous stretch an NBA team had the same five players on the floor (regular season, play-in, IST, and playoffs — no preseason) — the five-man unit, when it started and ended, and the team's net production while it was in.
GET/api/v1/nba/game_team_lineup_stints
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
team_idquerybigintoptional
Filter by team.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_team_lineup_stints?game_id=1'
Responses
200game_team_lineup_stints rows matching the declared filter set, wrapped in { game_team_lineup_stints, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(25 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 127
player1_id
bigint—
e.g. 53
player2_id
bigint—
e.g. 197
player3_id
bigint—
e.g. 187
player4_id
bigint—
e.g. 178
player5_id
bigint—
e.g. 258
team_id
bigint—
e.g. 12
assist_pct
decimal——
e.g. 0.0000
defensive_rating
decimal——
e.g. 0.0000
defensive_rebound_pct
decimal——
e.g. 1.0000
end_clock
integer——
e.g. 0
end_event_seq
integer——
e.g. 7200
net_rating
decimal——
e.g. 0.0000
offensive_rating
decimal——
e.g. 0.0000
offensive_rebound_pct
decimal——
e.g. 0.0000
pace
decimal——
e.g. 0.0000
period
integer——
e.g. 2
player_stats
jsonb—Array of individual player box scores and metrics recorded during this lineup stint.
e.g. [{"ast":0,"astShare":0,"blk":0,"corner3Rate":0,"dreb":0,"fg…
↳playerId
player_stats.playerId
integernullable—NBA Player ID
↳pts
player_stats.pts
integernullable—Points scored during stint
↳ast
player_stats.ast
integernullable—Assists recorded
↳dreb
player_stats.dreb
integernullable—Defensive rebounds
↳oreb
player_stats.oreb
integernullable—Offensive rebounds
↳stl
player_stats.stl
integernullable—Steals
↳blk
player_stats.blk
integernullable—Blocks
↳tov
player_stats.tov
integernullable—Turnovers
↳pf
player_stats.pf
integernullable—Personal fouls
↳fga
player_stats.fga
integernullable—Field goal attempts
↳fgm
player_stats.fgm
integernullable—Field goals made
↳fta
player_stats.fta
integernullable—Free throw attempts
↳ftm
player_stats.ftm
integernullable—Free throws made
↳astShare
player_stats.astShare
decimalnullable—Share of team assists
↳rebShare
player_stats.rebShare
decimalnullable—Share of team rebounds
↳usagePct
player_stats.usagePct
decimalnullable—Usage percentage during stint
↳teammateTs
player_stats.teammateTs
decimalnullable—Teammate true shooting percentage
↳corner3Rate
player_stats.corner3Rate
decimalnullable—Corner 3 attempt rate
↳oppFoulRate
player_stats.oppFoulRate
decimalnullable—Opponent foul rate
↳teammateAstPct
player_stats.teammateAstPct
decimalnullable—Teammate assist percentage
possessions
integer——
e.g. 2
pts_allowed
integer——
e.g. 0
pts_scored
integer——
e.g. 0
start_clock
integer——
e.g. 720
start_event_seq
integer——
e.g. 100
turnover_pct
decimal——
e.g. 0.0000
GET/api/v1/nba/game_team_lineup_stints/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_team_lineup_stint row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_team_lineup_stints/{pk_value}'
Responses
200Single game_team_lineup_stint row.application/jsonshow example ▸
404Row not found.
Response Schema(25 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 127
player1_id
bigint—
e.g. 53
player2_id
bigint—
e.g. 197
player3_id
bigint—
e.g. 187
player4_id
bigint—
e.g. 178
player5_id
bigint—
e.g. 258
team_id
bigint—
e.g. 12
assist_pct
decimal——
e.g. 0.0000
defensive_rating
decimal——
e.g. 0.0000
defensive_rebound_pct
decimal——
e.g. 1.0000
end_clock
integer——
e.g. 0
end_event_seq
integer——
e.g. 7200
net_rating
decimal——
e.g. 0.0000
offensive_rating
decimal——
e.g. 0.0000
offensive_rebound_pct
decimal——
e.g. 0.0000
pace
decimal——
e.g. 0.0000
period
integer——
e.g. 2
player_stats
jsonb—Array of individual player box scores and metrics recorded during this lineup stint.
e.g. [{"ast":0,"astShare":0,"blk":0,"corner3Rate":0,"dreb":0,"fg…
↳playerId
player_stats.playerId
integernullable—NBA Player ID
↳pts
player_stats.pts
integernullable—Points scored during stint
↳ast
player_stats.ast
integernullable—Assists recorded
↳dreb
player_stats.dreb
integernullable—Defensive rebounds
↳oreb
player_stats.oreb
integernullable—Offensive rebounds
↳stl
player_stats.stl
integernullable—Steals
↳blk
player_stats.blk
integernullable—Blocks
↳tov
player_stats.tov
integernullable—Turnovers
↳pf
player_stats.pf
integernullable—Personal fouls
↳fga
player_stats.fga
integernullable—Field goal attempts
↳fgm
player_stats.fgm
integernullable—Field goals made
↳fta
player_stats.fta
integernullable—Free throw attempts
↳ftm
player_stats.ftm
integernullable—Free throws made
↳astShare
player_stats.astShare
decimalnullable—Share of team assists
↳rebShare
player_stats.rebShare
decimalnullable—Share of team rebounds
↳usagePct
player_stats.usagePct
decimalnullable—Usage percentage during stint
↳teammateTs
player_stats.teammateTs
decimalnullable—Teammate true shooting percentage
↳corner3Rate
player_stats.corner3Rate
decimalnullable—Corner 3 attempt rate
↳oppFoulRate
player_stats.oppFoulRate
decimalnullable—Opponent foul rate
↳teammateAstPct
player_stats.teammateAstPct
decimalnullable—Teammate assist percentage
possessions
integer——
e.g. 2
pts_allowed
integer——
e.g. 0
pts_scored
integer——
e.g. 0
start_clock
integer——
e.g. 720
start_event_seq
integer——
e.g. 100
turnover_pct
decimal——
e.g. 0.0000
game_team_rostersnba.game_team_rosters
The gameday roster for each NBA game — every player available that night, who started, who sat, and who was on a minutes restriction, with the pre-tip snapshot and the reconciled post-game truth side by side.
GET/api/v1/nba/game_team_rosters
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
team_idquerybigintoptional
Filter by team.
player_idquerybigintoptional
Filter to a single player.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_team_rosters?game_id=1'
Responses
200game_team_rosters rows matching the declared filter set, wrapped in { game_team_rosters, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(14 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 724
player_id
bigint—
e.g. 197
team_id
bigint—
e.g. 12
comment
stringnullable——
e.g. INACTIVE_GLEAGUE_TWOWAY
confirmed
booleannullable—Whether the starter truth was established from post-game evidence
e.g. true
injury_status
stringnullable—Reconciled final injury designation for the roster row
Values:OUTQUESTIONABLEPROBABLEDOUBTFUL
position
stringnullable——
Values:GFCG-FF-C
pre_game_confirmed
booleannullable—Pre-tip lineup confidence from source (e.g. RotoWire confirmed vs expected)
e.g. true
pre_game_injury_status
stringnullable—Pre-tip injury designation: OUT, DOUBTFUL, QUESTIONABLE, PROBABLE
Values:OUTQUESTIONABLEPROBABLEDOUBTFUL
pre_game_starter
booleannullable—Pre-tip expected starter flag from lineup sources
Values:falsetrue
pre_game_status
integernullable—Pre-tip roster availability: 1=Active, 2=Inactive, 3=Out
e.g. 1
starter
booleannullable—Whether the player was in the starting five (reconciled post-game)
Values:falsetrue
status
integernullable—Reconciled final roster availability: 1=Active, 2=Inactive, 3=Out
e.g. 1
GET/api/v1/nba/game_team_rosters/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_team_roster row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_team_rosters/{pk_value}'
Responses
200Single game_team_roster row.application/jsonshow example ▸
404Row not found.
Response Schema(14 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 724
player_id
bigint—
e.g. 197
team_id
bigint—
e.g. 12
comment
stringnullable——
e.g. INACTIVE_GLEAGUE_TWOWAY
confirmed
booleannullable—Whether the starter truth was established from post-game evidence
e.g. true
injury_status
stringnullable—Reconciled final injury designation for the roster row
Values:OUTQUESTIONABLEPROBABLEDOUBTFUL
position
stringnullable——
Values:GFCG-FF-C
pre_game_confirmed
booleannullable—Pre-tip lineup confidence from source (e.g. RotoWire confirmed vs expected)
e.g. true
pre_game_injury_status
stringnullable—Pre-tip injury designation: OUT, DOUBTFUL, QUESTIONABLE, PROBABLE
Values:OUTQUESTIONABLEPROBABLEDOUBTFUL
pre_game_starter
booleannullable—Pre-tip expected starter flag from lineup sources
Values:falsetrue
pre_game_status
integernullable—Pre-tip roster availability: 1=Active, 2=Inactive, 3=Out
e.g. 1
starter
booleannullable—Whether the player was in the starting five (reconciled post-game)
Values:falsetrue
status
integernullable—Reconciled final roster availability: 1=Active, 2=Inactive, 3=Out
e.g. 1
team_depth_chartsnba.team_depth_charts
Each NBA team's depth chart by position on each date — the starter, second-unit, and bench order at point guard, shooting guard, small forward, power forward, and center, with injury designations layered in.
GET/api/v1/nba/team_depth_charts
Requires one of: team_id + season_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
season_idquerybigintoptional
Filter to a season. Defaults to the current season.
positionquerystringoptional
Filter by position (PG, SG, SF, PF, C). Values: C, PF, PG, SF, SG.
dayqueryintegeroptional
Snapshot day (YYYYMMDD integer). The table holds one snapshot per day; pass the latest day for the current depth chart. Range syntax: day__gte=, day__lte=, day__between=.
limitqueryintegeroptionaldefault 100
Page size. Defaults to 100; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/team_depth_charts?team_id=1&season_id=2026'
Responses
200team_depth_charts rows matching the declared filter set, wrapped in { team_depth_charts, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(8 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 337
season_id
bigint—
e.g. 2025
team_id
bigint—
e.g. 4
day
integer—YYYYMMDD snapshot day
e.g. 20260214
depth_rank
integer—1-based rank within position (1 = starter)
e.g. 1
injury_status
stringnullable—Day-To-Day, Out, etc. from ESPN
Values:OutDay-To-DaySuspension
position
string—PG, SG, SF, PF, C
Values:SFSGPFPGC
GET/api/v1/nba/team_depth_charts/{id}
Parameters
idpathbigintrequired
Primary key (id) of the team_depth_chart row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/team_depth_charts/{pk_value}'
Responses
200Single team_depth_chart row.application/jsonshow example ▸
404Row not found.
Response Schema(8 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
player_id
bigint—
e.g. 337
season_id
bigint—
e.g. 2025
team_id
bigint—
e.g. 4
day
integer—YYYYMMDD snapshot day
e.g. 20260214
depth_rank
integer—1-based rank within position (1 = starter)
e.g. 1
injury_status
stringnullable—Day-To-Day, Out, etc. from ESPN
Values:OutDay-To-DaySuspension
position
string—PG, SG, SF, PF, C
Values:SFSGPFPGC

Misc

stadiumsnba.stadiums
NBA arenas — current home venues and historical buildings the league's teams have played in.
GET/api/v1/nba/stadiums
Parameters
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/stadiums?limit=3'
Responses
200stadiums rows matching the declared filter set, wrapped in { stadiums, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(19 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
league_stadium_id
integernullable—Official NBA arena ID from stats.nba.com
e.g. 643
address
stringnullable——
e.g. — (all-null in sample)
capacity
integernullable——
e.g. — (all-null in sample)
city
string——
e.g. Orlando
closed_date
timestamptznullable——
e.g. — (all-null in sample)
country
stringnullable——
Values:USCAMXGBFRDEAECNJP
description
stringnullable——
e.g. Home of the Toronto Raptors. Multi-purpose arena in downtow…
elevation
floatnullable—Elevation in feet above sea level
e.g. 198
image_url
stringnullable—URL to aerial/overview image of arena
e.g. — (all-null in sample)
latitude
floatnullable——
e.g. 25.7814
longitude
floatnullable——
e.g. -80.187
name
string——
e.g. Scotiabank Arena
opened_date
timestamptznullable——
e.g. — (all-null in sample)
roof_type
stringnullable—Arena roof type (all indoor)
e.g. — (all-null in sample)
state
stringnullable——
e.g. FL
surface
stringnullable——
e.g. — (all-null in sample)
team_name
stringnullable——
e.g. — (all-null in sample)
timezone
stringnullable—IANA timezone (e.g., America/New_York)
Values:America/New_YorkAmerica/ChicagoAmerica/Los_AngelesAmerica/DenverAmerica/PhoenixAmerica/Mexico_CityAmerica/TorontoAmerica/Indiana/Indiana…Europe/LondonEurope/ParisEurope/BerlinAsia/DubaiAmerica/Puerto_RicoAmerica/VancouverAsia/ShanghaiPacific/HonoluluAsia/TokyoAmerica/Edmonton
GET/api/v1/nba/stadiums/{id}
Parameters
idpathbigintrequired
Primary key (id) of the stadium row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/stadiums/{pk_value}'
Responses
200Single stadium row.application/jsonshow example ▸
404Row not found.
Response Schema(19 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
league_stadium_id
integernullable—Official NBA arena ID from stats.nba.com
e.g. 643
address
stringnullable——
e.g. — (all-null in sample)
capacity
integernullable——
e.g. — (all-null in sample)
city
string——
e.g. Orlando
closed_date
timestamptznullable——
e.g. — (all-null in sample)
country
stringnullable——
Values:USCAMXGBFRDEAECNJP
description
stringnullable——
e.g. Home of the Toronto Raptors. Multi-purpose arena in downtow…
elevation
floatnullable—Elevation in feet above sea level
e.g. 198
image_url
stringnullable—URL to aerial/overview image of arena
e.g. — (all-null in sample)
latitude
floatnullable——
e.g. 25.7814
longitude
floatnullable——
e.g. -80.187
name
string——
e.g. Scotiabank Arena
opened_date
timestamptznullable——
e.g. — (all-null in sample)
roof_type
stringnullable—Arena roof type (all indoor)
e.g. — (all-null in sample)
state
stringnullable——
e.g. FL
surface
stringnullable——
e.g. — (all-null in sample)
team_name
stringnullable——
e.g. — (all-null in sample)
timezone
stringnullable—IANA timezone (e.g., America/New_York)
Values:America/New_YorkAmerica/ChicagoAmerica/Los_AngelesAmerica/DenverAmerica/PhoenixAmerica/Mexico_CityAmerica/TorontoAmerica/Indiana/Indiana…Europe/LondonEurope/ParisEurope/BerlinAsia/DubaiAmerica/Puerto_RicoAmerica/VancouverAsia/ShanghaiPacific/HonoluluAsia/TokyoAmerica/Edmonton
broadcastersnba.broadcasters
Networks, regional sports networks, and streaming services that air NBA games — ESPN, TNT, ABC, NBA TV, plus team-local RSNs like YES, MSG, and Bally Sports.
GET/api/v1/nba/broadcasters
Parameters
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/broadcasters?limit=3'
Responses
200broadcasters rows matching the declared filter set, wrapped in { broadcasters, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(11 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
broadcaster_team_id
integer——
e.g. 0
region_id
integer——
e.g. 0
broadcaster_abbreviation
string——
e.g. BSIN
broadcaster_description
stringnullable——
e.g. — (all-null in sample)
broadcaster_display
string——
e.g. BSIN
broadcaster_media
string——
e.g. tv
broadcaster_ranking
integer——
e.g. 0
broadcaster_scope
string——
Values:localnational
broadcaster_video_link
stringnullable——
e.g. — (all-null in sample)
tape_delay_comments
stringnullable——
e.g. — (all-null in sample)
GET/api/v1/nba/broadcasters/{id}
Parameters
idpathbigintrequired
Primary key (id) of the broadcaster row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/broadcasters/{pk_value}'
Responses
200Single broadcaster row.application/jsonshow example ▸
404Row not found.
Response Schema(11 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
broadcaster_team_id
integer——
e.g. 0
region_id
integer——
e.g. 0
broadcaster_abbreviation
string——
e.g. BSIN
broadcaster_description
stringnullable——
e.g. — (all-null in sample)
broadcaster_display
string——
e.g. BSIN
broadcaster_media
string——
e.g. tv
broadcaster_ranking
integer——
e.g. 0
broadcaster_scope
string——
Values:localnational
broadcaster_video_link
stringnullable——
e.g. — (all-null in sample)
tape_delay_comments
stringnullable——
e.g. — (all-null in sample)
refereesnba.referees
NBA officials — the three-person crew of referees who work each game.
GET/api/v1/nba/referees
Parameters
activequerybooleanoptional
Filter by active status (defaults to true to show only currently-active rows; pass active=false to include inactive).
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/referees?limit=3'
Responses
200referees rows matching the declared filter set, wrapped in { referees, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(13 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
nba_referee_id
integer——
e.g. 202027
active
boolean——
e.g. true
birth_city
stringnullable——
e.g. — (all-null in sample)
birth_country
stringnullable——
e.g. — (all-null in sample)
birth_date
datenullable——
e.g. — (all-null in sample)
birth_state
stringnullable——
e.g. — (all-null in sample)
college
stringnullable——
e.g. — (all-null in sample)
experience
integernullable——
e.g. — (all-null in sample)
first_name
string——
e.g. Biniam
full_name
string——
e.g. Biniam Maru
jersey_number
stringnullable——
e.g. 94
last_name
string——
e.g. Maru
GET/api/v1/nba/referees/{id}
Parameters
idpathbigintrequired
Primary key (id) of the referee row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/referees/{pk_value}'
Responses
200Single referee row.application/jsonshow example ▸
404Row not found.
Response Schema(13 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
nba_referee_id
integer——
e.g. 202027
active
boolean——
e.g. true
birth_city
stringnullable——
e.g. — (all-null in sample)
birth_country
stringnullable——
e.g. — (all-null in sample)
birth_date
datenullable——
e.g. — (all-null in sample)
birth_state
stringnullable——
e.g. — (all-null in sample)
college
stringnullable——
e.g. — (all-null in sample)
experience
integernullable——
e.g. — (all-null in sample)
first_name
string——
e.g. Biniam
full_name
string——
e.g. Biniam Maru
jersey_number
stringnullable——
e.g. 94
last_name
string——
e.g. Maru
operator_team_lookupsnba.operator_team_lookups
How each sportsbook and fantasy operator names every NBA team — the mapping from each operator's team code to the unified franchise record.
GET/api/v1/nba/operator_team_lookups
Requires one of: operator_id — requests satisfying none of these return 400.
Parameters
operator_idquerybigintoptional
Filter by operator.
team_idquerybigintoptional
Filter by team.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/operator_team_lookups?operator_id=1'
Responses
200operator_team_lookups rows matching the declared filter set, wrapped in { operator_team_lookups, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(6 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
operator_id
bigintReference to main.operator entity
e.g. 1
operator_team_id
string—External team ID from operator
e.g. 2003
team_id
bigintInternal nba.teams.id reference
e.g. 11
abbreviation
stringnullable—Team abbreviation for reconciliation
e.g. ATL
team_name
stringnullable—Team name for reconciliation
e.g. Atlanta Hawks
GET/api/v1/nba/operator_team_lookups/{id}
Parameters
idpathbigintrequired
Primary key (id) of the operator_team_lookup row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/operator_team_lookups/{pk_value}'
Responses
200Single operator_team_lookup row.application/jsonshow example ▸
404Row not found.
Response Schema(6 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
operator_id
bigintReference to main.operator entity
e.g. 1
operator_team_id
string—External team ID from operator
e.g. 2003
team_id
bigintInternal nba.teams.id reference
e.g. 11
abbreviation
stringnullable—Team abbreviation for reconciliation
e.g. ATL
team_name
stringnullable—Team name for reconciliation
e.g. Atlanta Hawks
playoffsnba.playoffs
The NBA postseason bracket — the play-in tournament, the four conference series rounds, and the NBA Finals, tracked as best-of-seven matchups with seeds, wins, and outcomes.
GET/api/v1/nba/playoffs
Parameters
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/playoffs?limit=3'
Responses
200playoffs rows matching the declared filter set, wrapped in { playoffs, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(12 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
away_team_id
bigint—
e.g. 13
home_team_id
bigint—
e.g. 1
season_id
bigint—
e.g. 2020
series_id
bigint——
e.g. 202001
away_team_wins
integer——
e.g. 0
games_played
integer——
e.g. 1
home_team_wins
integer——
e.g. 4
max_games
integer——
e.g. 7
series_name
string——
Values:East First RoundWest First RoundEast Play-InWest Play-InEast Conference Semifin…West Conference Semifin…West Conference FinalsEast Conference FinalsNBA Finals
series_text
string——
e.g. MIA won 1-0
status
string——
e.g. Completed
GET/api/v1/nba/playoffs/{id}
Parameters
idpathbigintrequired
Primary key (id) of the playoff row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/playoffs/{pk_value}'
Responses
200Single playoff row.application/jsonshow example ▸
404Row not found.
Response Schema(12 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
away_team_id
bigint—
e.g. 13
home_team_id
bigint—
e.g. 1
season_id
bigint—
e.g. 2020
series_id
bigint——
e.g. 202001
away_team_wins
integer——
e.g. 0
games_played
integer——
e.g. 1
home_team_wins
integer——
e.g. 4
max_games
integer——
e.g. 7
series_name
string——
Values:East First RoundWest First RoundEast Play-InWest Play-InEast Conference Semifin…West Conference Semifin…West Conference FinalsEast Conference FinalsNBA Finals
series_text
string——
e.g. MIA won 1-0
status
string——
e.g. Completed
game_broadcastersnba.game_broadcasters
Which networks broadcast each NBA game — the national TV partner, home and away regional carriers, radio calls, and streaming providers.
GET/api/v1/nba/game_broadcasters
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
broadcaster_idquerybigintoptional
Filter by broadcaster.
broadcaster_typequerystringoptional
Filter by broadcaster role. Values: awayTv, homeTv, nationalTv.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_broadcasters?game_id=1'
Responses
200game_broadcasters rows matching the declared filter set, wrapped in { game_broadcasters, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(4 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
broadcaster_id
bigint—
e.g. 10
game_id
bigint—
e.g. 15975
broadcaster_type
string——
Values:awayTvhomeTvnationalTv
GET/api/v1/nba/game_broadcasters/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_broadcaster row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_broadcasters/{pk_value}'
Responses
200Single game_broadcaster row.application/jsonshow example ▸
404Row not found.
Response Schema(4 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
broadcaster_id
bigint—
e.g. 10
game_id
bigint—
e.g. 15975
broadcaster_type
string——
Values:awayTvhomeTvnationalTv
game_refereesnba.game_referees
The officiating crew assigned to each NBA game — the three referees who worked the matchup.
GET/api/v1/nba/game_referees
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
referee_idquerybigintoptional
Filter by referee.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_referees?game_id=1'
Responses
200game_referees rows matching the declared filter set, wrapped in { game_referees, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(4 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 4727
referee_id
bigint—
e.g. 58
position
stringnullable——
Values:RefereeCrew ChiefUmpireALTERNATE
GET/api/v1/nba/game_referees/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_referee row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/game_referees/{pk_value}'
Responses
200Single game_referee row.application/jsonshow example ▸
404Row not found.
Response Schema(4 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 4727
referee_id
bigint—
e.g. 58
position
stringnullable——
Values:RefereeCrew ChiefUmpireALTERNATE
operator_player_lookupsnba.operator_player_lookups
How each sportsbook and fantasy operator names every NBA player — the mapping from each operator's player identifier to a unified player record.
GET/api/v1/nba/operator_player_lookups
Requires one of: operator_id — requests satisfying none of these return 400.
Parameters
operator_idquerybigintoptional
Filter by operator id: 1 DraftKings, 2 FanDuel, 3 Yahoo, 13 sportsdata.io, 83 stats.nba.com.
player_idquerybigintoptional
Filter to a single player.
limitqueryintegeroptionaldefault 100
Page size. Defaults to 100; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/operator_player_lookups?operator_id=1'
Responses
200operator_player_lookups rows matching the declared filter set, wrapped in { operator_player_lookups, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(9 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
operator_id
bigintOperator id: 1 DraftKings, 2 FanDuel, 3 Yahoo, 13 sportsdata.io, 83 stats.nba.com.
e.g. 83
operator_player_id
string—External player ID from operator
e.g. 76001
player_id
bigintnullableInternal nba.players.id reference
e.g. 521
decided_at
timestamptznullable—When the pin or block was decided.
e.g. — (all-null in sample)
decided_reason
stringnullable—Evidence behind a pinned or blocked decision.
e.g. — (all-null in sample)
decision
stringnullable—How this mapping was decided: 'derived' (finder answer, overwritable), 'pinned' (decided on evidence, trigger-protected), 'blocked' (no player we hold is this id; player_id NULL, never retried). DB default 'derived'; a BEFORE UPDATE trigger preserves non-derived rows.
e.g. derived
player_name
stringnullable—Player name for reconciliation
e.g. George Johnson
position
stringnullable—Position for reconciliation
Values:GFCG-FF-CUnknown
GET/api/v1/nba/operator_player_lookups/{id}
Parameters
idpathbigintrequired
Primary key (id) of the operator_player_lookup row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/operator_player_lookups/{pk_value}'
Responses
200Single operator_player_lookup row.application/jsonshow example ▸
404Row not found.
Response Schema(9 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
operator_id
bigintOperator id: 1 DraftKings, 2 FanDuel, 3 Yahoo, 13 sportsdata.io, 83 stats.nba.com.
e.g. 83
operator_player_id
string—External player ID from operator
e.g. 76001
player_id
bigintnullableInternal nba.players.id reference
e.g. 521
decided_at
timestamptznullable—When the pin or block was decided.
e.g. — (all-null in sample)
decided_reason
stringnullable—Evidence behind a pinned or blocked decision.
e.g. — (all-null in sample)
decision
stringnullable—How this mapping was decided: 'derived' (finder answer, overwritable), 'pinned' (decided on evidence, trigger-protected), 'blocked' (no player we hold is this id; player_id NULL, never retried). DB default 'derived'; a BEFORE UPDATE trigger preserves non-derived rows.
e.g. derived
player_name
stringnullable—Player name for reconciliation
e.g. George Johnson
position
stringnullable—Position for reconciliation
Values:GFCG-FF-CUnknown
player_newsnba.player_news
News about NBA players — trades, injuries, lineup decisions, suspensions, and general beat-reporter updates.
GET/api/v1/nba/player_news
Requires one of: player_id or team_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to news about a single player.
team_idquerybigintoptional
Filter by team — a team-level news feed, newest first.
categoryquerystringoptional
Filter by news category (injury, transaction, lineup, general). Values: general, injury, lineup, transaction.
status_enumquerystringoptional
Filter by player status designation. Values: RULED_OUT, DOUBTFUL, QUESTIONABLE, PROBABLE, CLEARED, MINUTES_LIMIT, MINUTES_LIFTED, STARTING, BENCHED, INACTIVE, ACTIVE, IR_PLACED, IR_ACTIVATED, OUT_SEASON, TRADED, RELEASED, SIGNED, ROUTINE, UNSIGNED.
urgencyquerystringoptional
Filter by news urgency. Values: BREAKING_GAME_TIME, HIGH, MEDIUM, ROUTINE.
news_timequerytimestamptzoptional
Filter by publication time (ISO 8601). Use news_time__gte to poll for items since your last check. Range syntax: news_time__gte=, news_time__lte=, news_time__between=.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/player_news?player_id=1'
Responses
200player_news rows matching the declared filter set, wrapped in { player_news, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(22 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
external_id
stringnullable—Unique identifier from the news provider.
e.g. rotoql-14973
game_id
bigintnullableAssociated game ID when this news item relates to a specific game.
e.g. — (all-null in sample)
opponent_team_id
bigintnullableOpponent team ID when this news item relates to an upcoming or active game matchup.
e.g. — (all-null in sample)
player_id
bigintnullablePlayer ID associated with the news report.
e.g. 165
team_id
bigintnullableTeam ID of the player at the time of publication.
e.g. 16
ai_processed
boolean—Whether this story was generated or enriched via LLM summarization.
e.g. false
analysis
stringnullable—Fantasy and tactical analysis of the news.
e.g. Barton had to be helped back to the locker room during the …
author
stringnullable—Reporter or author of the article.
e.g. — (all-null in sample)
category
stringnullable—injury, transaction, lineup, general
e.g. — (all-null in sample)
content
stringnullable—Full text content of the news report.
e.g. — (all-null in sample)
description
stringnullable—Brief synopsis or summary of the news event.
e.g. Murray was assigned Sunday to the D-League's Austin Spurs.
first_reported_at
timestamptznullable—Timestamp when this story was first reported before multi-source compaction.
e.g. — (all-null in sample)
link
stringnullable—URL link to the original article or source video.
e.g. — (all-null in sample)
news_time
timestamptz—Publication timestamp of the news story.
e.g. 2016-11-27T19:29:13.000Z
priority
integer—Display priority score (1-10).
e.g. 3
situational_impact
jsonbnullable—Structured situational impact assessment and fantasy implications for the player.
e.g. — (all-null in sample)
↳type
situational_impact.type
stringnullable—Impact direction: positive, negative, or neutral.
↳impact_enum
situational_impact.impact_enum
stringnullable—Standardized impact state (ACTIVE, CLEARED, QUESTIONABLE, etc.).
↳reason
situational_impact.reason
stringnullable—Narrative explaining the fantasy and playing-time impact.
↳ripple_effect
situational_impact.ripple_effect
stringnullable—Downstream tactical or fantasy consequences.
↳affected_players
situational_impact.affected_players
listnullable—Teammates whose opportunity or role is impacted.
↳affectedPlayers
situational_impact.affectedPlayers
listnullable—Teammates whose opportunity or role is impacted (camelCase).
↳affected_player_ids
situational_impact.affected_player_ids
listnullable—IDs of impacted teammates.
source
stringnullable—Primary news source or publication.
e.g. rotowire
sources
jsonbnullable—Source citations with source name, URL, author, and published timestamp.
e.g. — (all-null in sample)
↳url
sources.url
stringnullable—Source article or media link.
↳source
sources.source
stringnullable—Publisher or feed identifier.
↳author
sources.author
stringnullable—Reporting journalist or source author.
↳published_at
sources.published_at
timestamptznullable—Source publication timestamp.
status_enum
stringnullable—Standardized player status designation (RULED_OUT, DOUBTFUL, QUESTIONABLE, PROBABLE, CLEARED, MINUTES_LIMIT, MINUTES_LIFTED, STARTING, BENCHED, INACTIVE, ACTIVE, IR_PLACED, IR_ACTIVATED, TRADED, RELEASED, SIGNED, ROUTINE).
e.g. — (all-null in sample)
title
string—Headline of the news report.
e.g. Assigned to D-League
urgency
stringnullable—Urgency level of the news event (BREAKING_GAME_TIME, HIGH, MEDIUM, ROUTINE).
e.g. — (all-null in sample)
GET/api/v1/nba/player_news/{id}
Parameters
idpathbigintrequired
Primary key (id) of the player_new row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/player_news/{pk_value}'
Responses
200Single player_new row.application/jsonshow example ▸
404Row not found.
Response Schema(22 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
external_id
stringnullable—Unique identifier from the news provider.
e.g. rotoql-14973
game_id
bigintnullableAssociated game ID when this news item relates to a specific game.
e.g. — (all-null in sample)
opponent_team_id
bigintnullableOpponent team ID when this news item relates to an upcoming or active game matchup.
e.g. — (all-null in sample)
player_id
bigintnullablePlayer ID associated with the news report.
e.g. 165
team_id
bigintnullableTeam ID of the player at the time of publication.
e.g. 16
ai_processed
boolean—Whether this story was generated or enriched via LLM summarization.
e.g. false
analysis
stringnullable—Fantasy and tactical analysis of the news.
e.g. Barton had to be helped back to the locker room during the …
author
stringnullable—Reporter or author of the article.
e.g. — (all-null in sample)
category
stringnullable—injury, transaction, lineup, general
e.g. — (all-null in sample)
content
stringnullable—Full text content of the news report.
e.g. — (all-null in sample)
description
stringnullable—Brief synopsis or summary of the news event.
e.g. Murray was assigned Sunday to the D-League's Austin Spurs.
first_reported_at
timestamptznullable—Timestamp when this story was first reported before multi-source compaction.
e.g. — (all-null in sample)
link
stringnullable—URL link to the original article or source video.
e.g. — (all-null in sample)
news_time
timestamptz—Publication timestamp of the news story.
e.g. 2016-11-27T19:29:13.000Z
priority
integer—Display priority score (1-10).
e.g. 3
situational_impact
jsonbnullable—Structured situational impact assessment and fantasy implications for the player.
e.g. — (all-null in sample)
↳type
situational_impact.type
stringnullable—Impact direction: positive, negative, or neutral.
↳impact_enum
situational_impact.impact_enum
stringnullable—Standardized impact state (ACTIVE, CLEARED, QUESTIONABLE, etc.).
↳reason
situational_impact.reason
stringnullable—Narrative explaining the fantasy and playing-time impact.
↳ripple_effect
situational_impact.ripple_effect
stringnullable—Downstream tactical or fantasy consequences.
↳affected_players
situational_impact.affected_players
listnullable—Teammates whose opportunity or role is impacted.
↳affectedPlayers
situational_impact.affectedPlayers
listnullable—Teammates whose opportunity or role is impacted (camelCase).
↳affected_player_ids
situational_impact.affected_player_ids
listnullable—IDs of impacted teammates.
source
stringnullable—Primary news source or publication.
e.g. rotowire
sources
jsonbnullable—Source citations with source name, URL, author, and published timestamp.
e.g. — (all-null in sample)
↳url
sources.url
stringnullable—Source article or media link.
↳source
sources.source
stringnullable—Publisher or feed identifier.
↳author
sources.author
stringnullable—Reporting journalist or source author.
↳published_at
sources.published_at
timestamptznullable—Source publication timestamp.
status_enum
stringnullable—Standardized player status designation (RULED_OUT, DOUBTFUL, QUESTIONABLE, PROBABLE, CLEARED, MINUTES_LIMIT, MINUTES_LIFTED, STARTING, BENCHED, INACTIVE, ACTIVE, IR_PLACED, IR_ACTIVATED, TRADED, RELEASED, SIGNED, ROUTINE).
e.g. — (all-null in sample)
title
string—Headline of the news report.
e.g. Assigned to D-League
urgency
stringnullable—Urgency level of the news event (BREAKING_GAME_TIME, HIGH, MEDIUM, ROUTINE).
e.g. — (all-null in sample)
team_game_contextsnba.team_game_contexts
Situational context for each NBA team in each game — how much the game matters (playoff push, tanking, contender mode, In-Season Tournament stakes), what phase of the season it's in, and how far along the schedule the team is.
GET/api/v1/nba/team_game_contexts
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
team_idquerybigintoptional
Filter by team.
season_idquerybigintoptional
Filter by season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/team_game_contexts?game_id=1'
Responses
200team_game_contexts rows matching the declared filter set, wrapped in { team_game_contexts, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(20 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 2374
opponent_team_id
bigint—
e.g. 9
season_id
bigint—
e.g. 2024
team_id
bigint—
e.g. 9
conference_rank
integer——
e.g. 8
game_type
string—regular, playoff, play_in, ist_group, ist_knockout, preseason, allstar
Values:regularplayoffist_group
games_remaining
integer——
e.g. 0
intensity
integer—1-10 motivation intensity scale
e.g. 5
is_back_to_back
boolean——
Values:falsetrue
is_clinch
boolean——
Values:falsetrue
is_elimination
boolean——
Values:falsetrue
ist_group_rank
integernullable——
e.g. — (all-null in sample)
ist_group_record
stringnullable—e.g. 2-1
e.g. — (all-null in sample)
motivation
string—contender, playoff_lock, seeding_battle, playoff_push, play_in, fringe, tanking, eliminated, early_season, playoff_comfortable, playoff_competitive, playoff_desperate, playoff_elimination, playoff_clinch, ist_contending, ist_eliminated, ist_knockout
Values:play_infringeearly_seasonseeding_battlecontendertankingplayoff_lockplayoff_competitiveplayoff_comfortableplayoff_desperateplayoff_clinchplayoff_eliminationist_contending
rest_days
integer——
e.g. 1
season_pct
decimal—0.0-1.0 how far through regular season
e.g. 1.0000
season_phase
string—early, mid, late, final_push, postseason
Values:midlateearlyfinal_pushpostseason
team_series_wins
integer——
e.g. 0
win_pct
decimal——
e.g. 0.5000
GET/api/v1/nba/team_game_contexts/{id}
Parameters
idpathbigintrequired
Primary key (id) of the team_game_context row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/team_game_contexts/{pk_value}'
Responses
200Single team_game_context row.application/jsonshow example ▸
404Row not found.
Response Schema(20 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
game_id
bigint—
e.g. 2374
opponent_team_id
bigint—
e.g. 9
season_id
bigint—
e.g. 2024
team_id
bigint—
e.g. 9
conference_rank
integer——
e.g. 8
game_type
string—regular, playoff, play_in, ist_group, ist_knockout, preseason, allstar
Values:regularplayoffist_group
games_remaining
integer——
e.g. 0
intensity
integer—1-10 motivation intensity scale
e.g. 5
is_back_to_back
boolean——
Values:falsetrue
is_clinch
boolean——
Values:falsetrue
is_elimination
boolean——
Values:falsetrue
ist_group_rank
integernullable——
e.g. — (all-null in sample)
ist_group_record
stringnullable—e.g. 2-1
e.g. — (all-null in sample)
motivation
string—contender, playoff_lock, seeding_battle, playoff_push, play_in, fringe, tanking, eliminated, early_season, playoff_comfortable, playoff_competitive, playoff_desperate, playoff_elimination, playoff_clinch, ist_contending, ist_eliminated, ist_knockout
Values:play_infringeearly_seasonseeding_battlecontendertankingplayoff_lockplayoff_competitiveplayoff_comfortableplayoff_desperateplayoff_clinchplayoff_eliminationist_contending
rest_days
integer——
e.g. 1
season_pct
decimal—0.0-1.0 how far through regular season
e.g. 1.0000
season_phase
string—early, mid, late, final_push, postseason
Values:midlateearlyfinal_pushpostseason
team_series_wins
integer——
e.g. 0
win_pct
decimal——
e.g. 0.5000
team_newsnba.team_news
News and updates about NBA teams — game previews, coaching changes, front-office moves, and beat reports.
⚠️ This endpoint is documented but not yet live. Calls return 503 until data is wired in.
GET/api/v1/nba/team_news
Requires one of: team_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
categoryquerystringoptional
Filter by category (game_preview, coaching, transaction, general, draft, depth_chart). Values: game_preview, coaching, transaction, general, draft, depth_chart.
urgencyquerystringoptional
Filter by news urgency. Values: BREAKING_GAME_TIME, HIGH, MEDIUM, ROUTINE.
news_timequerytimestamptzoptional
Filter by publication time (ISO 8601). Use news_time__gte to poll for items since your last check. Range syntax: news_time__gte=, news_time__lte=, news_time__between=.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/team_news?team_id=1'
Responses
200team_news rows matching the declared filter set, wrapped in { team_news, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
503Coming soon — handler returns 503 until data is wired in.
Response Schema(12 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
external_id
stringnullable—Canonical external identifier for deduplication.
e.g. rotoworld:nba-khalifa-diop-20260902T200417
game_id
bigintnullableAssociated game ID when news relates to a specific game.
e.g. — (all-null in sample)
opponent_team_id
bigintnullableOpponent team ID when news relates to an upcoming or completed game matchup.
e.g. — (all-null in sample)
team_id
bigintTeam ID that this news event pertains to.
e.g. 7
ai_processed
booleannullable—Whether this story was generated or enriched via LLM summarization.
e.g. true
category
stringnullable—game_preview, coaching, transaction, general
e.g. transaction
news_time
timestamptz—Publication timestamp of the team story.
e.g. 2026-09-02T20:04:17.734Z
sources
jsonbnullable—Source citations with publisher name, URL, author, and published timestamp.
e.g. [{"author":"Michael Scotto","published_at":"2026-09-02T20:0…
↳url
sources.url
stringnullable—Source article or media link.
↳source
sources.source
stringnullable—Publisher or feed identifier.
↳author
sources.author
stringnullable—Reporting journalist or source author.
↳published_at
sources.published_at
timestamptznullable—Source publication timestamp.
summary
string—Concise journalistic summary of the team news event.
e.g. The Cavaliers officially signed 2022 draft pick Khalifa Dio…
title
string—Headline of the team news story.
e.g. Cavaliers sign Khalifa Diop to four-year contract after two…
urgency
stringnullable—ROUTINE, MEDIUM, HIGH, BREAKING_GAME_TIME
e.g. ROUTINE
GET/api/v1/nba/team_news/{id}
Parameters
idpathbigintrequired
Primary key (id) of the team_new row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nba/team_news/{pk_value}'
Responses
200Single team_new row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(12 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
external_id
stringnullable—Canonical external identifier for deduplication.
e.g. rotoworld:nba-khalifa-diop-20260902T200417
game_id
bigintnullableAssociated game ID when news relates to a specific game.
e.g. — (all-null in sample)
opponent_team_id
bigintnullableOpponent team ID when news relates to an upcoming or completed game matchup.
e.g. — (all-null in sample)
team_id
bigintTeam ID that this news event pertains to.
e.g. 7
ai_processed
booleannullable—Whether this story was generated or enriched via LLM summarization.
e.g. true
category
stringnullable—game_preview, coaching, transaction, general
e.g. transaction
news_time
timestamptz—Publication timestamp of the team story.
e.g. 2026-09-02T20:04:17.734Z
sources
jsonbnullable—Source citations with publisher name, URL, author, and published timestamp.
e.g. [{"author":"Michael Scotto","published_at":"2026-09-02T20:0…
↳url
sources.url
stringnullable—Source article or media link.
↳source
sources.source
stringnullable—Publisher or feed identifier.
↳author
sources.author
stringnullable—Reporting journalist or source author.
↳published_at
sources.published_at
timestamptznullable—Source publication timestamp.
summary
string—Concise journalistic summary of the team news event.
e.g. The Cavaliers officially signed 2022 draft pick Khalifa Dio…
title
string—Headline of the team news story.
e.g. Cavaliers sign Khalifa Diop to four-year contract after two…
urgency
stringnullable—ROUTINE, MEDIUM, HIGH, BREAKING_GAME_TIME
e.g. ROUTINE