NHL (coming soon)
Coming soon22 tablesEvery 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.
Machine-readable spec: /api/openapi/public.json (OpenAPI 3.1)
Main· 4 tables
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).
▸Fields10
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| league_id | stringnullable | — | Official NHL season identifier e.g. — (all-null in sample) |
| short_id | string | — | — e.g. — (all-null in sample) |
| description | stringnullable | — | — 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) |
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/seasonsList seasons for NHL (coming soon)
Parameters
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-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.
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 \
-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.
teams
nhl.teamsThe 32 NHL franchises, organized into the Eastern and Western Conferences with two divisions each (Atlantic, Metropolitan, Central, Pacific).
▸Fields18
| 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) |
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/teamsList teams for NHL (coming soon)
Parameters
activequerybooleanoptionalFilter by active status (defaults to true to show only currently-active rows; pass active=false to include inactive).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-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.
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 \
-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.
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.
▸Fields35
| 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) |
| shoots | stringnullable | — | — e.g. — (all-null in sample) |
| status | 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) |
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/playersList players for NHL (coming soon)
Parameters
team_idquerybigintoptionalFilter to players whose current team_id matches. Null team_id rows (free agents, retired) are excluded when this filter is applied.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/nhl/players?limit=3'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.
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 \
-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.
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.
▸Fields37
| 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) |
| date_time | timestamptz | — | — e.g. — (all-null in sample) |
| date_time_utc | timestamptznullable | — | — 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 | — | — 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 | integer | — | 1=Regular, 2=Preseason, 3=Postseason, 4=All-Star 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) |
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/gamesList games for NHL (coming soon)
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 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/nhl/games?season_id=2025'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.
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 \
-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.
Plays· 3 tables
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.
▸Fields12
| 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) |
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/penaltiesList penalties for NHL (coming soon)
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 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-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.
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 \
-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.
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.)
▸Fields8
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| game_id | bigint | — e.g. — (all-null in sample) | |
| league_game_id | integer | — 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) |
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/periodsList periods for NHL (coming soon)
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 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-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.
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 \
-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.
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.
▸Fields13
| 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) |
⚠️ 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 (coming soon)
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 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-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.
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 \
-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.
Stats· 7 tables
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.
▸Fields6
| 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) |
⚠️ 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 (coming soon)
Requires one of:
operator_id — requests satisfying none of these return 400.Parameters
operator_idquerybigintoptionalFilter by operator.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-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.
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 \
-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.
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.
▸Fields36
| 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 | integer | — | 1=Regular, 2=Preseason, 3=Postseason 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) |
⚠️ 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 (coming soon)
Requires one of:
season_id — requests satisfying none of these return 400.Parameters
season_idquerybigintoptionalFilter to a single season. Defaults to the current season.
team_idquerybigintoptionalFilter by team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/nhl/season_team_stats?season_id=2025'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.
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 \
-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.
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).
▸Fields36
| 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 | integer | — | — 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) |
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/standingsList standings for NHL (coming soon)
Requires one of:
season_id — requests satisfying none of these return 400.Parameters
season_idquerybigintoptionalFilter to a single season. Defaults to the current season.
team_idquerybigintoptionalFilter by team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/nhl/standings?season_id=2025'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.
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 \
-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.
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).
▸Fields67
| 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) |
⚠️ 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 (coming soon)
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 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-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.
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 \
-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.
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.
▸Fields30
| 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) |
⚠️ 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 (coming soon)
Requires one of:
game_id — requests satisfying none of these return 400.Parameters
game_idquerybigintoptionalFilter to a single game.
team_idquerybigintoptionalFilter by team.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-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.
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 \
-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.
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.
▸Fields6
| 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 | bigint | Internal nhl.players.id reference e.g. — (all-null in sample) | |
| player_name | stringnullable | — | Player name for reconciliation e.g. — (all-null in sample) |
| position | stringnullable | — | Position for reconciliation e.g. — (all-null in sample) |
⚠️ 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 (coming soon)
Requires one of:
operator_id — requests satisfying none of these return 400.Parameters
operator_idquerybigintoptionalFilter by operator.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-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.
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 \
-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.
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).
▸Fields62
| 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 | integer | — | 1=Regular, 2=Preseason, 3=Postseason 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) |
⚠️ 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 (coming soon)
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 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/nhl/season_player_stats?season_id=2025'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.
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 \
-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.
Odds· 1 table
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.
▸Fields13
| 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) |
⚠️ 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 (coming soon)
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 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-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.
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 \
-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.
Lineups & Roster· 2 tables
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.
▸Fields11
| 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) |
⚠️ 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 (coming soon)
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 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/nhl/line_combinations?team_id=1&season_id=2025'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.
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 \
-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.
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.
▸Fields6
| 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) |
⚠️ 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 (coming soon)
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 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/nhl/goalie_depth_charts?team_id=1&season_id=2025'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.
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 \
-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.
Misc· 5 tables
arenas
nhl.arenasNHL arenas — current home venues and historical buildings, with capacity, surface type, and ice-rink dimensions.
▸Fields19
| 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) |
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/arenasList arenas for NHL (coming soon)
Parameters
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-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.
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 \
-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.
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.
▸Fields15
| 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) |
⚠️ 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 (coming soon)
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 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/nhl/playoff_series?season_id=2025'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.
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 \
-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.
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.
▸Fields9
| 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) |
⚠️ 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 (coming soon)
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 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-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.
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 \
-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.
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.
▸Fields16
| 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) |
⚠️ 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 (coming soon)
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 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-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.
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 \
-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.
player_news
nhl.player_newsNews about NHL players — trades, IR placements, line changes, suspensions, and general beat-reporter updates.
▸Fields20
| Field | Type | References | Description |
|---|---|---|---|
| idkey | bigint | — | Primary Key |
| external_id | stringnullable | — | — e.g. — (all-null in sample) |
| news_id | integernullable | — | — e.g. — (all-null in sample) |
| player_id | bigintnullable | — e.g. — (all-null in sample) | |
| team_id | bigintnullable | — e.g. — (all-null in sample) | |
| ai_processed | boolean | — | — e.g. — (all-null in sample) |
| author | stringnullable | — | — e.g. — (all-null in sample) |
| categories | stringnullable | — | — e.g. — (all-null in sample) |
| category | stringnullable | — | injury, transaction, lineup, general e.g. — (all-null in sample) |
| content | stringnullable | — | — e.g. — (all-null in sample) |
| news_time | timestamptz | — | — e.g. — (all-null in sample) |
| original_source | stringnullable | — | — e.g. — (all-null in sample) |
| original_source_url | stringnullable | — | — e.g. — (all-null in sample) |
| priority | integer | — | — e.g. — (all-null in sample) |
| situational_impact | jsonbnullable | — | — e.g. — (all-null in sample) |
| source | stringnullable | — | — e.g. — (all-null in sample) |
| terms_of_use | stringnullable | — | — e.g. — (all-null in sample) |
| title | string | — | — e.g. — (all-null in sample) |
| updated_time | timestamptznullable | — | — e.g. — (all-null in sample) |
| url | stringnullable | — | — e.g. — (all-null in sample) |
⚠️ 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 (coming soon)
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.
news_timequerytimestamptzoptionalFilter by publication time (ISO 8601). Use news_time__gte to poll for items since your last check. Range syntax: news_time__gte=, news_time__lte=, news_time__between=.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 200.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS \
-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.
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 \
-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.