---
title: "NFL injuries - weekly report, practice participation and roster status"
method: GET
path: "/v1/nfl/injuries"
tags: ["nfl"]
---

# NFL injuries - weekly report, practice participation and roster status

`GET /v1/nfl/injuries`

## Request

- Base URL: `https://api.bigballsdata.com`
- URL: `https://api.bigballsdata.com/v1/nfl/injuries`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Three facts about a player, never collapsed into one. `report` is the league's mandated weekly game designation (Out, Doubtful, Questionable), `practice` is participation (Did Not Participate, Limited, Full), and `roster` is reserve-list state (IR, IR-R, PUP-R, NFI-R, Reserve-Sus, Reserve-DNR) with a human comment. A player can legitimately hold all three at once with different values, and each row's `sources` array names which feeds contributed it. 34,810 weekly-report rows cover 2020-2026, all 32 teams and every regular-season week plus the postseason rounds. Omit season to get the newest week available; meta.resolved names the season and week actually served, and meta.data_as_of is the newest updated_at in the response, which sits in the past between seasons because nothing new is published then. ROSTER STATUS IS CURRENT-INSTANT ONLY - it is attached to the newest published week and nothing else. Ask for an older season or week and every row's `roster` is null and meta.sources.roster_status.in_scope is false with a reason, rather than the field being quietly absent. Rows carrying roster status but no weekly report entry have player_id null, because player_id on this endpoint is an NFL gsis-format id and those rows have none; their identity is roster.bbs_player_id when we hold one, and otherwise their name and team. Each row's `sources` array names the feeds by WHAT THEY ANSWER - weekly_report, roster_status - never by supplier.

## Query parameters

- `season` integer
- `week` integer
- `team` string
- `player_id` string
- `season_type` 'REG' | 'POST' | 'WC' | 'DIV' | 'CON' | 'SB'
- `status` string
- `roster_status` string
- `position` string
- `limit` integer
- `offset` integer

## Response `200`

ok

- object
  - `data` object[]
  - `pagination` object
    - `total` integer
    - `limit` integer
    - `offset` integer
  - `meta` object
    - `resolved` object, nullable
      - `season` integer
      - `week` integer, nullable
      - `defaulted` boolean
    - `data_as_of` string, date-time, nullable
    - `sources` object: Per-feed row count and currency, so a caller can see which half of the response is stale rather than inferring it. `roster_status.in_scope` is false, with a reason, whenever the requested window is not the newest published week.
      - `weekly_report` object
        - `rows` integer
        - `as_of` string, date-time, nullable
      - `roster_status` object
        - `rows` integer
        - `as_of` string, date-time, nullable
        - `in_scope` boolean
        - `reason` string
    - `merge` object: How many rows each combination of feeds produced. Present only when roster status is in scope.
      - `both` integer
      - `report_only` integer
      - `roster_only` integer

---

[API](https://skmtc.dev/bigballsdata/apis/big-ball-sports-api.md) · [All operations](https://skmtc.dev/bigballsdata/apis/big-ball-sports-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bigballsdata/apis/big-ball-sports-api/revisions/31fb54ac414e?raw)
