NHL API Reference
Every NHL game across the 82-game regular season and the four-round Stanley Cup Playoffs — with the players, forward lines, defensive pairings, goalie depth, scoring plays, penalties, and game-odds behind them. Data coming soon to production.
Main
seasons
nhl.seasonsEach NHL season — preseason exhibitions, the 82-game regular season, and the Stanley Cup Playoffs (Wild Card, Divisional, Conference Finals, Stanley Cup Finals).
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/seasonsList seasons for NHL
Parameters
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(8 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
league_id | stringnullable | — | Official NHL season identifier e.g. — (all-null in sample) |
end_date | timestamptznullable | — | — e.g. — (all-null in sample) |
post_season_start_date | timestamptznullable | — | — e.g. — (all-null in sample) |
regular_season_start_date | timestamptznullable | — | — e.g. — (all-null in sample) |
stanley_cup_finals_date | timestamptznullable | — | — e.g. — (all-null in sample) |
start_date | timestamptz | — | — e.g. — (all-null in sample) |
start_year | integer | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/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/nhl/seasons/{pk_value}'Responses
200Single season row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(8 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
league_id | stringnullable | — | Official NHL season identifier e.g. — (all-null in sample) |
end_date | timestamptznullable | — | — e.g. — (all-null in sample) |
post_season_start_date | timestamptznullable | — | — e.g. — (all-null in sample) |
regular_season_start_date | timestamptznullable | — | — e.g. — (all-null in sample) |
stanley_cup_finals_date | timestamptznullable | — | — e.g. — (all-null in sample) |
start_date | timestamptz | — | — e.g. — (all-null in sample) |
start_year | integer | — | — e.g. — (all-null in sample) |
teams
nhl.teamsThe 32 NHL franchises, organized into the Eastern and Western Conferences with two divisions each (Atlantic, Metropolitan, Central, Pacific).
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/teamsList teams for NHL
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 5000.
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/nhl/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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(18 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
arena_id | bigintnullable | — e.g. — (all-null in sample) | |
league_team_id | integernullable | — | Official NHL team ID from api-web.nhle.com e.g. — (all-null in sample) |
abbreviation | string | — | — e.g. — (all-null in sample) |
active | boolean | — | — e.g. — (all-null in sample) |
city | string | — | — e.g. — (all-null in sample) |
conference | string | — | — e.g. — (all-null in sample) |
division | string | — | — e.g. — (all-null in sample) |
full_name | string | — | — e.g. — (all-null in sample) |
head_coach | stringnullable | — | — e.g. — (all-null in sample) |
logo_url | stringnullable | — | URL to team logo image e.g. — (all-null in sample) |
name | string | — | — e.g. — (all-null in sample) |
primary_color | stringnullable | — | — e.g. — (all-null in sample) |
quaternary_color | stringnullable | — | — e.g. — (all-null in sample) |
secondary_color | stringnullable | — | — e.g. — (all-null in sample) |
tertiary_color | stringnullable | — | — e.g. — (all-null in sample) |
wikipedia_logo_url | stringnullable | — | — e.g. — (all-null in sample) |
wikipedia_wordmark_url | stringnullable | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/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/nhl/teams/{pk_value}'Responses
200Single team row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(18 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
arena_id | bigintnullable | — e.g. — (all-null in sample) | |
league_team_id | integernullable | — | Official NHL team ID from api-web.nhle.com e.g. — (all-null in sample) |
abbreviation | string | — | — e.g. — (all-null in sample) |
active | boolean | — | — e.g. — (all-null in sample) |
city | string | — | — e.g. — (all-null in sample) |
conference | string | — | — e.g. — (all-null in sample) |
division | string | — | — e.g. — (all-null in sample) |
full_name | string | — | — e.g. — (all-null in sample) |
head_coach | stringnullable | — | — e.g. — (all-null in sample) |
logo_url | stringnullable | — | URL to team logo image e.g. — (all-null in sample) |
name | string | — | — e.g. — (all-null in sample) |
primary_color | stringnullable | — | — e.g. — (all-null in sample) |
quaternary_color | stringnullable | — | — e.g. — (all-null in sample) |
secondary_color | stringnullable | — | — e.g. — (all-null in sample) |
tertiary_color | stringnullable | — | — e.g. — (all-null in sample) |
wikipedia_logo_url | stringnullable | — | — e.g. — (all-null in sample) |
wikipedia_wordmark_url | stringnullable | — | — e.g. — (all-null in sample) |
players
nhl.playersEvery individual who has played in the NHL — current rosters, AHL call-ups, free agents, and retired players, with their shooting hand, position, and home country.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/playersList players for NHL
Requires one of:
team_id or 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. NHL source granularity is coarse: "active" (on a current team roster), "free_agent" (no team), "inactive" (not currently rostered); injured_reserve appears where derivable. The "on a team now" set is {active, injured_reserve}. Values: active, injured_reserve, inactive, free_agent.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(35 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
draft_team_id | bigintnullable | — e.g. — (all-null in sample) | |
league_id | stringnullable | — | Official NHL player identifier e.g. — (all-null in sample) |
league_player_id | integer | — | Official NHL player ID from api-web.nhle.com e.g. — (all-null in sample) |
team_id | bigintnullable | — e.g. — (all-null in sample) | |
birth_city | stringnullable | — | — e.g. — (all-null in sample) |
birth_country | stringnullable | — | — e.g. — (all-null in sample) |
birth_date | datenullable | — | — e.g. — (all-null in sample) |
birth_state | stringnullable | — | — e.g. — (all-null in sample) |
catches | stringnullable | — | — e.g. — (all-null in sample) |
college | stringnullable | — | — e.g. — (all-null in sample) |
draft_overall_pick | integernullable | — | — e.g. — (all-null in sample) |
draft_pick | integernullable | — | — e.g. — (all-null in sample) |
draft_round | integernullable | — | — e.g. — (all-null in sample) |
draft_year | integernullable | — | — e.g. — (all-null in sample) |
experience | integernullable | — | Years of NHL experience e.g. — (all-null in sample) |
first_name | string | — | — e.g. — (all-null in sample) |
full_name | string | — | — e.g. — (all-null in sample) |
height | integernullable | — | Height in inches e.g. — (all-null in sample) |
injury_body_part | stringnullable | — | — e.g. — (all-null in sample) |
injury_notes | stringnullable | — | — e.g. — (all-null in sample) |
injury_start_date | timestamptznullable | — | — e.g. — (all-null in sample) |
injury_status | stringnullable | — | — e.g. — (all-null in sample) |
jersey | stringnullable | — | — e.g. — (all-null in sample) |
last_name | string | — | — e.g. — (all-null in sample) |
nationality | stringnullable | — | — e.g. — (all-null in sample) |
photo_url | stringnullable | — | URL to player headshot image e.g. — (all-null in sample) |
position_category | stringnullable | — | — e.g. — (all-null in sample) |
primary_position | string | — | — e.g. — (all-null in sample) |
rookie_year | integernullable | — | — e.g. — (all-null in sample) |
roster_status | stringnullable | — | Canonical roster status, shared across leagues. NHL source granularity is coarse: "active" (on a current api-web team roster), "free_agent" (no team), "inactive" (not currently rostered); injured_reserve where derivable. The "on a team now" set is {active, injured_reserve}. |
shoots | stringnullable | — | — e.g. — (all-null in sample) |
weight | integernullable | — | Weight in pounds e.g. — (all-null in sample) |
youth_league | stringnullable | — | — e.g. — (all-null in sample) |
youth_team | stringnullable | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/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/nhl/players/{pk_value}'Responses
200Single player row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(35 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
draft_team_id | bigintnullable | — e.g. — (all-null in sample) | |
league_id | stringnullable | — | Official NHL player identifier e.g. — (all-null in sample) |
league_player_id | integer | — | Official NHL player ID from api-web.nhle.com e.g. — (all-null in sample) |
team_id | bigintnullable | — e.g. — (all-null in sample) | |
birth_city | stringnullable | — | — e.g. — (all-null in sample) |
birth_country | stringnullable | — | — e.g. — (all-null in sample) |
birth_date | datenullable | — | — e.g. — (all-null in sample) |
birth_state | stringnullable | — | — e.g. — (all-null in sample) |
catches | stringnullable | — | — e.g. — (all-null in sample) |
college | stringnullable | — | — e.g. — (all-null in sample) |
draft_overall_pick | integernullable | — | — e.g. — (all-null in sample) |
draft_pick | integernullable | — | — e.g. — (all-null in sample) |
draft_round | integernullable | — | — e.g. — (all-null in sample) |
draft_year | integernullable | — | — e.g. — (all-null in sample) |
experience | integernullable | — | Years of NHL experience e.g. — (all-null in sample) |
first_name | string | — | — e.g. — (all-null in sample) |
full_name | string | — | — e.g. — (all-null in sample) |
height | integernullable | — | Height in inches e.g. — (all-null in sample) |
injury_body_part | stringnullable | — | — e.g. — (all-null in sample) |
injury_notes | stringnullable | — | — e.g. — (all-null in sample) |
injury_start_date | timestamptznullable | — | — e.g. — (all-null in sample) |
injury_status | stringnullable | — | — e.g. — (all-null in sample) |
jersey | stringnullable | — | — e.g. — (all-null in sample) |
last_name | string | — | — e.g. — (all-null in sample) |
nationality | stringnullable | — | — e.g. — (all-null in sample) |
photo_url | stringnullable | — | URL to player headshot image e.g. — (all-null in sample) |
position_category | stringnullable | — | — e.g. — (all-null in sample) |
primary_position | string | — | — e.g. — (all-null in sample) |
rookie_year | integernullable | — | — e.g. — (all-null in sample) |
roster_status | stringnullable | — | Canonical roster status, shared across leagues. NHL source granularity is coarse: "active" (on a current api-web team roster), "free_agent" (no team), "inactive" (not currently rostered); injured_reserve where derivable. The "on a team now" set is {active, injured_reserve}. |
shoots | stringnullable | — | — e.g. — (all-null in sample) |
weight | integernullable | — | Weight in pounds e.g. — (all-null in sample) |
youth_league | stringnullable | — | — e.g. — (all-null in sample) |
youth_team | stringnullable | — | — e.g. — (all-null in sample) |
games
nhl.gamesEvery scheduled and played NHL game — preseason, the 82-game regular season, and the four-round Stanley Cup Playoffs through the Stanley Cup Final.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/gamesList games for NHL
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.
dayqueryintegeroptionalFilter by calendar day (YYYY-MM-DD date) — e.g. day=2026-06-09 for today's slate. season_id defaults to the current season; pass it explicitly for past-season days. Range syntax: day__gte=, day__lte=, day__between=.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(35 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
arena_id | bigintnullable | — e.g. — (all-null in sample) | |
away_team_id | bigint | — e.g. — (all-null in sample) | |
home_team_id | bigint | — e.g. — (all-null in sample) | |
league_game_id | integernullable | — | Official NHL game ID from api-web.nhle.com e.g. — (all-null in sample) |
league_id | stringnullable | — | Official NHL game identifier e.g. — (all-null in sample) |
season_id | bigint | — e.g. — (all-null in sample) | |
attendance | integernullable | — | — e.g. — (all-null in sample) |
away_team_score | integernullable | — | — e.g. — (all-null in sample) |
away_team_score_overtime | integernullable | — | — e.g. — (all-null in sample) |
away_team_score_period1 | integernullable | — | — e.g. — (all-null in sample) |
away_team_score_period2 | integernullable | — | — e.g. — (all-null in sample) |
away_team_score_period3 | integernullable | — | — e.g. — (all-null in sample) |
away_team_series_wins | integernullable | — | — e.g. — (all-null in sample) |
channel | stringnullable | — | — e.g. — (all-null in sample) |
day | integer | — | Calendar day as a YYYYMMDD integer (e.g. 20240915), US Eastern. e.g. — (all-null in sample) |
game_time | timestamptz | — | Scheduled puck drop (timezone-aware). e.g. — (all-null in sample) |
home_team_score | integernullable | — | — e.g. — (all-null in sample) |
home_team_score_overtime | integernullable | — | — e.g. — (all-null in sample) |
home_team_score_period1 | integernullable | — | — e.g. — (all-null in sample) |
home_team_score_period2 | integernullable | — | — e.g. — (all-null in sample) |
home_team_score_period3 | integernullable | — | — e.g. — (all-null in sample) |
home_team_series_wins | integernullable | — | — e.g. — (all-null in sample) |
is_overtime | boolean | — | — e.g. — (all-null in sample) |
is_shootout | boolean | — | — e.g. — (all-null in sample) |
last_play | stringnullable | — | — e.g. — (all-null in sample) |
neutral_site | boolean | — | — e.g. — (all-null in sample) |
overtime_periods | integernullable | — | — e.g. — (all-null in sample) |
period | stringnullable | — | Current period (1, 2, 3, OT, SO, Final) e.g. — (all-null in sample) |
playoff_round | stringnullable | — | First Round, Second Round, Conference Finals, Stanley Cup Final e.g. — (all-null in sample) |
season_type | string | — | Canonical season phase (text). Was integer 1/2/3/4 before the 2026-06-29 normalization. e.g. — (all-null in sample) |
series_game_number | integernullable | — | — e.g. — (all-null in sample) |
status | string | — | — e.g. — (all-null in sample) |
time_remaining_minutes | integernullable | — | — e.g. — (all-null in sample) |
time_remaining_seconds | integernullable | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/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/nhl/games/{pk_value}'Responses
200Single game row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(35 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
arena_id | bigintnullable | — e.g. — (all-null in sample) | |
away_team_id | bigint | — e.g. — (all-null in sample) | |
home_team_id | bigint | — e.g. — (all-null in sample) | |
league_game_id | integernullable | — | Official NHL game ID from api-web.nhle.com e.g. — (all-null in sample) |
league_id | stringnullable | — | Official NHL game identifier e.g. — (all-null in sample) |
season_id | bigint | — e.g. — (all-null in sample) | |
attendance | integernullable | — | — e.g. — (all-null in sample) |
away_team_score | integernullable | — | — e.g. — (all-null in sample) |
away_team_score_overtime | integernullable | — | — e.g. — (all-null in sample) |
away_team_score_period1 | integernullable | — | — e.g. — (all-null in sample) |
away_team_score_period2 | integernullable | — | — e.g. — (all-null in sample) |
away_team_score_period3 | integernullable | — | — e.g. — (all-null in sample) |
away_team_series_wins | integernullable | — | — e.g. — (all-null in sample) |
channel | stringnullable | — | — e.g. — (all-null in sample) |
day | integer | — | Calendar day as a YYYYMMDD integer (e.g. 20240915), US Eastern. e.g. — (all-null in sample) |
game_time | timestamptz | — | Scheduled puck drop (timezone-aware). e.g. — (all-null in sample) |
home_team_score | integernullable | — | — e.g. — (all-null in sample) |
home_team_score_overtime | integernullable | — | — e.g. — (all-null in sample) |
home_team_score_period1 | integernullable | — | — e.g. — (all-null in sample) |
home_team_score_period2 | integernullable | — | — e.g. — (all-null in sample) |
home_team_score_period3 | integernullable | — | — e.g. — (all-null in sample) |
home_team_series_wins | integernullable | — | — e.g. — (all-null in sample) |
is_overtime | boolean | — | — e.g. — (all-null in sample) |
is_shootout | boolean | — | — e.g. — (all-null in sample) |
last_play | stringnullable | — | — e.g. — (all-null in sample) |
neutral_site | boolean | — | — e.g. — (all-null in sample) |
overtime_periods | integernullable | — | — e.g. — (all-null in sample) |
period | stringnullable | — | Current period (1, 2, 3, OT, SO, Final) e.g. — (all-null in sample) |
playoff_round | stringnullable | — | First Round, Second Round, Conference Finals, Stanley Cup Final e.g. — (all-null in sample) |
season_type | string | — | Canonical season phase (text). Was integer 1/2/3/4 before the 2026-06-29 normalization. e.g. — (all-null in sample) |
series_game_number | integernullable | — | — e.g. — (all-null in sample) |
status | string | — | — e.g. — (all-null in sample) |
time_remaining_minutes | integernullable | — | — e.g. — (all-null in sample) |
time_remaining_seconds | integernullable | — | — e.g. — (all-null in sample) |
Plays
penalties
nhl.penaltiesEvery penalty assessed in every NHL game — the player penalized, the infraction (hooking, tripping, slashing, etc.), the minutes assessed (2-minute minor, 4-minute double minor, 5-minute major, game misconduct, match penalty), and the resulting power play.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/penaltiesList penalties for NHL
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
team_idquerybigintoptionalFilter by penalized team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/penalties?game_id=1'Responses
200penalties rows matching the declared filter set, wrapped in { penalties, 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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(12 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
drawn_by_player_id | bigintnullable | — e.g. — (all-null in sample) | |
game_id | bigint | — e.g. — (all-null in sample) | |
penalty_id | integer | — | — e.g. — (all-null in sample) |
player_id | bigintnullable | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
description | stringnullable | — | — e.g. — (all-null in sample) |
is_bench_penalty | boolean | — | — e.g. — (all-null in sample) |
penalty_minutes | integer | — | — e.g. — (all-null in sample) |
penalty_type | string | — | — e.g. — (all-null in sample) |
period_number | integer | — | — e.g. — (all-null in sample) |
time_remaining | string | — | Time remaining in period (MM:SS) e.g. — (all-null in sample) |
GET/api/v1/nhl/penalties/{id}Get a single penalty by id
Parameters
idpathbigintrequiredPrimary key (id) of the penalty 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/nhl/penalties/{pk_value}'Responses
200Single penalty row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(12 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
drawn_by_player_id | bigintnullable | — e.g. — (all-null in sample) | |
game_id | bigint | — e.g. — (all-null in sample) | |
penalty_id | integer | — | — e.g. — (all-null in sample) |
player_id | bigintnullable | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
description | stringnullable | — | — e.g. — (all-null in sample) |
is_bench_penalty | boolean | — | — e.g. — (all-null in sample) |
penalty_minutes | integer | — | — e.g. — (all-null in sample) |
penalty_type | string | — | — e.g. — (all-null in sample) |
period_number | integer | — | — e.g. — (all-null in sample) |
time_remaining | string | — | Time remaining in period (MM:SS) e.g. — (all-null in sample) |
periods
nhl.periodsPer-period scores for every NHL game — the three regulation periods plus any overtime and the shootout, with the away and home goals in each. (Shots and penalties per period are not carried here.)
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/periodsList periods for NHL
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/periods?game_id=1'Responses
200periods rows matching the declared filter set, wrapped in { periods, 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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(8 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigint | — e.g. — (all-null in sample) | |
league_game_id | integer | — | Official NHL game ID from api-web.nhle.com (matches nhl.games.league_game_id). e.g. — (all-null in sample) |
period_id | integer | — | — e.g. — (all-null in sample) |
away_team_score | integer | — | — e.g. — (all-null in sample) |
home_team_score | integer | — | — e.g. — (all-null in sample) |
name | string | — | 1, 2, 3, OT, OT2, SO e.g. — (all-null in sample) |
period_number | integer | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/periods/{id}Get a single period by id
Parameters
idpathbigintrequiredPrimary key (id) of the period 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/nhl/periods/{pk_value}'Responses
200Single period row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(8 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigint | — e.g. — (all-null in sample) | |
league_game_id | integer | — | Official NHL game ID from api-web.nhle.com (matches nhl.games.league_game_id). e.g. — (all-null in sample) |
period_id | integer | — | — e.g. — (all-null in sample) |
away_team_score | integer | — | — e.g. — (all-null in sample) |
home_team_score | integer | — | — e.g. — (all-null in sample) |
name | string | — | 1, 2, 3, OT, OT2, SO e.g. — (all-null in sample) |
period_number | integer | — | — e.g. — (all-null in sample) |
scoring_plays
nhl.scoring_playsEvery goal scored in every NHL game — the scorer, the assists, the goaltender beaten, the strength (even strength, power play, short-handed), and the score state when the goal went in.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/scoring_playsList scoring_plays for NHL
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
team_idquerybigintoptionalFilter by scoring team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/scoring_plays?game_id=1'Responses
200scoring_plays rows matching the declared filter set, wrapped in { scoring_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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(13 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigint | — e.g. — (all-null in sample) | |
primary_assist_player_id | bigintnullable | — e.g. — (all-null in sample) | |
scored_by_player_id | bigintnullable | — e.g. — (all-null in sample) | |
scoring_play_id | integer | — | — e.g. — (all-null in sample) |
secondary_assist_player_id | bigintnullable | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
away_team_score | integer | — | — e.g. — (all-null in sample) |
description | stringnullable | — | — e.g. — (all-null in sample) |
goal_type | stringnullable | — | — e.g. — (all-null in sample) |
home_team_score | integer | — | — e.g. — (all-null in sample) |
period_number | integer | — | — e.g. — (all-null in sample) |
time_remaining | string | — | Time remaining in period (MM:SS) e.g. — (all-null in sample) |
GET/api/v1/nhl/scoring_plays/{id}Get a single scoring_play by id
Parameters
idpathbigintrequiredPrimary key (id) of the scoring_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/nhl/scoring_plays/{pk_value}'Responses
200Single scoring_play row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(13 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigint | — e.g. — (all-null in sample) | |
primary_assist_player_id | bigintnullable | — e.g. — (all-null in sample) | |
scored_by_player_id | bigintnullable | — e.g. — (all-null in sample) | |
scoring_play_id | integer | — | — e.g. — (all-null in sample) |
secondary_assist_player_id | bigintnullable | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
away_team_score | integer | — | — e.g. — (all-null in sample) |
description | stringnullable | — | — e.g. — (all-null in sample) |
goal_type | stringnullable | — | — e.g. — (all-null in sample) |
home_team_score | integer | — | — e.g. — (all-null in sample) |
period_number | integer | — | — e.g. — (all-null in sample) |
time_remaining | string | — | Time remaining in period (MM:SS) e.g. — (all-null in sample) |
Stats
operator_team_lookups
nhl.operator_team_lookupsHow each sportsbook and fantasy operator names every NHL team — the mapping from each operator's team code to the unified franchise record.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/operator_team_lookupsList operator_team_lookups for NHL
Requires one of:
operator_id — requests satisfying none of these return 400.Parameters
operator_idquerybigintoptionalFilter by operator.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(6 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
operator_id | bigint | Operator id: 1 DraftKings, 2 FanDuel, 3 Yahoo, 13 sportsdata.io. e.g. — (all-null in sample) | |
operator_team_id | string | — | External team ID from operator e.g. — (all-null in sample) |
team_id | bigint | Internal nhl.teams.id reference e.g. — (all-null in sample) | |
abbreviation | stringnullable | — | Team abbreviation for reconciliation e.g. — (all-null in sample) |
team_name | stringnullable | — | Team name for reconciliation e.g. — (all-null in sample) |
GET/api/v1/nhl/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/nhl/operator_team_lookups/{pk_value}'Responses
200Single operator_team_lookup row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(6 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
operator_id | bigint | Operator id: 1 DraftKings, 2 FanDuel, 3 Yahoo, 13 sportsdata.io. e.g. — (all-null in sample) | |
operator_team_id | string | — | External team ID from operator e.g. — (all-null in sample) |
team_id | bigint | Internal nhl.teams.id reference e.g. — (all-null in sample) | |
abbreviation | stringnullable | — | Team abbreviation for reconciliation e.g. — (all-null in sample) |
team_name | stringnullable | — | Team name for reconciliation e.g. — (all-null in sample) |
season_team_stats
nhl.season_team_statsSeason totals for each NHL team — wins, losses, overtime losses, points, goals for and against, shooting percentage, save percentage, power-play and penalty-kill efficiency, faceoff percentages.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/season_team_statsList season_team_stats for NHL
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 5000.
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/nhl/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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(36 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
season_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
blocked_shots | integer | — | — e.g. — (all-null in sample) |
faceoff_losses | integer | — | — e.g. — (all-null in sample) |
faceoff_percentage | decimal | — | — e.g. — (all-null in sample) |
faceoff_wins | integer | — | — e.g. — (all-null in sample) |
games_played | integer | — | — e.g. — (all-null in sample) |
giveaways | integer | — | — e.g. — (all-null in sample) |
goal_differential | integer | — | — e.g. — (all-null in sample) |
goals_against | integer | — | — e.g. — (all-null in sample) |
goals_against_average | decimal | — | — e.g. — (all-null in sample) |
goals_against_per_game | decimal | — | — e.g. — (all-null in sample) |
goals_for | integer | — | — e.g. — (all-null in sample) |
goals_per_game | decimal | — | — e.g. — (all-null in sample) |
hits | integer | — | — e.g. — (all-null in sample) |
losses | integer | — | — e.g. — (all-null in sample) |
overtime_losses | integer | — | — e.g. — (all-null in sample) |
penalty_kill_goals_against | integer | — | — e.g. — (all-null in sample) |
penalty_kill_percentage | decimal | — | — e.g. — (all-null in sample) |
penalty_minutes | integer | — | — e.g. — (all-null in sample) |
power_play_goals | integer | — | — e.g. — (all-null in sample) |
power_play_opportunities | integer | — | — e.g. — (all-null in sample) |
power_play_percentage | decimal | — | — e.g. — (all-null in sample) |
pts | integer | — | — e.g. — (all-null in sample) |
pts_percentage | decimal | — | — e.g. — (all-null in sample) |
save_percentage | decimal | — | — e.g. — (all-null in sample) |
season_type | string | — | Canonical season phase (text). Was integer 1/2/3 before the 2026-06-29 normalization. e.g. — (all-null in sample) |
shooting_percentage | decimal | — | — e.g. — (all-null in sample) |
short_handed_goals | integer | — | — e.g. — (all-null in sample) |
shots_against | integer | — | — e.g. — (all-null in sample) |
shots_for | integer | — | — e.g. — (all-null in sample) |
shutouts | integer | — | — e.g. — (all-null in sample) |
takeaways | integer | — | — e.g. — (all-null in sample) |
times_shorthanded | integer | — | — e.g. — (all-null in sample) |
wins | integer | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/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/nhl/season_team_stats/{pk_value}'Responses
200Single season_team_stat row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(36 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
season_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
blocked_shots | integer | — | — e.g. — (all-null in sample) |
faceoff_losses | integer | — | — e.g. — (all-null in sample) |
faceoff_percentage | decimal | — | — e.g. — (all-null in sample) |
faceoff_wins | integer | — | — e.g. — (all-null in sample) |
games_played | integer | — | — e.g. — (all-null in sample) |
giveaways | integer | — | — e.g. — (all-null in sample) |
goal_differential | integer | — | — e.g. — (all-null in sample) |
goals_against | integer | — | — e.g. — (all-null in sample) |
goals_against_average | decimal | — | — e.g. — (all-null in sample) |
goals_against_per_game | decimal | — | — e.g. — (all-null in sample) |
goals_for | integer | — | — e.g. — (all-null in sample) |
goals_per_game | decimal | — | — e.g. — (all-null in sample) |
hits | integer | — | — e.g. — (all-null in sample) |
losses | integer | — | — e.g. — (all-null in sample) |
overtime_losses | integer | — | — e.g. — (all-null in sample) |
penalty_kill_goals_against | integer | — | — e.g. — (all-null in sample) |
penalty_kill_percentage | decimal | — | — e.g. — (all-null in sample) |
penalty_minutes | integer | — | — e.g. — (all-null in sample) |
power_play_goals | integer | — | — e.g. — (all-null in sample) |
power_play_opportunities | integer | — | — e.g. — (all-null in sample) |
power_play_percentage | decimal | — | — e.g. — (all-null in sample) |
pts | integer | — | — e.g. — (all-null in sample) |
pts_percentage | decimal | — | — e.g. — (all-null in sample) |
save_percentage | decimal | — | — e.g. — (all-null in sample) |
season_type | string | — | Canonical season phase (text). Was integer 1/2/3 before the 2026-06-29 normalization. e.g. — (all-null in sample) |
shooting_percentage | decimal | — | — e.g. — (all-null in sample) |
short_handed_goals | integer | — | — e.g. — (all-null in sample) |
shots_against | integer | — | — e.g. — (all-null in sample) |
shots_for | integer | — | — e.g. — (all-null in sample) |
shutouts | integer | — | — e.g. — (all-null in sample) |
takeaways | integer | — | — e.g. — (all-null in sample) |
times_shorthanded | integer | — | — e.g. — (all-null in sample) |
wins | integer | — | — e.g. — (all-null in sample) |
standings
nhl.standingsCurrent conference and division standings for the NHL season — wins, losses, overtime losses, points, points percentage, games behind, and home/away splits. One snapshot per team per season (no as-of-date history).
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/standingsList standings for NHL
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 5000.
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/nhl/standings?season_id=2026'Responses
200standings rows matching the declared filter set, wrapped in { 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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(36 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
season_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
away_losses | integer | — | — e.g. — (all-null in sample) |
away_overtime_losses | integer | — | — e.g. — (all-null in sample) |
away_wins | integer | — | — e.g. — (all-null in sample) |
clinched_conference | boolean | — | — e.g. — (all-null in sample) |
clinched_division | boolean | — | — e.g. — (all-null in sample) |
clinched_playoffs | boolean | — | — e.g. — (all-null in sample) |
clinched_presidents_trophy | boolean | — | — e.g. — (all-null in sample) |
conference | string | — | — e.g. — (all-null in sample) |
conference_rank | integer | — | — e.g. — (all-null in sample) |
division | string | — | — e.g. — (all-null in sample) |
division_rank | integer | — | — e.g. — (all-null in sample) |
games_played | integer | — | — e.g. — (all-null in sample) |
goal_differential | integer | — | — e.g. — (all-null in sample) |
goals_against | integer | — | — e.g. — (all-null in sample) |
goals_for | integer | — | — e.g. — (all-null in sample) |
home_losses | integer | — | — e.g. — (all-null in sample) |
home_overtime_losses | integer | — | — e.g. — (all-null in sample) |
home_wins | integer | — | — e.g. — (all-null in sample) |
last_10_losses | integer | — | — e.g. — (all-null in sample) |
last_10_overtime_losses | integer | — | — e.g. — (all-null in sample) |
last_10_wins | integer | — | — e.g. — (all-null in sample) |
losses | integer | — | — e.g. — (all-null in sample) |
overtime_losses | integer | — | — e.g. — (all-null in sample) |
pts | integer | — | — e.g. — (all-null in sample) |
pts_percentage | decimal | — | — e.g. — (all-null in sample) |
rank | integer | — | — e.g. — (all-null in sample) |
regulation_wins | integer | — | — e.g. — (all-null in sample) |
season_type | string | — | — e.g. — (all-null in sample) |
shootout_losses | integer | — | — e.g. — (all-null in sample) |
shootout_wins | integer | — | — e.g. — (all-null in sample) |
streak | stringnullable | — | Current streak (W3, L2, OTL1) e.g. — (all-null in sample) |
wild_card_rank | integernullable | — | — e.g. — (all-null in sample) |
wins | integer | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/standings/{id}Get a single standing by id
Parameters
idpathbigintrequiredPrimary key (id) of the 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/nhl/standings/{pk_value}'Responses
200Single standing row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(36 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
season_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
away_losses | integer | — | — e.g. — (all-null in sample) |
away_overtime_losses | integer | — | — e.g. — (all-null in sample) |
away_wins | integer | — | — e.g. — (all-null in sample) |
clinched_conference | boolean | — | — e.g. — (all-null in sample) |
clinched_division | boolean | — | — e.g. — (all-null in sample) |
clinched_playoffs | boolean | — | — e.g. — (all-null in sample) |
clinched_presidents_trophy | boolean | — | — e.g. — (all-null in sample) |
conference | string | — | — e.g. — (all-null in sample) |
conference_rank | integer | — | — e.g. — (all-null in sample) |
division | string | — | — e.g. — (all-null in sample) |
division_rank | integer | — | — e.g. — (all-null in sample) |
games_played | integer | — | — e.g. — (all-null in sample) |
goal_differential | integer | — | — e.g. — (all-null in sample) |
goals_against | integer | — | — e.g. — (all-null in sample) |
goals_for | integer | — | — e.g. — (all-null in sample) |
home_losses | integer | — | — e.g. — (all-null in sample) |
home_overtime_losses | integer | — | — e.g. — (all-null in sample) |
home_wins | integer | — | — e.g. — (all-null in sample) |
last_10_losses | integer | — | — e.g. — (all-null in sample) |
last_10_overtime_losses | integer | — | — e.g. — (all-null in sample) |
last_10_wins | integer | — | — e.g. — (all-null in sample) |
losses | integer | — | — e.g. — (all-null in sample) |
overtime_losses | integer | — | — e.g. — (all-null in sample) |
pts | integer | — | — e.g. — (all-null in sample) |
pts_percentage | decimal | — | — e.g. — (all-null in sample) |
rank | integer | — | — e.g. — (all-null in sample) |
regulation_wins | integer | — | — e.g. — (all-null in sample) |
season_type | string | — | — e.g. — (all-null in sample) |
shootout_losses | integer | — | — e.g. — (all-null in sample) |
shootout_wins | integer | — | — e.g. — (all-null in sample) |
streak | stringnullable | — | Current streak (W3, L2, OTL1) e.g. — (all-null in sample) |
wild_card_rank | integernullable | — | — e.g. — (all-null in sample) |
wins | integer | — | — e.g. — (all-null in sample) |
game_player_stats
nhl.game_player_statsEach NHL player's stat line for each game — goals, assists, plus-minus, shots on goal, hits, blocks, penalties in minutes, power-play points, time on ice, plus the goaltender line (saves, shots against, goals against, save percentage).
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/game_player_statsList game_player_stats for NHL
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.
team_idquerybigintoptionalFilter by team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(67 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigint | — e.g. — (all-null in sample) | |
opponent_id | bigintnullable | — | — e.g. — (all-null in sample) |
player_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
assists | integer | — | — e.g. — (all-null in sample) |
blocked_shots | integer | — | — e.g. — (all-null in sample) |
empty_net_goals | integer | — | — e.g. — (all-null in sample) |
even_strength_assists | integer | — | — e.g. — (all-null in sample) |
even_strength_goals | integer | — | — e.g. — (all-null in sample) |
even_strength_time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
faceoff_percentage | decimal | — | — e.g. — (all-null in sample) |
faceoffs_lost | integer | — | — e.g. — (all-null in sample) |
faceoffs_won | integer | — | — e.g. — (all-null in sample) |
first_period_goals_against | integer | — | — e.g. — (all-null in sample) |
game_winning_goals | integer | — | — e.g. — (all-null in sample) |
games | integer | — | 1 if player appeared, 0 if not e.g. — (all-null in sample) |
giveaways | integer | — | — e.g. — (all-null in sample) |
goals | integer | — | — e.g. — (all-null in sample) |
goals_against | integer | — | — e.g. — (all-null in sample) |
goals_against_average | decimal | — | — e.g. — (all-null in sample) |
hits | integer | — | — e.g. — (all-null in sample) |
home_or_away | stringnullable | — | — e.g. — (all-null in sample) |
is_game_over | boolean | — | — e.g. — (all-null in sample) |
losses | integer | — | — e.g. — (all-null in sample) |
major_penalties | integer | — | — e.g. — (all-null in sample) |
minor_penalties | integer | — | — e.g. — (all-null in sample) |
minutes_played | integer | — | Goalie minutes played e.g. — (all-null in sample) |
overtime_goals | integer | — | — e.g. — (all-null in sample) |
overtime_goals_against | integer | — | — e.g. — (all-null in sample) |
overtime_losses | integer | — | — e.g. — (all-null in sample) |
penalties | integer | — | — e.g. — (all-null in sample) |
penalty_minutes | integer | — | — e.g. — (all-null in sample) |
plus_minus | integer | — | — e.g. — (all-null in sample) |
power_play_assists | integer | — | — e.g. — (all-null in sample) |
power_play_goals | integer | — | — e.g. — (all-null in sample) |
power_play_goals_against | integer | — | — e.g. — (all-null in sample) |
power_play_pts | integer | — | — e.g. — (all-null in sample) |
power_play_saves | integer | — | — e.g. — (all-null in sample) |
power_play_shots_against | integer | — | — e.g. — (all-null in sample) |
power_play_time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
pts | integer | — | — e.g. — (all-null in sample) |
save_percentage | decimal | — | — e.g. — (all-null in sample) |
saves | integer | — | — e.g. — (all-null in sample) |
second_period_goals_against | integer | — | — e.g. — (all-null in sample) |
shifts | integer | — | — e.g. — (all-null in sample) |
shooting_percentage | decimal | — | — e.g. — (all-null in sample) |
shootout_attempts | integer | — | — e.g. — (all-null in sample) |
shootout_goals | integer | — | — e.g. — (all-null in sample) |
shootout_goals_against | integer | — | — e.g. — (all-null in sample) |
shootout_saves | integer | — | — e.g. — (all-null in sample) |
short_handed_assists | integer | — | — e.g. — (all-null in sample) |
short_handed_goals | integer | — | — e.g. — (all-null in sample) |
short_handed_goals_against | integer | — | — e.g. — (all-null in sample) |
short_handed_pts | integer | — | — e.g. — (all-null in sample) |
short_handed_saves | integer | — | — e.g. — (all-null in sample) |
short_handed_shots_against | integer | — | — e.g. — (all-null in sample) |
short_handed_time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
shots | integer | — | — e.g. — (all-null in sample) |
shots_against | integer | — | — e.g. — (all-null in sample) |
shots_on_goal | integer | — | — e.g. — (all-null in sample) |
shutouts | integer | — | — e.g. — (all-null in sample) |
started | integer | — | — e.g. — (all-null in sample) |
takeaways | integer | — | — e.g. — (all-null in sample) |
third_period_goals_against | integer | — | — e.g. — (all-null in sample) |
time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
wins | integer | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/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/nhl/game_player_stats/{pk_value}'Responses
200Single game_player_stat row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(67 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigint | — e.g. — (all-null in sample) | |
opponent_id | bigintnullable | — | — e.g. — (all-null in sample) |
player_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
assists | integer | — | — e.g. — (all-null in sample) |
blocked_shots | integer | — | — e.g. — (all-null in sample) |
empty_net_goals | integer | — | — e.g. — (all-null in sample) |
even_strength_assists | integer | — | — e.g. — (all-null in sample) |
even_strength_goals | integer | — | — e.g. — (all-null in sample) |
even_strength_time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
faceoff_percentage | decimal | — | — e.g. — (all-null in sample) |
faceoffs_lost | integer | — | — e.g. — (all-null in sample) |
faceoffs_won | integer | — | — e.g. — (all-null in sample) |
first_period_goals_against | integer | — | — e.g. — (all-null in sample) |
game_winning_goals | integer | — | — e.g. — (all-null in sample) |
games | integer | — | 1 if player appeared, 0 if not e.g. — (all-null in sample) |
giveaways | integer | — | — e.g. — (all-null in sample) |
goals | integer | — | — e.g. — (all-null in sample) |
goals_against | integer | — | — e.g. — (all-null in sample) |
goals_against_average | decimal | — | — e.g. — (all-null in sample) |
hits | integer | — | — e.g. — (all-null in sample) |
home_or_away | stringnullable | — | — e.g. — (all-null in sample) |
is_game_over | boolean | — | — e.g. — (all-null in sample) |
losses | integer | — | — e.g. — (all-null in sample) |
major_penalties | integer | — | — e.g. — (all-null in sample) |
minor_penalties | integer | — | — e.g. — (all-null in sample) |
minutes_played | integer | — | Goalie minutes played e.g. — (all-null in sample) |
overtime_goals | integer | — | — e.g. — (all-null in sample) |
overtime_goals_against | integer | — | — e.g. — (all-null in sample) |
overtime_losses | integer | — | — e.g. — (all-null in sample) |
penalties | integer | — | — e.g. — (all-null in sample) |
penalty_minutes | integer | — | — e.g. — (all-null in sample) |
plus_minus | integer | — | — e.g. — (all-null in sample) |
power_play_assists | integer | — | — e.g. — (all-null in sample) |
power_play_goals | integer | — | — e.g. — (all-null in sample) |
power_play_goals_against | integer | — | — e.g. — (all-null in sample) |
power_play_pts | integer | — | — e.g. — (all-null in sample) |
power_play_saves | integer | — | — e.g. — (all-null in sample) |
power_play_shots_against | integer | — | — e.g. — (all-null in sample) |
power_play_time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
pts | integer | — | — e.g. — (all-null in sample) |
save_percentage | decimal | — | — e.g. — (all-null in sample) |
saves | integer | — | — e.g. — (all-null in sample) |
second_period_goals_against | integer | — | — e.g. — (all-null in sample) |
shifts | integer | — | — e.g. — (all-null in sample) |
shooting_percentage | decimal | — | — e.g. — (all-null in sample) |
shootout_attempts | integer | — | — e.g. — (all-null in sample) |
shootout_goals | integer | — | — e.g. — (all-null in sample) |
shootout_goals_against | integer | — | — e.g. — (all-null in sample) |
shootout_saves | integer | — | — e.g. — (all-null in sample) |
short_handed_assists | integer | — | — e.g. — (all-null in sample) |
short_handed_goals | integer | — | — e.g. — (all-null in sample) |
short_handed_goals_against | integer | — | — e.g. — (all-null in sample) |
short_handed_pts | integer | — | — e.g. — (all-null in sample) |
short_handed_saves | integer | — | — e.g. — (all-null in sample) |
short_handed_shots_against | integer | — | — e.g. — (all-null in sample) |
short_handed_time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
shots | integer | — | — e.g. — (all-null in sample) |
shots_against | integer | — | — e.g. — (all-null in sample) |
shots_on_goal | integer | — | — e.g. — (all-null in sample) |
shutouts | integer | — | — e.g. — (all-null in sample) |
started | integer | — | — e.g. — (all-null in sample) |
takeaways | integer | — | — e.g. — (all-null in sample) |
third_period_goals_against | integer | — | — e.g. — (all-null in sample) |
time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
wins | integer | — | — e.g. — (all-null in sample) |
game_team_stats
nhl.game_team_statsEach NHL team's stat line for each game — goals scored and allowed, shots on goal, power-play and penalty-kill performance, faceoff percentage, hits, blocks, and time-on-ice splits.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/game_team_statsList game_team_stats for NHL
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 5000.
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/nhl/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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(30 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
assists | integer | — | — e.g. — (all-null in sample) |
blocked_shots | integer | — | — e.g. — (all-null in sample) |
faceoff_percentage | decimal | — | — e.g. — (all-null in sample) |
faceoffs_lost | integer | — | — e.g. — (all-null in sample) |
faceoffs_won | integer | — | — e.g. — (all-null in sample) |
giveaways | integer | — | — e.g. — (all-null in sample) |
goals | integer | — | — e.g. — (all-null in sample) |
goals_against | integer | — | — e.g. — (all-null in sample) |
hits | integer | — | — e.g. — (all-null in sample) |
losses | integer | — | — e.g. — (all-null in sample) |
overtime_losses | integer | — | — e.g. — (all-null in sample) |
penalties | integer | — | — e.g. — (all-null in sample) |
penalty_kill_goals_against | integer | — | — e.g. — (all-null in sample) |
penalty_kill_percentage | decimal | — | — e.g. — (all-null in sample) |
penalty_minutes | integer | — | — e.g. — (all-null in sample) |
power_play_attempts | integer | — | — e.g. — (all-null in sample) |
power_play_goals | integer | — | — e.g. — (all-null in sample) |
power_play_percentage | decimal | — | — e.g. — (all-null in sample) |
save_percentage | decimal | — | — e.g. — (all-null in sample) |
saves | integer | — | — e.g. — (all-null in sample) |
shooting_percentage | decimal | — | — e.g. — (all-null in sample) |
short_handed_goals | integer | — | — e.g. — (all-null in sample) |
shots | integer | — | — e.g. — (all-null in sample) |
shots_on_goal | integer | — | — e.g. — (all-null in sample) |
takeaways | integer | — | — e.g. — (all-null in sample) |
times_shorthanded | integer | — | — e.g. — (all-null in sample) |
wins | integer | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/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/nhl/game_team_stats/{pk_value}'Responses
200Single game_team_stat row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(30 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
assists | integer | — | — e.g. — (all-null in sample) |
blocked_shots | integer | — | — e.g. — (all-null in sample) |
faceoff_percentage | decimal | — | — e.g. — (all-null in sample) |
faceoffs_lost | integer | — | — e.g. — (all-null in sample) |
faceoffs_won | integer | — | — e.g. — (all-null in sample) |
giveaways | integer | — | — e.g. — (all-null in sample) |
goals | integer | — | — e.g. — (all-null in sample) |
goals_against | integer | — | — e.g. — (all-null in sample) |
hits | integer | — | — e.g. — (all-null in sample) |
losses | integer | — | — e.g. — (all-null in sample) |
overtime_losses | integer | — | — e.g. — (all-null in sample) |
penalties | integer | — | — e.g. — (all-null in sample) |
penalty_kill_goals_against | integer | — | — e.g. — (all-null in sample) |
penalty_kill_percentage | decimal | — | — e.g. — (all-null in sample) |
penalty_minutes | integer | — | — e.g. — (all-null in sample) |
power_play_attempts | integer | — | — e.g. — (all-null in sample) |
power_play_goals | integer | — | — e.g. — (all-null in sample) |
power_play_percentage | decimal | — | — e.g. — (all-null in sample) |
save_percentage | decimal | — | — e.g. — (all-null in sample) |
saves | integer | — | — e.g. — (all-null in sample) |
shooting_percentage | decimal | — | — e.g. — (all-null in sample) |
short_handed_goals | integer | — | — e.g. — (all-null in sample) |
shots | integer | — | — e.g. — (all-null in sample) |
shots_on_goal | integer | — | — e.g. — (all-null in sample) |
takeaways | integer | — | — e.g. — (all-null in sample) |
times_shorthanded | integer | — | — e.g. — (all-null in sample) |
wins | integer | — | — e.g. — (all-null in sample) |
operator_player_lookups
nhl.operator_player_lookupsHow each sportsbook and fantasy operator names every NHL player — the mapping from each operator's player identifier to a unified player record.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/operator_player_lookupsList operator_player_lookups for NHL
Requires one of:
operator_id — requests satisfying none of these return 400.Parameters
operator_idquerybigintoptionalFilter by operator.
limitqueryintegeroptionaldefault 100Page size. Defaults to 100; max 5000.
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/nhl/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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(9 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
operator_id | bigint | Operator id: 1 DraftKings, 2 FanDuel, 3 Yahoo, 13 sportsdata.io. e.g. — (all-null in sample) | |
operator_player_id | string | — | External player ID from operator e.g. — (all-null in sample) |
player_id | bigintnullable | Internal nhl.players.id reference e.g. — (all-null in sample) | |
decided_at | timestamptznullable | — | When the pin or block was decided. |
decided_reason | stringnullable | — | Evidence behind a pinned or blocked decision. |
decision | stringnullable | — | How this mapping was decided: 'derived' (finder answer, overwritable), 'pinned' (decided on evidence, trigger-protected), 'blocked' (no player we hold is this id; player_id NULL, never retried). DB default 'derived'; a BEFORE UPDATE trigger preserves non-derived rows. |
player_name | stringnullable | — | Player name for reconciliation e.g. — (all-null in sample) |
position | stringnullable | — | Position for reconciliation e.g. — (all-null in sample) |
GET/api/v1/nhl/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/nhl/operator_player_lookups/{pk_value}'Responses
200Single operator_player_lookup row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(9 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
operator_id | bigint | Operator id: 1 DraftKings, 2 FanDuel, 3 Yahoo, 13 sportsdata.io. e.g. — (all-null in sample) | |
operator_player_id | string | — | External player ID from operator e.g. — (all-null in sample) |
player_id | bigintnullable | Internal nhl.players.id reference e.g. — (all-null in sample) | |
decided_at | timestamptznullable | — | When the pin or block was decided. |
decided_reason | stringnullable | — | Evidence behind a pinned or blocked decision. |
decision | stringnullable | — | How this mapping was decided: 'derived' (finder answer, overwritable), 'pinned' (decided on evidence, trigger-protected), 'blocked' (no player we hold is this id; player_id NULL, never retried). DB default 'derived'; a BEFORE UPDATE trigger preserves non-derived rows. |
player_name | stringnullable | — | Player name for reconciliation e.g. — (all-null in sample) |
position | stringnullable | — | Position for reconciliation e.g. — (all-null in sample) |
season_player_stats
nhl.season_player_statsSeason totals for each NHL player — goals, assists, points, plus-minus, shots on goal, hits, blocks, penalty minutes, power-play and short-handed contributions, plus goaltender stats (wins, saves, shutouts, save percentage, goals-against average).
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/season_player_statsList season_player_stats for NHL
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.
team_idquerybigintoptionalFilter by team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(62 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
player_id | bigint | — e.g. — (all-null in sample) | |
season_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigintnullable | — e.g. — (all-null in sample) | |
assists | integer | — | — e.g. — (all-null in sample) |
assists_per_game | decimal | — | — e.g. — (all-null in sample) |
blocked_shots | integer | — | — e.g. — (all-null in sample) |
empty_net_goals | integer | — | — e.g. — (all-null in sample) |
even_strength_assists | integer | — | — e.g. — (all-null in sample) |
even_strength_goals | integer | — | — e.g. — (all-null in sample) |
even_strength_time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
faceoff_percentage | decimal | — | — e.g. — (all-null in sample) |
faceoffs_lost | integer | — | — e.g. — (all-null in sample) |
faceoffs_won | integer | — | — e.g. — (all-null in sample) |
game_winning_goals | integer | — | — e.g. — (all-null in sample) |
games_played | integer | — | — e.g. — (all-null in sample) |
games_started | integer | — | — e.g. — (all-null in sample) |
giveaways | integer | — | — e.g. — (all-null in sample) |
goals | integer | — | — e.g. — (all-null in sample) |
goals_against | integer | — | — e.g. — (all-null in sample) |
goals_against_average | decimal | — | — e.g. — (all-null in sample) |
goals_per_game | decimal | — | — e.g. — (all-null in sample) |
hat_tricks | integer | — | — e.g. — (all-null in sample) |
hits | integer | — | — e.g. — (all-null in sample) |
losses | integer | — | — e.g. — (all-null in sample) |
major_penalties | integer | — | — e.g. — (all-null in sample) |
minor_penalties | integer | — | — e.g. — (all-null in sample) |
minutes_played | integer | — | — e.g. — (all-null in sample) |
overtime_goals | integer | — | — e.g. — (all-null in sample) |
overtime_losses | integer | — | — e.g. — (all-null in sample) |
penalties | integer | — | — e.g. — (all-null in sample) |
penalty_minutes | integer | — | — e.g. — (all-null in sample) |
plus_minus | integer | — | — e.g. — (all-null in sample) |
position | stringnullable | — | — e.g. — (all-null in sample) |
power_play_assists | integer | — | — e.g. — (all-null in sample) |
power_play_goals | integer | — | — e.g. — (all-null in sample) |
power_play_pts | integer | — | — e.g. — (all-null in sample) |
power_play_time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
pts | integer | — | — e.g. — (all-null in sample) |
pts_per_game | decimal | — | — e.g. — (all-null in sample) |
save_percentage | decimal | — | — e.g. — (all-null in sample) |
saves | integer | — | — e.g. — (all-null in sample) |
season_type | string | — | Canonical season phase (text). Was integer 1/2/3 before the 2026-06-29 normalization. e.g. — (all-null in sample) |
shifts | integer | — | — e.g. — (all-null in sample) |
shooting_percentage | decimal | — | — e.g. — (all-null in sample) |
shootout_attempts | integer | — | — e.g. — (all-null in sample) |
shootout_goals | integer | — | — e.g. — (all-null in sample) |
shootout_goals_against | integer | — | — e.g. — (all-null in sample) |
shootout_misses | integer | — | — e.g. — (all-null in sample) |
shootout_saves | integer | — | — e.g. — (all-null in sample) |
short_handed_assists | integer | — | — e.g. — (all-null in sample) |
short_handed_goals | integer | — | — e.g. — (all-null in sample) |
short_handed_pts | integer | — | — e.g. — (all-null in sample) |
short_handed_time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
shots | integer | — | — e.g. — (all-null in sample) |
shots_against | integer | — | — e.g. — (all-null in sample) |
shots_on_goal | integer | — | — e.g. — (all-null in sample) |
shutouts | integer | — | — e.g. — (all-null in sample) |
takeaways | integer | — | — e.g. — (all-null in sample) |
time_on_ice_per_game | decimal | — | — e.g. — (all-null in sample) |
time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
wins | integer | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/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/nhl/season_player_stats/{pk_value}'Responses
200Single season_player_stat row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(62 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
player_id | bigint | — e.g. — (all-null in sample) | |
season_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigintnullable | — e.g. — (all-null in sample) | |
assists | integer | — | — e.g. — (all-null in sample) |
assists_per_game | decimal | — | — e.g. — (all-null in sample) |
blocked_shots | integer | — | — e.g. — (all-null in sample) |
empty_net_goals | integer | — | — e.g. — (all-null in sample) |
even_strength_assists | integer | — | — e.g. — (all-null in sample) |
even_strength_goals | integer | — | — e.g. — (all-null in sample) |
even_strength_time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
faceoff_percentage | decimal | — | — e.g. — (all-null in sample) |
faceoffs_lost | integer | — | — e.g. — (all-null in sample) |
faceoffs_won | integer | — | — e.g. — (all-null in sample) |
game_winning_goals | integer | — | — e.g. — (all-null in sample) |
games_played | integer | — | — e.g. — (all-null in sample) |
games_started | integer | — | — e.g. — (all-null in sample) |
giveaways | integer | — | — e.g. — (all-null in sample) |
goals | integer | — | — e.g. — (all-null in sample) |
goals_against | integer | — | — e.g. — (all-null in sample) |
goals_against_average | decimal | — | — e.g. — (all-null in sample) |
goals_per_game | decimal | — | — e.g. — (all-null in sample) |
hat_tricks | integer | — | — e.g. — (all-null in sample) |
hits | integer | — | — e.g. — (all-null in sample) |
losses | integer | — | — e.g. — (all-null in sample) |
major_penalties | integer | — | — e.g. — (all-null in sample) |
minor_penalties | integer | — | — e.g. — (all-null in sample) |
minutes_played | integer | — | — e.g. — (all-null in sample) |
overtime_goals | integer | — | — e.g. — (all-null in sample) |
overtime_losses | integer | — | — e.g. — (all-null in sample) |
penalties | integer | — | — e.g. — (all-null in sample) |
penalty_minutes | integer | — | — e.g. — (all-null in sample) |
plus_minus | integer | — | — e.g. — (all-null in sample) |
position | stringnullable | — | — e.g. — (all-null in sample) |
power_play_assists | integer | — | — e.g. — (all-null in sample) |
power_play_goals | integer | — | — e.g. — (all-null in sample) |
power_play_pts | integer | — | — e.g. — (all-null in sample) |
power_play_time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
pts | integer | — | — e.g. — (all-null in sample) |
pts_per_game | decimal | — | — e.g. — (all-null in sample) |
save_percentage | decimal | — | — e.g. — (all-null in sample) |
saves | integer | — | — e.g. — (all-null in sample) |
season_type | string | — | Canonical season phase (text). Was integer 1/2/3 before the 2026-06-29 normalization. e.g. — (all-null in sample) |
shifts | integer | — | — e.g. — (all-null in sample) |
shooting_percentage | decimal | — | — e.g. — (all-null in sample) |
shootout_attempts | integer | — | — e.g. — (all-null in sample) |
shootout_goals | integer | — | — e.g. — (all-null in sample) |
shootout_goals_against | integer | — | — e.g. — (all-null in sample) |
shootout_misses | integer | — | — e.g. — (all-null in sample) |
shootout_saves | integer | — | — e.g. — (all-null in sample) |
short_handed_assists | integer | — | — e.g. — (all-null in sample) |
short_handed_goals | integer | — | — e.g. — (all-null in sample) |
short_handed_pts | integer | — | — e.g. — (all-null in sample) |
short_handed_time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
shots | integer | — | — e.g. — (all-null in sample) |
shots_against | integer | — | — e.g. — (all-null in sample) |
shots_on_goal | integer | — | — e.g. — (all-null in sample) |
shutouts | integer | — | — e.g. — (all-null in sample) |
takeaways | integer | — | — e.g. — (all-null in sample) |
time_on_ice_per_game | decimal | — | — e.g. — (all-null in sample) |
time_on_ice_seconds | integer | — | — e.g. — (all-null in sample) |
wins | integer | — | — e.g. — (all-null in sample) |
Odds
game_odds
nhl.game_oddsNHL game betting lines — moneylines, puck lines (the hockey point-spread equivalent), and over/under totals from sportsbooks, captured over time as the lines move from opening to closing.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/game_oddsList game_odds for NHL
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
sportsbookquerystringoptionalFilter by sportsbook.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/game_odds?game_id=1'Responses
200game_odds rows matching the declared filter set, wrapped in { game_odds, 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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(13 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigint | — e.g. — (all-null in sample) | |
away_money_line | integernullable | — | — e.g. — (all-null in sample) |
away_point_spread | decimalnullable | — | — e.g. — (all-null in sample) |
away_point_spread_payout | integernullable | — | — e.g. — (all-null in sample) |
draw_money_line | integernullable | — | — e.g. — (all-null in sample) |
home_money_line | integernullable | — | — e.g. — (all-null in sample) |
home_point_spread | decimalnullable | — | — e.g. — (all-null in sample) |
home_point_spread_payout | integernullable | — | — e.g. — (all-null in sample) |
over_payout | integernullable | — | — e.g. — (all-null in sample) |
over_under | decimalnullable | — | — e.g. — (all-null in sample) |
sportsbook | stringnullable | — | DraftKings, FanDuel, BetMGM, etc. e.g. — (all-null in sample) |
under_payout | integernullable | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/game_odds/{id}Get a single game_odd by id
Parameters
idpathbigintrequiredPrimary key (id) of the game_odd 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/nhl/game_odds/{pk_value}'Responses
200Single game_odd row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(13 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigint | — e.g. — (all-null in sample) | |
away_money_line | integernullable | — | — e.g. — (all-null in sample) |
away_point_spread | decimalnullable | — | — e.g. — (all-null in sample) |
away_point_spread_payout | integernullable | — | — e.g. — (all-null in sample) |
draw_money_line | integernullable | — | — e.g. — (all-null in sample) |
home_money_line | integernullable | — | — e.g. — (all-null in sample) |
home_point_spread | decimalnullable | — | — e.g. — (all-null in sample) |
home_point_spread_payout | integernullable | — | — e.g. — (all-null in sample) |
over_payout | integernullable | — | — e.g. — (all-null in sample) |
over_under | decimalnullable | — | — e.g. — (all-null in sample) |
sportsbook | stringnullable | — | DraftKings, FanDuel, BetMGM, etc. e.g. — (all-null in sample) |
under_payout | integernullable | — | — e.g. — (all-null in sample) |
Lineups & Roster
line_combinations
nhl.line_combinationsNHL forward and defensive pair groupings — which players skate together as a line (first, second, third, fourth) or defensive pairing for each team.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/line_combinationsList line_combinations for NHL
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.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/line_combinations?team_id=1&season_id=2026'Responses
200line_combinations rows matching the declared filter set, wrapped in { line_combinations, 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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(11 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
player1_id | bigint | — | — e.g. — (all-null in sample) |
player2_id | bigintnullable | — | — e.g. — (all-null in sample) |
player3_id | bigintnullable | — | — e.g. — (all-null in sample) |
player4_id | bigintnullable | — | — e.g. — (all-null in sample) |
player5_id | bigintnullable | — | — e.g. — (all-null in sample) |
season_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
day | date | — | — e.g. — (all-null in sample) |
line_number | integer | — | — e.g. — (all-null in sample) |
line_type | string | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/line_combinations/{id}Get a single line_combination by id
Parameters
idpathbigintrequiredPrimary key (id) of the line_combination 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/nhl/line_combinations/{pk_value}'Responses
200Single line_combination row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(11 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
player1_id | bigint | — | — e.g. — (all-null in sample) |
player2_id | bigintnullable | — | — e.g. — (all-null in sample) |
player3_id | bigintnullable | — | — e.g. — (all-null in sample) |
player4_id | bigintnullable | — | — e.g. — (all-null in sample) |
player5_id | bigintnullable | — | — e.g. — (all-null in sample) |
season_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
day | date | — | — e.g. — (all-null in sample) |
line_number | integer | — | — e.g. — (all-null in sample) |
line_type | string | — | — e.g. — (all-null in sample) |
goalie_depth_charts
nhl.goalie_depth_chartsEach NHL team's goaltender depth — the starter, backup, and any third-string netminders, with the date the depth was last updated.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/goalie_depth_chartsList goalie_depth_charts for NHL
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.
player_idquerybigintoptionalFilter to a single goaltender.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/goalie_depth_charts?team_id=1&season_id=2026'Responses
200goalie_depth_charts rows matching the declared filter set, wrapped in { goalie_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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(6 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
player_id | bigint | — e.g. — (all-null in sample) | |
season_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
day | date | — | — e.g. — (all-null in sample) |
depth_order | integer | — | 1=Starter, 2=Backup, 3=Third string e.g. — (all-null in sample) |
GET/api/v1/nhl/goalie_depth_charts/{id}Get a single goalie_depth_chart by id
Parameters
idpathbigintrequiredPrimary key (id) of the goalie_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/nhl/goalie_depth_charts/{pk_value}'Responses
200Single goalie_depth_chart row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(6 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
player_id | bigint | — e.g. — (all-null in sample) | |
season_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
day | date | — | — e.g. — (all-null in sample) |
depth_order | integer | — | 1=Starter, 2=Backup, 3=Third string e.g. — (all-null in sample) |
Misc
arenas
nhl.arenasNHL arenas — current home venues and historical buildings, with capacity, surface type, and ice-rink dimensions.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/arenasList arenas for NHL
Parameters
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/arenas?limit=3'Responses
200arenas rows matching the declared filter set, wrapped in { arenas, 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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(19 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
league_arena_id | integernullable | — | Official NHL arena ID from api-web.nhle.com e.g. — (all-null in sample) |
address | stringnullable | — | — e.g. — (all-null in sample) |
capacity | integernullable | — | — e.g. — (all-null in sample) |
city | string | — | — e.g. — (all-null in sample) |
closed_date | timestamptznullable | — | — e.g. — (all-null in sample) |
country | stringnullable | — | — e.g. — (all-null in sample) |
description | stringnullable | — | — e.g. — (all-null in sample) |
elevation | floatnullable | — | Elevation in feet above sea level e.g. — (all-null in sample) |
image_url | stringnullable | — | URL to aerial/overview image of arena e.g. — (all-null in sample) |
latitude | floatnullable | — | — e.g. — (all-null in sample) |
longitude | floatnullable | — | — e.g. — (all-null in sample) |
name | string | — | — e.g. — (all-null in sample) |
opened_date | timestamptznullable | — | — e.g. — (all-null in sample) |
roof_type | stringnullable | — | Arena roof type (all indoor) e.g. — (all-null in sample) |
state | stringnullable | — | — e.g. — (all-null in sample) |
surface | string | — | Playing surface type e.g. — (all-null in sample) |
team_name | stringnullable | — | — e.g. — (all-null in sample) |
timezone | stringnullable | — | IANA timezone (e.g., America/New_York) e.g. — (all-null in sample) |
GET/api/v1/nhl/arenas/{id}Get a single arena by id
Parameters
idpathbigintrequiredPrimary key (id) of the arena 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/nhl/arenas/{pk_value}'Responses
200Single arena row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(19 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
league_arena_id | integernullable | — | Official NHL arena ID from api-web.nhle.com e.g. — (all-null in sample) |
address | stringnullable | — | — e.g. — (all-null in sample) |
capacity | integernullable | — | — e.g. — (all-null in sample) |
city | string | — | — e.g. — (all-null in sample) |
closed_date | timestamptznullable | — | — e.g. — (all-null in sample) |
country | stringnullable | — | — e.g. — (all-null in sample) |
description | stringnullable | — | — e.g. — (all-null in sample) |
elevation | floatnullable | — | Elevation in feet above sea level e.g. — (all-null in sample) |
image_url | stringnullable | — | URL to aerial/overview image of arena e.g. — (all-null in sample) |
latitude | floatnullable | — | — e.g. — (all-null in sample) |
longitude | floatnullable | — | — e.g. — (all-null in sample) |
name | string | — | — e.g. — (all-null in sample) |
opened_date | timestamptznullable | — | — e.g. — (all-null in sample) |
roof_type | stringnullable | — | Arena roof type (all indoor) e.g. — (all-null in sample) |
state | stringnullable | — | — e.g. — (all-null in sample) |
surface | string | — | Playing surface type e.g. — (all-null in sample) |
team_name | stringnullable | — | — e.g. — (all-null in sample) |
timezone | stringnullable | — | IANA timezone (e.g., America/New_York) e.g. — (all-null in sample) |
playoff_series
nhl.playoff_seriesNHL Stanley Cup Playoff series — best-of-seven matchups in each round (First Round, Second Round, Conference Finals, Stanley Cup Final), with seeds, wins, and series outcomes.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/playoff_seriesList playoff_series for NHL
Requires one of:
season_id — requests satisfying none of these return 400.Parameters
season_idquerybigintoptionalFilter to a single season. Defaults to the current season.
home_team_idquerybigintoptionalFilter by home team.
away_team_idquerybigintoptionalFilter by away team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/playoff_series?season_id=2026'Responses
200playoff_series rows matching the declared filter set, wrapped in { playoff_series, 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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(15 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
away_team_id | bigint | — e.g. — (all-null in sample) | |
home_team_id | bigint | — e.g. — (all-null in sample) | |
season_id | bigint | — e.g. — (all-null in sample) | |
series_id | integernullable | — | — e.g. — (all-null in sample) |
winner_team_id | bigintnullable | — e.g. — (all-null in sample) | |
away_team_seed | integer | — | — e.g. — (all-null in sample) |
away_team_wins | integer | — | — e.g. — (all-null in sample) |
conference | stringnullable | — | — e.g. — (all-null in sample) |
games_played | integer | — | — e.g. — (all-null in sample) |
home_team_seed | integer | — | — e.g. — (all-null in sample) |
home_team_wins | integer | — | — e.g. — (all-null in sample) |
max_games | integer | — | — e.g. — (all-null in sample) |
playoff_round | string | — | — e.g. — (all-null in sample) |
status | string | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/playoff_series/{id}Get a single playoff_sery by id
Parameters
idpathbigintrequiredPrimary key (id) of the playoff_sery 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/nhl/playoff_series/{pk_value}'Responses
200Single playoff_sery row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(15 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
away_team_id | bigint | — e.g. — (all-null in sample) | |
home_team_id | bigint | — e.g. — (all-null in sample) | |
season_id | bigint | — e.g. — (all-null in sample) | |
series_id | integernullable | — | — e.g. — (all-null in sample) |
winner_team_id | bigintnullable | — e.g. — (all-null in sample) | |
away_team_seed | integer | — | — e.g. — (all-null in sample) |
away_team_wins | integer | — | — e.g. — (all-null in sample) |
conference | stringnullable | — | — e.g. — (all-null in sample) |
games_played | integer | — | — e.g. — (all-null in sample) |
home_team_seed | integer | — | — e.g. — (all-null in sample) |
home_team_wins | integer | — | — e.g. — (all-null in sample) |
max_games | integer | — | — e.g. — (all-null in sample) |
playoff_round | string | — | — e.g. — (all-null in sample) |
status | string | — | — e.g. — (all-null in sample) |
draft_picks
nhl.draft_picksEvery NHL Draft selection — round, pick number, drafting team, the league/country the player came from, and the career stats that followed.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/draft_picksList draft_picks for NHL
Requires one of:
year — requests satisfying none of these return 400.Parameters
yearqueryintegeroptionalFilter to a single draft year.
team_idquerybigintoptionalFilter by drafting team.
player_idquerybigintoptionalFilter to a single player.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/draft_picks?year=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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(9 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
draft_id | integernullable | — | — e.g. — (all-null in sample) |
original_team_id | integernullable | Team that originally owned the pick e.g. — (all-null in sample) | |
player_id | bigintnullable | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
overall_pick | integer | — | — e.g. — (all-null in sample) |
pick_in_round | integer | — | — e.g. — (all-null in sample) |
round | integer | — | — e.g. — (all-null in sample) |
year | integer | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/draft_picks/{id}Get a single draft_pick by id
Parameters
idpathbigintrequiredPrimary 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/nhl/draft_picks/{pk_value}'Responses
200Single draft_pick row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(9 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
draft_id | integernullable | — | — e.g. — (all-null in sample) |
original_team_id | integernullable | Team that originally owned the pick e.g. — (all-null in sample) | |
player_id | bigintnullable | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
overall_pick | integer | — | — e.g. — (all-null in sample) |
pick_in_round | integer | — | — e.g. — (all-null in sample) |
round | integer | — | — e.g. — (all-null in sample) |
year | integer | — | — e.g. — (all-null in sample) |
player_injuries
nhl.player_injuriesThe ongoing injury record for each NHL player — body part, severity, designation (day-to-day, IR, LTIR), and expected return timeline.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/player_injuriesList player_injuries for NHL
Requires one of:
player_id — requests satisfying none of these return 400.Parameters
player_idquerybigintoptionalFilter to a single player.
team_idquerybigintoptionalFilter by team.
season_idquerybigintoptionalFilter to a season.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
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/nhl/player_injuries?player_id=1'Responses
200player_injuries rows matching the declared filter set, wrapped in { player_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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(16 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
player_id | bigint | — e.g. — (all-null in sample) | |
season_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
body_part | string | — | — e.g. — (all-null in sample) |
description | stringnullable | — | — e.g. — (all-null in sample) |
end_date | timestamptznullable | — | — e.g. — (all-null in sample) |
expected_return_date | timestamptznullable | — | — e.g. — (all-null in sample) |
games_missed | integer | — | — e.g. — (all-null in sample) |
injury_type | stringnullable | — | — e.g. — (all-null in sample) |
is_surgery_required | booleannullable | — | — e.g. — (all-null in sample) |
side | stringnullable | — | — e.g. — (all-null in sample) |
source | stringnullable | — | — e.g. — (all-null in sample) |
start_date | timestamptz | — | — e.g. — (all-null in sample) |
status | string | — | — e.g. — (all-null in sample) |
updated_date | timestamptz | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/player_injuries/{id}Get a single player_injury by id
Parameters
idpathbigintrequiredPrimary key (id) of the player_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/nhl/player_injuries/{pk_value}'Responses
200Single player_injury row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(16 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
player_id | bigint | — e.g. — (all-null in sample) | |
season_id | bigint | — e.g. — (all-null in sample) | |
team_id | bigint | — e.g. — (all-null in sample) | |
body_part | string | — | — e.g. — (all-null in sample) |
description | stringnullable | — | — e.g. — (all-null in sample) |
end_date | timestamptznullable | — | — e.g. — (all-null in sample) |
expected_return_date | timestamptznullable | — | — e.g. — (all-null in sample) |
games_missed | integer | — | — e.g. — (all-null in sample) |
injury_type | stringnullable | — | — e.g. — (all-null in sample) |
is_surgery_required | booleannullable | — | — e.g. — (all-null in sample) |
side | stringnullable | — | — e.g. — (all-null in sample) |
source | stringnullable | — | — e.g. — (all-null in sample) |
start_date | timestamptz | — | — e.g. — (all-null in sample) |
status | string | — | — e.g. — (all-null in sample) |
updated_date | timestamptz | — | — e.g. — (all-null in sample) |
player_news
nhl.player_newsNews about NHL players — trades, IR placements, line changes, suspensions, and general beat-reporter updates.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/player_newsList player_news for NHL
Requires one of:
player_id or team_id — requests satisfying none of these return 400.Parameters
player_idquerybigintoptionalFilter to a single player.
team_idquerybigintoptionalFilter by team.
categoryquerystringoptionalFilter by news category (injury, transaction, lineup, general). Values: general, injury, lineup, transaction.
status_enumquerystringoptionalFilter by player status designation. Values: RULED_OUT, DOUBTFUL, QUESTIONABLE, PROBABLE, CLEARED, MINUTES_LIMIT, MINUTES_LIFTED, STARTING, BENCHED, INACTIVE, ACTIVE, IR_PLACED, IR_ACTIVATED, OUT_SEASON, TRADED, RELEASED, SIGNED, ROUTINE, UNSIGNED.
urgencyquerystringoptionalFilter by news urgency. Values: BREAKING_GAME_TIME, HIGH, MEDIUM, ROUTINE.
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 5000.
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/nhl/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/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(28 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
external_id | stringnullable | — | Unique identifier from the news provider. e.g. — (all-null in sample) |
game_id | bigintnullable | Associated game ID when this news item relates to a specific game. | |
news_id | integernullable | — | External news item ID from the provider. e.g. — (all-null in sample) |
opponent_team_id | bigintnullable | Opponent team ID when this news item relates to an upcoming or active game matchup. | |
player_id | bigintnullable | Player ID associated with the news report. e.g. — (all-null in sample) | |
team_id | bigintnullable | Team ID of the player at the time of publication. e.g. — (all-null in sample) | |
ai_processed | boolean | — | Whether this story was generated or enriched via LLM summarization. e.g. — (all-null in sample) |
author | stringnullable | — | Reporter or author of the article. e.g. — (all-null in sample) |
categories | stringnullable | — | Comma-separated raw topic tags. e.g. — (all-null in sample) |
category | stringnullable | — | injury, transaction, lineup, general e.g. — (all-null in sample) |
content | stringnullable | — | Full text content of the news report. e.g. — (all-null in sample) |
description | stringnullable | — | Brief synopsis or summary of the news event. |
first_reported_at | timestamptznullable | — | Timestamp when this story was first reported before multi-source compaction. |
link | stringnullable | — | URL link to the original article or source video. |
news_time | timestamptz | — | Publication timestamp of the news story. e.g. — (all-null in sample) |
original_source | stringnullable | — | Original publishing outlet or syndicate. e.g. — (all-null in sample) |
original_source_url | stringnullable | — | Canonical permalink on the original publisher. e.g. — (all-null in sample) |
priority | integer | — | Display priority score (1-10). e.g. — (all-null in sample) |
situational_impact | jsonbnullable | — | Structured situational impact assessment and fantasy implications for the player. e.g. — (all-null in sample) |
↳type situational_impact.type | stringnullable | — | Impact direction: positive, negative, or neutral. |
↳impact_enum situational_impact.impact_enum | stringnullable | — | Standardized impact state (ACTIVE, CLEARED, QUESTIONABLE, etc.). |
↳reason situational_impact.reason | stringnullable | — | Narrative explaining the fantasy and playing-time impact. |
↳ripple_effect situational_impact.ripple_effect | stringnullable | — | Downstream tactical or fantasy consequences. |
↳affected_players situational_impact.affected_players | listnullable | — | Teammates whose opportunity or role is impacted. |
↳affected_player_ids situational_impact.affected_player_ids | listnullable | — | IDs of impacted teammates. |
source | stringnullable | — | Primary news source or publication. e.g. — (all-null in sample) |
sources | jsonbnullable | — | Source citations with source name, URL, author, and published timestamp. |
↳url sources.url | stringnullable | — | Source article or media link. |
↳source sources.source | stringnullable | — | Publisher or feed identifier. |
↳author sources.author | stringnullable | — | Reporting journalist or source author. |
↳published_at sources.published_at | timestamptznullable | — | Source publication timestamp. |
status_enum | stringnullable | — | Standardized player status designation (RULED_OUT, DOUBTFUL, QUESTIONABLE, PROBABLE, CLEARED, MINUTES_LIMIT, MINUTES_LIFTED, STARTING, BENCHED, INACTIVE, ACTIVE, IR_PLACED, IR_ACTIVATED, TRADED, RELEASED, SIGNED, ROUTINE). |
terms_of_use | stringnullable | — | Syndication terms and attribution. e.g. — (all-null in sample) |
title | string | — | Headline of the news report. e.g. — (all-null in sample) |
updated_time | timestamptznullable | — | Timestamp when the story was last revised. e.g. — (all-null in sample) |
urgency | stringnullable | — | Urgency level of the news event (BREAKING_GAME_TIME, HIGH, MEDIUM, ROUTINE). |
url | stringnullable | — | Original source URL. e.g. — (all-null in sample) |
GET/api/v1/nhl/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/nhl/player_news/{pk_value}'Responses
200Single player_new row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(28 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
external_id | stringnullable | — | Unique identifier from the news provider. e.g. — (all-null in sample) |
game_id | bigintnullable | Associated game ID when this news item relates to a specific game. | |
news_id | integernullable | — | External news item ID from the provider. e.g. — (all-null in sample) |
opponent_team_id | bigintnullable | Opponent team ID when this news item relates to an upcoming or active game matchup. | |
player_id | bigintnullable | Player ID associated with the news report. e.g. — (all-null in sample) | |
team_id | bigintnullable | Team ID of the player at the time of publication. e.g. — (all-null in sample) | |
ai_processed | boolean | — | Whether this story was generated or enriched via LLM summarization. e.g. — (all-null in sample) |
author | stringnullable | — | Reporter or author of the article. e.g. — (all-null in sample) |
categories | stringnullable | — | Comma-separated raw topic tags. e.g. — (all-null in sample) |
category | stringnullable | — | injury, transaction, lineup, general e.g. — (all-null in sample) |
content | stringnullable | — | Full text content of the news report. e.g. — (all-null in sample) |
description | stringnullable | — | Brief synopsis or summary of the news event. |
first_reported_at | timestamptznullable | — | Timestamp when this story was first reported before multi-source compaction. |
link | stringnullable | — | URL link to the original article or source video. |
news_time | timestamptz | — | Publication timestamp of the news story. e.g. — (all-null in sample) |
original_source | stringnullable | — | Original publishing outlet or syndicate. e.g. — (all-null in sample) |
original_source_url | stringnullable | — | Canonical permalink on the original publisher. e.g. — (all-null in sample) |
priority | integer | — | Display priority score (1-10). e.g. — (all-null in sample) |
situational_impact | jsonbnullable | — | Structured situational impact assessment and fantasy implications for the player. e.g. — (all-null in sample) |
↳type situational_impact.type | stringnullable | — | Impact direction: positive, negative, or neutral. |
↳impact_enum situational_impact.impact_enum | stringnullable | — | Standardized impact state (ACTIVE, CLEARED, QUESTIONABLE, etc.). |
↳reason situational_impact.reason | stringnullable | — | Narrative explaining the fantasy and playing-time impact. |
↳ripple_effect situational_impact.ripple_effect | stringnullable | — | Downstream tactical or fantasy consequences. |
↳affected_players situational_impact.affected_players | listnullable | — | Teammates whose opportunity or role is impacted. |
↳affected_player_ids situational_impact.affected_player_ids | listnullable | — | IDs of impacted teammates. |
source | stringnullable | — | Primary news source or publication. e.g. — (all-null in sample) |
sources | jsonbnullable | — | Source citations with source name, URL, author, and published timestamp. |
↳url sources.url | stringnullable | — | Source article or media link. |
↳source sources.source | stringnullable | — | Publisher or feed identifier. |
↳author sources.author | stringnullable | — | Reporting journalist or source author. |
↳published_at sources.published_at | timestamptznullable | — | Source publication timestamp. |
status_enum | stringnullable | — | Standardized player status designation (RULED_OUT, DOUBTFUL, QUESTIONABLE, PROBABLE, CLEARED, MINUTES_LIMIT, MINUTES_LIFTED, STARTING, BENCHED, INACTIVE, ACTIVE, IR_PLACED, IR_ACTIVATED, TRADED, RELEASED, SIGNED, ROUTINE). |
terms_of_use | stringnullable | — | Syndication terms and attribution. e.g. — (all-null in sample) |
title | string | — | Headline of the news report. e.g. — (all-null in sample) |
updated_time | timestamptznullable | — | Timestamp when the story was last revised. e.g. — (all-null in sample) |
urgency | stringnullable | — | Urgency level of the news event (BREAKING_GAME_TIME, HIGH, MEDIUM, ROUTINE). |
url | stringnullable | — | Original source URL. e.g. — (all-null in sample) |
team_news
nhl.team_newsNews and updates about NHL teams — game previews, coaching changes, front-office moves, and beat reports.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/team_newsList team_news for NHL
Requires one of:
team_id — requests satisfying none of these return 400.Parameters
team_idquerybigintoptionalFilter by team.
categoryquerystringoptionalFilter by category (game_preview, coaching, transaction, general, draft, depth_chart). Values: game_preview, coaching, transaction, general, draft, depth_chart.
urgencyquerystringoptionalFilter by news urgency. Values: BREAKING_GAME_TIME, HIGH, MEDIUM, ROUTINE.
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 5000.
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/nhl/team_news?team_id=1'Responses
200team_news rows matching the declared filter set, wrapped in { team_news, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.
application/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(12 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
external_id | stringnullable | — | Canonical external identifier for deduplication. |
game_id | bigintnullable | Associated game ID when news relates to a specific game. | |
opponent_team_id | bigintnullable | Opponent team ID when news relates to an upcoming or completed game matchup. | |
team_id | bigint | Team ID that this news event pertains to. | |
ai_processed | booleannullable | — | Whether this story was generated or enriched via LLM summarization. |
category | stringnullable | — | game_preview, coaching, transaction, general |
news_time | timestamptz | — | Publication timestamp of the team story. |
sources | jsonbnullable | — | Source citations with publisher name, URL, author, and published timestamp. |
↳url sources.url | stringnullable | — | Source article or media link. |
↳source sources.source | stringnullable | — | Publisher or feed identifier. |
↳author sources.author | stringnullable | — | Reporting journalist or source author. |
↳published_at sources.published_at | timestamptznullable | — | Source publication timestamp. |
summary | string | — | Concise journalistic summary of the team news event. |
title | string | — | Headline of the team news story. |
urgency | stringnullable | — | ROUTINE, MEDIUM, HIGH, BREAKING_GAME_TIME |
GET/api/v1/nhl/team_news/{id}Get a single team_new by id
Parameters
idpathbigintrequiredPrimary key (id) of the team_new row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/nhl/team_news/{pk_value}'Responses
200Single team_new row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(12 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
external_id | stringnullable | — | Canonical external identifier for deduplication. |
game_id | bigintnullable | Associated game ID when news relates to a specific game. | |
opponent_team_id | bigintnullable | Opponent team ID when news relates to an upcoming or completed game matchup. | |
team_id | bigint | Team ID that this news event pertains to. | |
ai_processed | booleannullable | — | Whether this story was generated or enriched via LLM summarization. |
category | stringnullable | — | game_preview, coaching, transaction, general |
news_time | timestamptz | — | Publication timestamp of the team story. |
sources | jsonbnullable | — | Source citations with publisher name, URL, author, and published timestamp. |
↳url sources.url | stringnullable | — | Source article or media link. |
↳source sources.source | stringnullable | — | Publisher or feed identifier. |
↳author sources.author | stringnullable | — | Reporting journalist or source author. |
↳published_at sources.published_at | timestamptznullable | — | Source publication timestamp. |
summary | string | — | Concise journalistic summary of the team news event. |
title | string | — | Headline of the team news story. |
urgency | stringnullable | — | ROUTINE, MEDIUM, HIGH, BREAKING_GAME_TIME |