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
seasons
nba.seasonsEach 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/seasonsList seasons for NBA
Parameters
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/seasons/{id}Get a single season by id
Parameters
idpathbigintrequiredPrimary 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.
teams
nba.teamsThe 30 NBA franchises, organized into the Eastern and Western Conferences with three divisions in each.
GET/api/v1/nba/teamsList teams for NBA
Parameters
activequerybooleanoptionalFilter by active status (defaults to true to show only currently-active rows; pass active=false to include inactive).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/teams/{id}Get a single team by id
Parameters
idpathbigintrequiredPrimary 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.
games
nba.gamesEvery 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/gamesList games for NBA
Requires one of:
season_id — requests satisfying none of these return 400.Parameters
season_idquerybigintoptionalFilter to a season. Defaults to the current season.
home_team_idquerybigintoptionalFilter by home team.
away_team_idquerybigintoptionalFilter by away team.
statusquerystringoptionalFilter by game status. Values: Final, Scheduled.
dayqueryintegeroptionalFilter 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_typequerystringoptionalFilter 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 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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=2027'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/jsonGET/api/v1/nba/games/{id}Get a single game by id
Parameters
idpathbigintrequiredPrimary 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.
players
nba.playersEvery 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/playersList players for NBA
Requires one of:
roster_status — requests satisfying none of these return 400.Parameters
team_idquerybigintoptionalFilter to players whose current team_id matches. Null team_id rows (free agents, retired) are excluded when this filter is applied.
roster_statusquerystringoptionalFilter 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 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/players/{id}Get a single player by id
Parameters
idpathbigintrequiredPrimary 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.
Plays
game_possessions
nba.game_possessionsEach 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_possessionsList game_possessions for NBA
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
team_idquerybigintoptionalFilter by team in possession.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/game_possessions/{id}Get a single game_possession by id
Parameters
idpathbigintrequiredPrimary 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.
play_by_plays
nba.play_by_playsEvery 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_playsList play_by_plays for NBA
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
player_idquerybigintoptionalFilter to plays involving a specific player.
team_idquerybigintoptionalFilter to plays by a specific team.
event_typequeryintegeroptionalFilter 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 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/play_by_plays/{id}Get a single play_by_play by id
Parameters
idpathbigintrequiredPrimary 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.
Stats
season_team_stats
nba.season_team_statsSeason 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_statsList season_team_stats for NBA
Requires one of:
season_id — requests satisfying none of these return 400.Parameters
season_idquerybigintoptionalFilter to a single season. Defaults to the current season.
team_idquerybigintoptionalFilter by team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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=2027'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/jsonGET/api/v1/nba/season_team_stats/{id}Get a single season_team_stat by id
Parameters
idpathbigintrequiredPrimary 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.
team_standings
nba.team_standingsConference 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_standingsList team_standings for NBA
Requires one of:
season_id — requests satisfying none of these return 400.Parameters
season_idquerybigintoptionalFilter to a single season. Defaults to the current season.
team_idquerybigintoptionalFilter by team.
dayqueryintegeroptionalStandings 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 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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=2027'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/jsonGET/api/v1/nba/team_standings/{id}Get a single team_standing by id
Parameters
idpathbigintrequiredPrimary 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.
game_player_stats
nba.game_player_statsEach 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_statsList game_player_stats for NBA
Requires one of:
game_id or player_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
player_idquerybigintoptionalFilter to a single player — their full game log, newest first. Combine with game_date ranges to window it.
team_idquerybigintoptionalFilter by team.
game_datequeryintegeroptionalFilter by game day (YYYYMMDD integer, US Eastern). Range syntax: game_date__gte=, game_date__lte=, game_date__between=.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/game_player_stats/{id}Get a single game_player_stat by id
Parameters
idpathbigintrequiredPrimary 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.
game_team_stats
nba.game_team_statsEach 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_statsList game_team_stats for NBA
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
team_idquerybigintoptionalFilter by team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/game_team_stats/{id}Get a single game_team_stat by id
Parameters
idpathbigintrequiredPrimary 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.
season_player_stats
nba.season_player_statsSeason 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_statsList season_player_stats for NBA
Requires one of:
season_id or player_id — requests satisfying none of these return 400.Parameters
season_idquerybigintoptionalFilter to a single season. Defaults to the current season.
player_idquerybigintoptionalFilter to a single player.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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=2027'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/jsonGET/api/v1/nba/season_player_stats/{id}Get a single season_player_stat by id
Parameters
idpathbigintrequiredPrimary 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.
Odds
game_lines
nba.game_linesNBA 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_linesList game_lines for NBA
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
season_idquerybigintoptionalFilter by season.
operator_idquerybigintoptionalFilter 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_openingquerybooleanoptionalFilter to opening lines only. Reliable from the 2025-26 season; earlier seasons largely lack opener flags.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/game_lines/{id}Get a single game_line by id
Parameters
idpathbigintrequiredPrimary 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.
game_period_lines
nba.game_period_linesPeriod-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_linesList game_period_lines for NBA
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
season_idquerybigintoptionalFilter by season.
operator_idquerybigintoptionalFilter by sportsbook.
period_codequerystringoptionalFilter by period (1H, 2H, Q1, Q2, Q3, Q4).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/game_period_lines/{id}Get a single game_period_line by id
Parameters
idpathbigintrequiredPrimary 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.
game_player_props
nba.game_player_propsNBA 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_propsList game_player_props for NBA
Requires one of:
game_id or player_id + season_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
player_idquerybigintoptionalFilter to a single player. With season_id: the player's prop history across a season.
season_idquerybigintoptionalFilter by season.
operator_idquerybigintoptionalFilter 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.
categoryquerystringoptionalFilter 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_keyquerystringoptionalFilter 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 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/game_player_props/{id}Get a single game_player_prop by id
Parameters
idpathbigintrequiredPrimary 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.
Lineups & Roster
coaching_staffs
nba.coaching_staffsNBA 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_staffsList coaching_staffs for NBA
Parameters
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/coaching_staffs/{id}Get a single coaching_staff by id
Parameters
idpathbigintrequiredPrimary 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.
team_coaching_staffs
nba.team_coaching_staffsThe 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_staffsList team_coaching_staffs for NBA
Requires one of:
team_id — requests satisfying none of these return 400.Parameters
team_idquerybigintoptionalFilter by team.
season_idquerybigintoptionalFilter to a season.
coach_typequerystringoptionalFilter 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 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/team_coaching_staffs/{id}Get a single team_coaching_staff by id
Parameters
idpathbigintrequiredPrimary 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.
game_team_lineup_stints
nba.game_team_lineup_stintsEach 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_stintsList game_team_lineup_stints for NBA
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
team_idquerybigintoptionalFilter by team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/game_team_lineup_stints/{id}Get a single game_team_lineup_stint by id
Parameters
idpathbigintrequiredPrimary 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.
game_team_rosters
nba.game_team_rostersThe 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_rostersList game_team_rosters for NBA
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
team_idquerybigintoptionalFilter by team.
player_idquerybigintoptionalFilter to a single player.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/game_team_rosters/{id}Get a single game_team_roster by id
Parameters
idpathbigintrequiredPrimary 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.
team_depth_charts
nba.team_depth_chartsEach 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_chartsList team_depth_charts for NBA
Requires one of:
team_id + season_id — requests satisfying none of these return 400.Parameters
team_idquerybigintoptionalFilter by team.
season_idquerybigintoptionalFilter to a season. Defaults to the current season.
positionquerystringoptionalFilter by position (PG, SG, SF, PF, C). Values: C, PF, PG, SF, SG.
dayqueryintegeroptionalSnapshot 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 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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=2027'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/jsonGET/api/v1/nba/team_depth_charts/{id}Get a single team_depth_chart by id
Parameters
idpathbigintrequiredPrimary 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.
Misc
stadiums
nba.stadiumsNBA arenas — current home venues and historical buildings the league's teams have played in.
GET/api/v1/nba/stadiumsList stadiums for NBA
Parameters
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/stadiums/{id}Get a single stadium by id
Parameters
idpathbigintrequiredPrimary 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.
referees
nba.refereesNBA officials — the three-person crew of referees who work each game.
GET/api/v1/nba/refereesList referees for NBA
Parameters
activequerybooleanoptionalFilter by active status (defaults to true to show only currently-active rows; pass active=false to include inactive).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/referees/{id}Get a single referee by id
Parameters
idpathbigintrequiredPrimary 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.
broadcasters
nba.broadcastersNetworks, 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/broadcastersList broadcasters for NBA
Parameters
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/broadcasters/{id}Get a single broadcaster by id
Parameters
idpathbigintrequiredPrimary 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.
operator_team_lookups
nba.operator_team_lookupsHow 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_lookupsList operator_team_lookups for NBA
Requires one of:
operator_id — requests satisfying none of these return 400.Parameters
operator_idquerybigintoptionalFilter by operator.
team_idquerybigintoptionalFilter by team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/operator_team_lookups/{id}Get a single operator_team_lookup by id
Parameters
idpathbigintrequiredPrimary 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.
playoffs
nba.playoffsThe 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/playoffsList playoffs for NBA
Parameters
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/playoffs/{id}Get a single playoff by id
Parameters
idpathbigintrequiredPrimary 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.
game_broadcasters
nba.game_broadcastersWhich networks broadcast each NBA game — the national TV partner, home and away regional carriers, radio calls, and streaming providers.
GET/api/v1/nba/game_broadcastersList game_broadcasters for NBA
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
broadcaster_idquerybigintoptionalFilter by broadcaster.
broadcaster_typequerystringoptionalFilter by broadcaster role. Values: awayTv, homeTv, nationalTv.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/game_broadcasters/{id}Get a single game_broadcaster by id
Parameters
idpathbigintrequiredPrimary 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.
game_referees
nba.game_refereesThe officiating crew assigned to each NBA game — the three referees who worked the matchup.
GET/api/v1/nba/game_refereesList game_referees for NBA
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
referee_idquerybigintoptionalFilter by referee.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/game_referees/{id}Get a single game_referee by id
Parameters
idpathbigintrequiredPrimary 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.
operator_player_lookups
nba.operator_player_lookupsHow 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_lookupsList operator_player_lookups for NBA
Requires one of:
operator_id — requests satisfying none of these return 400.Parameters
operator_idquerybigintoptionalFilter by operator id: 1 DraftKings, 2 FanDuel, 3 Yahoo, 13 sportsdata.io, 83 stats.nba.com.
player_idquerybigintoptionalFilter to a single player.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/operator_player_lookups/{id}Get a single operator_player_lookup by id
Parameters
idpathbigintrequiredPrimary 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.
player_news
nba.player_newsNews about NBA players — trades, injuries, lineup decisions, suspensions, and general beat-reporter updates.
GET/api/v1/nba/player_newsList player_news for NBA
Requires one of:
player_id or team_id — requests satisfying none of these return 400.Parameters
player_idquerybigintoptionalFilter to news about a single player.
team_idquerybigintoptionalFilter by team — a team-level news feed, newest first.
categoryquerystringoptionalFilter by news category (injury, transaction, lineup, general). Values: general, injury, lineup, transaction.
news_timequerytimestamptzoptionalFilter 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 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/player_news/{id}Get a single player_new by id
Parameters
idpathbigintrequiredPrimary 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.
team_game_contexts
nba.team_game_contextsSituational 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_contextsList team_game_contexts for NBA
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
team_idquerybigintoptionalFilter by team.
season_idquerybigintoptionalFilter by season.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn 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/jsonGET/api/v1/nba/team_game_contexts/{id}Get a single team_game_context by id
Parameters
idpathbigintrequiredPrimary 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.