STAT-API

NFL coaching_staff_tenures API

coaching_staff_tenuresnfl.coaching_staff_tenures
Every coaching change across NFL history with dates — when each head coach, offensive coordinator, and defensive coordinator started, when they left, and why (fired, resigned, promoted, retired).
GET/api/v1/nfl/coaching_staff_tenures
Requires one of: team_id — requests satisfying none of these return 400.
Parameters
team_idquerybigintoptional
Filter by team.
season_idquerybigintoptional
Filter to a season by year (e.g., 2025 for the 2025-26 season). Defaults to the current season.
positionquerystringoptional
Filter by player position. Values: DC, HC, OC.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/coaching_staff_tenures?team_id=1'
Responses
200coaching_staff_tenures rows matching the declared filter set, wrapped in { coaching_staff_tenures, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.application/json
Response Schema(11 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
season_id
bigintReference to the season
e.g. 2024
team_id
bigintReference to the team
e.g. 6
effective_date
date—Date this coach started in this role
e.g. 2026-03-01
end_date
datenullable—Date this coach ended (null if current)
e.g. 2025-01-06
first_name
stringnullable——
e.g. Mike
full_name
string—Coach full name
e.g. Jeff Ulbrich
is_interim
boolean——
Values:falsetrue
last_name
stringnullable——
e.g. Taylor
position
string—Coaching position (HC, OC, DC)
Values:OCDCHC
reason
stringnullable—Reason for change (fired, resigned, hired, promoted)
Values:D-041: end unknown (no …first seen: club site a…D-041: not the 2026 hea…firedD-041: not the 2026 hea…
GET/api/v1/nfl/coaching_staff_tenures/{id}
Parameters
idpathbigintrequired
Primary key (id) of the coaching_staff_tenure row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  'https://api.stat-api.com/api/v1/nfl/coaching_staff_tenures/{pk_value}'
Responses
200Single coaching_staff_tenure row.application/jsonshow example ▸
404Row not found.
Response Schema(11 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
season_id
bigintReference to the season
e.g. 2024
team_id
bigintReference to the team
e.g. 6
effective_date
date—Date this coach started in this role
e.g. 2026-03-01
end_date
datenullable—Date this coach ended (null if current)
e.g. 2025-01-06
first_name
stringnullable——
e.g. Mike
full_name
string—Coach full name
e.g. Jeff Ulbrich
is_interim
boolean——
Values:falsetrue
last_name
stringnullable——
e.g. Taylor
position
string—Coaching position (HC, OC, DC)
Values:OCDCHC
reason
stringnullable—Reason for change (fired, resigned, hired, promoted)
Values:D-041: end unknown (no …first seen: club site a…D-041: not the 2026 hea…firedD-041: not the 2026 hea…