STAT-API

NFL API Reference

Every scheduled and played NFL game — preseason exhibitions, the 18-week regular season, and the playoffs from Wild Card weekend through the Super Bowl — plus the players, teams, coaching staffs, depth charts, injuries, betting markets, and play-by-play behind them.

Main

seasonsnfl.seasons
Each NFL league year, from the opening of training camp through the Super Bowl. The 2025 season refers to the 2025-26 league year, kicking off in early August and ending in February.
GET/api/v1/nfl/seasons
Parameters
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/seasons/{pk_value}'
Responses
200Single season row.application/jsonshow example ▸
404Row not found.
teamsnfl.teams
The 32 NFL franchises plus historical predecessors — teams that have since relocated, renamed, or merged into the current league.
GET/api/v1/nfl/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 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/teams/{pk_value}'
Responses
200Single team row.application/jsonshow example ▸
404Row not found.
playersnfl.players
Every individual who has played in the NFL — current rosters, free agents, retired veterans — plus team-defense entries used for fantasy and DST scoring.
GET/api/v1/nfl/players
Requires one of: team_id or roster_status or gsis_id or primary_position — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
roster_statusquerystringoptional
Filter by canonical roster status (shared cross-league vocabulary). The "on a team now" set is {active, injured_reserve, practice_squad, reserve, suspended}. Values: active, injured_reserve, practice_squad, reserve, suspended, free_agent, waived, retired, inactive.
gsis_idquerystringoptional
Filter by GSIS external player id.
primary_positionquerystringoptional
Filter by player primary position (e.g. QB, WR, RB). Values: DB, DL, DST, K, LB, LS, OL, P, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/players?team_id=1'
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
GET/api/v1/nfl/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/nfl/players/{pk_value}'
Responses
200Single player row.application/jsonshow example ▸
404Row not found.
gamesnfl.games
Every scheduled and played NFL game — preseason exhibitions, the 18-week regular season, the playoffs from Wild Card weekend through the Super Bowl.
GET/api/v1/nfl/games
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
weekqueryintegeroptional
Filter by week of the season. Range syntax: week__gte=, week__lte=, week__between=.
season_typequerystringoptional
Filter by season phase. Postseason round detail is in `playoff_round`. Values: postseason, preseason, regular_season.
home_team_idquerybigintoptional
Filter by home team.
away_team_idquerybigintoptional
Filter by away team.
statusquerystringoptional
Filter by row status.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/games/{pk_value}'
Responses
200Single game row.application/jsonshow example ▸
404Row not found.

Plays

game_drivesnfl.game_drives
Each offensive possession in an NFL game — how the drive started, how it ended (touchdown, field goal, punt, turnover), starting and ending field position, time of possession, and play count.
GET/api/v1/nfl/game_drives
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
possession_team_idquerybigintoptional
Filter by team in possession.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/game_drives?game_id=1'
Responses
200game_drives rows matching the declared filter set, wrapped in { game_drives, 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
GET/api/v1/nfl/game_drives/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_drive 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/nfl/game_drives/{pk_value}'
Responses
200Single game_drive row.application/jsonshow example ▸
404Row not found.
play_by_playsnfl.play_by_plays
Every individual play of every NFL game — what happened, where on the field, with what result. Includes pass and rush attempts, penalties, special teams, EPA, win probability, and the full game-clock and down-and-distance context.
GET/api/v1/nfl/play_by_plays
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game. Required — querying NFL play-by-play across all games is impractical (millions of rows).
possession_team_idquerybigintoptional
Filter by team in possession.
defensive_team_idquerybigintoptional
Filter by team on defense.
drive_idquerybigintoptional
Filter by drive.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/play_by_plays/{pk_value}'
Responses
200Single play_by_play row.application/jsonshow example ▸
404Row not found.
play_participationsnfl.play_participations
The personnel and pre-snap setup on every NFL play (one row per play, not per player) — offensive formation, personnel grouping, defensive look, coverage scheme, and the on-field player ids as comma-joined text columns. 2024 season coverage.
GET/api/v1/nfl/play_participations
Requires one of: play_id or game_id — requests satisfying none of these return 400.
Parameters
play_idquerystringoptional
Filter by play.
game_idquerybigintoptional
Filter to a single game.
possession_team_idquerybigintoptional
Filter by team in possession.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/play_participations?play_id=example'
Responses
200play_participations rows matching the declared filter set, wrapped in { play_participations, 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
GET/api/v1/nfl/play_participations/{id}
Parameters
idpathbigintrequired
Primary key (id) of the play_participation 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/nfl/play_participations/{pk_value}'
Responses
200Single play_participation row.application/jsonshow example ▸
404Row not found.

Stats

season_team_statsnfl.season_team_stats
Season totals for each NFL team — wins and losses, points scored and allowed, yards on offense and defense, turnovers, red-zone and down-conversion efficiency, kicking accuracy. Regular-season games only.
GET/api/v1/nfl/season_team_stats
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/season_team_stats/{pk_value}'
Responses
200Single season_team_stat row.application/jsonshow example ▸
404Row not found.
game_player_statsnfl.game_player_stats
Each NFL player's stat line for each game — every passing, rushing, receiving, defensive, special-teams, and scoring statistic recorded that day.
GET/api/v1/nfl/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.
team_idquerybigintoptional
Filter by team.
opponent_team_idquerybigintoptional
Filter by opponent team.
positionquerystringoptional
Filter by player position. Values: DB, DEF, DL, K, LB, LS, OL, P, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/game_player_stats/{pk_value}'
Responses
200Single game_player_stat row.application/jsonshow example ▸
404Row not found.
game_team_statsnfl.game_team_stats
Each NFL team's stat line for each game — the same offensive, defensive, scoring, and situational counters as the season aggregate, broken out per game with home/away context.
GET/api/v1/nfl/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 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/game_team_stats/{pk_value}'
Responses
200Single game_team_stat row.application/jsonshow example ▸
404Row not found.
season_player_statsnfl.season_player_stats
Season totals for each NFL player — passing, rushing, receiving, defensive, special-teams, and scoring stats accumulated across the year. Regular-season games only; playoff totals are not included.
GET/api/v1/nfl/season_player_stats
Requires one of: season_id or player_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/season_player_stats/{pk_value}'
Responses
200Single season_player_stat row.application/jsonshow example ▸
404Row not found.

Advanced Stats

game_player_firstdown_statsnfl.game_player_firstdown_stats
Per-game player stats restricted to first-down plays — the same first-down production breakouts as the season aggregate, for each individual game.
GET/api/v1/nfl/game_player_firstdown_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.
team_idquerybigintoptional
Filter by team.
opponent_team_idquerybigintoptional
Filter by opponent team.
positionquerystringoptional
Filter by player position. Values: DB, DEF, DL, LB, OL, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/game_player_firstdown_stats?game_id=1'
Responses
200game_player_firstdown_stats rows matching the declared filter set, wrapped in { game_player_firstdown_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
GET/api/v1/nfl/game_player_firstdown_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_firstdown_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/nfl/game_player_firstdown_stats/{pk_value}'
Responses
200Single game_player_firstdown_stat row.application/jsonshow example ▸
404Row not found.
game_player_ngs_passingsnfl.game_player_ngs_passings
NFL Next Gen Stats for quarterbacks per game — RFID-tracked passing metrics like time to throw, average depth of target, completed air yards, on-target throw rate, and aggressiveness against tight coverage.
GET/api/v1/nfl/game_player_ngs_passings
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.
team_idquerybigintoptional
Filter by team.
seasonqueryintegeroptional
Filter by season start year.
weekqueryintegeroptional
Filter by week of the season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/game_player_ngs_passings?game_id=1'
Responses
200game_player_ngs_passings rows matching the declared filter set, wrapped in { game_player_ngs_passings, 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
GET/api/v1/nfl/game_player_ngs_passings/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_ngs_passing 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/nfl/game_player_ngs_passings/{pk_value}'
Responses
200Single game_player_ngs_passing row.application/jsonshow example ▸
404Row not found.
game_player_ngs_receivingsnfl.game_player_ngs_receivings
NFL Next Gen Stats for receivers per game — RFID-tracked receiving metrics like separation at the throw, cushion at the snap, target separation, and yards over expected.
GET/api/v1/nfl/game_player_ngs_receivings
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.
team_idquerybigintoptional
Filter by team.
seasonqueryintegeroptional
Filter by season start year.
weekqueryintegeroptional
Filter by week of the season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/game_player_ngs_receivings?game_id=1'
Responses
200game_player_ngs_receivings rows matching the declared filter set, wrapped in { game_player_ngs_receivings, 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
GET/api/v1/nfl/game_player_ngs_receivings/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_ngs_receiving 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/nfl/game_player_ngs_receivings/{pk_value}'
Responses
200Single game_player_ngs_receiving row.application/jsonshow example ▸
404Row not found.
game_player_ngs_rushingsnfl.game_player_ngs_rushings
NFL Next Gen Stats for ball carriers per game — RFID-tracked rushing metrics like efficiency, expected rushing yards, rushing yards over expected, and time behind the line of scrimmage.
GET/api/v1/nfl/game_player_ngs_rushings
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.
team_idquerybigintoptional
Filter by team.
seasonqueryintegeroptional
Filter by season start year.
weekqueryintegeroptional
Filter by week of the season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/game_player_ngs_rushings?game_id=1'
Responses
200game_player_ngs_rushings rows matching the declared filter set, wrapped in { game_player_ngs_rushings, 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
GET/api/v1/nfl/game_player_ngs_rushings/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_ngs_rushing 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/nfl/game_player_ngs_rushings/{pk_value}'
Responses
200Single game_player_ngs_rushing row.application/jsonshow example ▸
404Row not found.
game_player_pfr_advstatsnfl.game_player_pfr_advstats
Per-game advanced player stats in the Pro Football Reference tradition — drop rates, time under pressure, yards before and after contact, broken tackles, passer rating allowed in coverage.
GET/api/v1/nfl/game_player_pfr_advstats
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
player_idquerybigintoptional
Filter to a single player.
team_idquerybigintoptional
Filter by team.
opponent_team_idquerybigintoptional
Filter by opponent team.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/game_player_pfr_advstats?game_id=1'
Responses
200game_player_pfr_advstats rows matching the declared filter set, wrapped in { game_player_pfr_advstats, 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
GET/api/v1/nfl/game_player_pfr_advstats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_pfr_advstat 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/nfl/game_player_pfr_advstats/{pk_value}'
Responses
200Single game_player_pfr_advstat row.application/jsonshow example ▸
404Row not found.
game_player_redzone_statsnfl.game_player_redzone_stats
Per-game player stats restricted to red-zone plays — the same red-zone breakouts as the season aggregate, for each individual game.
GET/api/v1/nfl/game_player_redzone_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.
team_idquerybigintoptional
Filter by team.
opponent_team_idquerybigintoptional
Filter by opponent team.
positionquerystringoptional
Filter by player position. Values: DB, DEF, DL, K, LB, OL, P, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/game_player_redzone_stats?game_id=1'
Responses
200game_player_redzone_stats rows matching the declared filter set, wrapped in { game_player_redzone_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
GET/api/v1/nfl/game_player_redzone_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_redzone_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/nfl/game_player_redzone_stats/{pk_value}'
Responses
200Single game_player_redzone_stat row.application/jsonshow example ▸
404Row not found.
game_player_thirddown_statsnfl.game_player_thirddown_stats
Per-game player stats restricted to third-down plays — the same third-down breakouts as the season aggregate, for each individual game.
GET/api/v1/nfl/game_player_thirddown_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.
team_idquerybigintoptional
Filter by team.
opponent_team_idquerybigintoptional
Filter by opponent team.
positionquerystringoptional
Filter by player position. Values: DB, DEF, DL, LB, OL, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/game_player_thirddown_stats?game_id=1'
Responses
200game_player_thirddown_stats rows matching the declared filter set, wrapped in { game_player_thirddown_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
GET/api/v1/nfl/game_player_thirddown_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_player_thirddown_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/nfl/game_player_thirddown_stats/{pk_value}'
Responses
200Single game_player_thirddown_stat row.application/jsonshow example ▸
404Row not found.
season_player_firstdown_statsnfl.season_player_firstdown_stats
Season player stats restricted to first-down plays — passing, rushing, and receiving production filtered to first-down attempts, useful for early-down efficiency analysis.
GET/api/v1/nfl/season_player_firstdown_stats
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/season_player_firstdown_stats?season_id=2026'
Responses
200season_player_firstdown_stats rows matching the declared filter set, wrapped in { season_player_firstdown_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
GET/api/v1/nfl/season_player_firstdown_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season_player_firstdown_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/nfl/season_player_firstdown_stats/{pk_value}'
Responses
200Single season_player_firstdown_stat row.application/jsonshow example ▸
404Row not found.
season_player_redzone_statsnfl.season_player_redzone_stats
Season player stats restricted to red-zone plays (inside the opponent's 20) — scoring efficiency, touchdown rate, and yardage production in the most-valuable area of the field.
GET/api/v1/nfl/season_player_redzone_stats
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/season_player_redzone_stats?season_id=2026'
Responses
200season_player_redzone_stats rows matching the declared filter set, wrapped in { season_player_redzone_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
GET/api/v1/nfl/season_player_redzone_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season_player_redzone_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/nfl/season_player_redzone_stats/{pk_value}'
Responses
200Single season_player_redzone_stat row.application/jsonshow example ▸
404Row not found.
season_player_thirddown_statsnfl.season_player_thirddown_stats
Season player stats restricted to third-down plays — conversion rates and production on the down that most often decides whether a drive lives or dies.
GET/api/v1/nfl/season_player_thirddown_stats
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/season_player_thirddown_stats?season_id=2026'
Responses
200season_player_thirddown_stats rows matching the declared filter set, wrapped in { season_player_thirddown_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
GET/api/v1/nfl/season_player_thirddown_stats/{id}
Parameters
idpathbigintrequired
Primary key (id) of the season_player_thirddown_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/nfl/season_player_thirddown_stats/{pk_value}'
Responses
200Single season_player_thirddown_stat row.application/jsonshow example ▸
404Row not found.

Odds

game_linesnfl.game_lines
NFL game betting lines — point spreads, moneylines, and over/under totals. Currently one consensus closing line per game (nflverse-sourced; captured_at equals kickoff time); multi-snapshot open-to-close history is not yet captured. Regular-season games only.
GET/api/v1/nfl/game_lines
Requires one of: game_id or season_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
operator_idquerybigintoptional
Filter by sportsbook / operator.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/game_lines/{pk_value}'
Responses
200Single game_line row.application/jsonshow example ▸
404Row not found.

Lineups & Roster

coaching_staff_tenuresnfl.coaching_staff_tenures
Every coaching change across NFL history with dates — when each head coach, offensive coordinator, and defensive coordinator started, when they left, and why (fired, resigned, promoted, retired).
GET/api/v1/nfl/coaching_staff_tenures
Requires one of: team_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
positionquerystringoptional
Filter by player position. Values: DC, HC, OC.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/coaching_staff_tenures?team_id=1'
Responses
200coaching_staff_tenures rows matching the declared filter set, wrapped in { coaching_staff_tenures, 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
GET/api/v1/nfl/coaching_staff_tenures/{id}
Parameters
idpathbigintrequired
Primary key (id) of the coaching_staff_tenure 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/nfl/coaching_staff_tenures/{pk_value}'
Responses
200Single coaching_staff_tenure row.application/jsonshow example ▸
404Row not found.
coaching_staffsnfl.coaching_staffs
The coaching staff for each NFL team at a given season — head coach, offensive coordinator, defensive coordinator, special teams coordinator, and position coaches.
GET/api/v1/nfl/coaching_staffs
Requires one of: season_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
positionquerystringoptional
Filter by player position.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/coaching_staffs?season_id=2026'
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
GET/api/v1/nfl/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/nfl/coaching_staffs/{pk_value}'
Responses
200Single coaching_staff row.application/jsonshow example ▸
404Row not found.
depth_chart_snapshotsnfl.depth_chart_snapshots
A team's full depth chart captured at a specific moment in the season — the season-opening baseline, plus any week the team published a fresh full chart. For the canonical per-game weekly chart use depth_charts instead; this snapshot/entry pair is the point-in-time scrape representation.
GET/api/v1/nfl/depth_chart_snapshots
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 by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
weekqueryintegeroptional
Filter by week of the season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/depth_chart_snapshots?team_id=1&season_id=2026'
Responses
200depth_chart_snapshots rows matching the declared filter set, wrapped in { depth_chart_snapshots, 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
GET/api/v1/nfl/depth_chart_snapshots/{id}
Parameters
idpathbigintrequired
Primary key (id) of the depth_chart_snapshot 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/nfl/depth_chart_snapshots/{pk_value}'
Responses
200Single depth_chart_snapshot row.application/jsonshow example ▸
404Row not found.
depth_chart_entriesnfl.depth_chart_entries
Where each player sits on the depth chart — position, depth order (starter, second-string, backup), and the formation grouping (offense, defense, special teams). Child rows of depth_chart_snapshots; for the canonical per-game weekly chart use depth_charts instead.
GET/api/v1/nfl/depth_chart_entries
Requires one of: snapshot_id — requests satisfying none of these return 400.
Parameters
snapshot_idquerybigintoptional
Filter by depth-chart snapshot.
player_idquerybigintoptional
Filter to a single player.
positionquerystringoptional
Filter by player position. Values: C, CB, DB, DE, DT, FB, FS, G, H, ILB, K, KR, LB, LCB, LDE, LDT, LG, LILB, LS, LT, MLB, NB, NT, OLB, P, PK, PR, QB, RB, RCB, RDE, RDT, RG, RILB, RT, SLB, SS, T, TE, WLB, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/depth_chart_entries?snapshot_id=1'
Responses
200depth_chart_entries rows matching the declared filter set, wrapped in { depth_chart_entries, 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
GET/api/v1/nfl/depth_chart_entries/{id}
Parameters
idpathbigintrequired
Primary key (id) of the depth_chart_entry 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/nfl/depth_chart_entries/{pk_value}'
Responses
200Single depth_chart_entry row.application/jsonshow example ▸
404Row not found.
depth_chartsnfl.depth_charts
One player's depth-chart slot for a given team in a given NFL week — position, depth order (starter, backup, …), roster status, and game-type context. One row per (game × team × player × depth-position) combination.
GET/api/v1/nfl/depth_charts
Requires one of: team_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
team_idquerybigintoptional
Filter by team.
season_idquerybigintoptional
Filter to a single season.
weekqueryintegeroptional
Filter by week of the season.
player_idquerybigintoptional
Filter to a single player.
positionquerystringoptional
Filter by player position. Values: C, CB, DB, DE, DT, FB, FS, G, ILB, K, LB, LS, MLB, NT, OLB, P, QB, RB, SS, T, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/depth_charts?team_id=1'
Responses
200depth_charts rows matching the declared filter set, wrapped in { 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
GET/api/v1/nfl/depth_charts/{id}
Parameters
idpathbigintrequired
Primary key (id) of the 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/nfl/depth_charts/{pk_value}'
Responses
200Single depth_chart row.application/jsonshow example ▸
404Row not found.
game_team_rostersnfl.game_team_rosters
The gameday roster for each NFL game — every player who suited up that day, who started, who was inactive, and at what position.
GET/api/v1/nfl/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.
positionquerystringoptional
Filter by player position. Values: DB, DL, K, LB, LS, OL, P, QB, RB, TE, WR.
statusquerystringoptional
Filter by game-roster status (readable single-word vocabulary; PracticeSquadReleased covers the nflverse TRC/TRD codes). Values: Active, Cut, Exempt, Inactive, PracticeSquad, PracticeSquadReleased, Reserve, Retired.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/game_team_rosters/{pk_value}'
Responses
200Single game_team_roster row.application/jsonshow example ▸
404Row not found.
game_team_staffsnfl.game_team_staffs
The coaching staff on the sideline for each NFL game — head coach, offensive coordinator, defensive coordinator, for both teams.
GET/api/v1/nfl/game_team_staffs
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 200.
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/nfl/game_team_staffs?game_id=1'
Responses
200game_team_staffs rows matching the declared filter set, wrapped in { game_team_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
GET/api/v1/nfl/game_team_staffs/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_team_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/nfl/game_team_staffs/{pk_value}'
Responses
200Single game_team_staff row.application/jsonshow example ▸
404Row not found.
team_player_rostersnfl.team_player_rosters
Day-by-day player-to-team affiliations across the season — who was on which roster, at what position, on every day from training camp through the Super Bowl.
GET/api/v1/nfl/team_player_rosters
Requires one of: team_id + season_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
player_idquerybigintoptional
Filter to a single player.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
positionquerystringoptional
Filter by player position. Values: DB, DL, K, LB, LS, OL, P, QB, RB, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/team_player_rosters?team_id=1&season_id=2026'
Responses
200team_player_rosters rows matching the declared filter set, wrapped in { team_player_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
GET/api/v1/nfl/team_player_rosters/{id}
Parameters
idpathbigintrequired
Primary key (id) of the team_player_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/nfl/team_player_rosters/{pk_value}'
Responses
200Single team_player_roster row.application/jsonshow example ▸
404Row not found.

Misc

stadiumsnfl.stadiums
Venues that have hosted NFL games — current home stadiums, neutral-site locations like international and Super Bowl venues, and historical fields no longer in use.
GET/api/v1/nfl/stadiums
Parameters
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/stadiums/{pk_value}'
Responses
200Single stadium row.application/jsonshow example ▸
404Row not found.
refereesnfl.referees
NFL on-field officials — the seven-person crew of referees, umpires, head linesmen, line judges, field judges, side judges, and back judges who work each game.
GET/api/v1/nfl/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 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/referees/{pk_value}'
Responses
200Single referee row.application/jsonshow example ▸
404Row not found.
operator_team_lookupsnfl.operator_team_lookups
How each sportsbook and fantasy operator names every NFL team — the mapping from each operator's team code or abbreviation to the unified franchise record.
GET/api/v1/nfl/operator_team_lookups
Requires one of: operator_id — requests satisfying none of these return 400.
Parameters
operator_idquerybigintoptional
Filter by sportsbook / operator.
team_idquerybigintoptional
Filter by team.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/operator_team_lookups/{pk_value}'
Responses
200Single operator_team_lookup row.application/jsonshow example ▸
404Row not found.
playoffsnfl.playoffs
The NFL postseason bracket — Wild Card weekend, the Divisional Round, the Conference Championships, and the Super Bowl, with seeds, scores, and outcomes.
GET/api/v1/nfl/playoffs
Requires one of: season_id or home_team_id or away_team_id or status — requests satisfying none of these return 400.
Parameters
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
home_team_idquerybigintoptional
Filter by home team.
away_team_idquerybigintoptional
Filter by away team.
statusquerystringoptional
Filter by row status.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/playoffs?season_id=2026'
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
GET/api/v1/nfl/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/nfl/playoffs/{pk_value}'
Responses
200Single playoff row.application/jsonshow example ▸
404Row not found.
combine_resultsnfl.combine_results
NFL Scouting Combine results — every prospect's measurables and drill times from the annual Indianapolis combine (height, weight, 40-yard dash, vertical jump, bench press, broad jump, three-cone, shuttle).
GET/api/v1/nfl/combine_results
Requires one of: player_id or season + position — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
seasonqueryintegeroptional
Filter by season start year.
positionquerystringoptional
Filter by player position. Values: C, CB, CB/WR, DE, DT, EDGE, G, K, LB, OT, P, QB, RB, SAF, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/combine_results?player_id=1'
Responses
200combine_results rows matching the declared filter set, wrapped in { combine_results, 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
GET/api/v1/nfl/combine_results/{id}
Parameters
idpathbigintrequired
Primary key (id) of the combine_result 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/nfl/combine_results/{pk_value}'
Responses
200Single combine_result row.application/jsonshow example ▸
404Row not found.
draft_picksnfl.draft_picks
Every NFL Draft selection from the modern draft era — round, pick number, drafting team, college, and the career stats that followed (Pro Bowls, All-Pros, Hall of Fame, total games played, career statistics by position).
GET/api/v1/nfl/draft_picks
Requires one of: season — requests satisfying none of these return 400.
Parameters
seasonqueryintegeroptional
Filter by season start year.
roundqueryintegeroptional
Filter by draft round.
team_idquerybigintoptional
Filter by team.
player_idquerybigintoptional
Filter to a single player.
positionquerystringoptional
Filter by player position. Values: C, CB, DB, DE, DL, DT, FS, G, K, LB, LS, OL, OLB, OT, P, QB, RB, SAF, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/draft_picks?season=1'
Responses
200draft_picks rows matching the declared filter set, wrapped in { draft_picks, 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
GET/api/v1/nfl/draft_picks/{id}
Parameters
idpathbigintrequired
Primary key (id) of the draft_pick 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/nfl/draft_picks/{pk_value}'
Responses
200Single draft_pick row.application/jsonshow example ▸
404Row not found.
game_refereesnfl.game_referees
The officiating crew working each NFL game — who refereed, who umpired, who judged each part of the field.
GET/api/v1/nfl/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.
positionquerystringoptional
Filter by crew position (e.g., `Referee`, `Umpire`).
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/game_referees/{pk_value}'
Responses
200Single game_referee row.application/jsonshow example ▸
404Row not found.
game_weathersnfl.game_weathers
On-field weather throughout each NFL game — temperature, wind, humidity, and precipitation captured at fixed intervals from kickoff. Useful for outdoor-game performance analysis.
GET/api/v1/nfl/game_weathers
Requires one of: game_id — requests satisfying none of these return 400.
Parameters
game_idquerybigintoptional
Filter to a single game.
stadium_idquerybigintoptional
Filter by stadium.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/game_weathers?game_id=1'
Responses
200game_weathers rows matching the declared filter set, wrapped in { game_weathers, 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
GET/api/v1/nfl/game_weathers/{id}
Parameters
idpathbigintrequired
Primary key (id) of the game_weather 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/nfl/game_weathers/{pk_value}'
Responses
200Single game_weather row.application/jsonshow example ▸
404Row not found.
injuriesnfl.injuries
The weekly NFL injury report — every player listed each game week with their practice participation, game-status designation (Out, Doubtful, Questionable, Probable), and the body part affected.
GET/api/v1/nfl/injuries
Requires one of: player_id or season_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
game_idquerybigintoptional
Filter to a single game.
team_idquerybigintoptional
Filter by team.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
weekqueryintegeroptional
Filter by week of the season.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/injuries?player_id=1'
Responses
200injuries rows matching the declared filter set, wrapped in { injuries, 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
GET/api/v1/nfl/injuries/{id}
Parameters
idpathbigintrequired
Primary key (id) of the injury 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/nfl/injuries/{pk_value}'
Responses
200Single injury row.application/jsonshow example ▸
404Row not found.
operator_player_lookupsnfl.operator_player_lookups
How each sportsbook and fantasy operator names every NFL player — the mapping from each operator's own player identifier to a unified player record.
GET/api/v1/nfl/operator_player_lookups
Requires one of: operator_id — requests satisfying none of these return 400.
Parameters
operator_idquerybigintoptional
Filter by sportsbook / operator.
player_idquerybigintoptional
Filter to a single player.
positionquerystringoptional
Filter by player position. Values: C, CB, DB, DE, DEF, DL, DST, DT, FB, G, ILB, K, LB, LS, NT, OL, OLB, OT, P, QB, RB, S, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/operator_player_lookups/{pk_value}'
Responses
200Single operator_player_lookup row.application/jsonshow example ▸
404Row not found.
player_contractsnfl.player_contracts
NFL player contracts — total value, average annual pay, guaranteed money, and salary cap impact for every signed deal, with cap-inflated comparisons across eras.
GET/api/v1/nfl/player_contracts
Requires one of: player_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
team_idquerybigintoptional
Filter by team.
positionquerystringoptional
Filter by player position. Values: C, CB, ED, FB, IDL, K, LB, LG, LS, LT, P, QB, RB, RG, RT, S, TE, WR.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 200.
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/nfl/player_contracts?player_id=1'
Responses
200player_contracts rows matching the declared filter set, wrapped in { player_contracts, 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
GET/api/v1/nfl/player_contracts/{id}
Parameters
idpathbigintrequired
Primary key (id) of the player_contract 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/nfl/player_contracts/{pk_value}'
Responses
200Single player_contract row.application/jsonshow example ▸
404Row not found.
player_newsnfl.player_news
News about NFL players — transactions, injuries, lineup announcements, suspensions, and general beat-reporter updates.
GET/api/v1/nfl/player_news
Requires one of: player_id or team_id — requests satisfying none of these return 400.
Parameters
player_idquerybigintoptional
Filter to a single player.
team_idquerybigintoptional
Filter by team.
categoryquerystringoptional
Filter by category. Values: general, injury, lineup, transaction.
sourcequerystringoptional
Filter by source provider. Values: cbs_sports, espn, sportsdata.
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 200.
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/nfl/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
GET/api/v1/nfl/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/nfl/player_news/{pk_value}'
Responses
200Single player_new row.application/jsonshow example ▸
404Row not found.