---
title: "Alias of /players/{playerId}/stoppages — the identical response (PRO)"
method: GET
path: "/players/{playerId}/injuries"
---

# Alias of /players/{playerId}/stoppages — the identical response (PRO)

`GET /players/{playerId}/injuries`

## Request

- Base URL: `https://api.livetennisapi.com/api/public/v1`
- URL: `https://api.livetennisapi.com/api/public/v1/players/{playerId}/injuries`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Added 2026-09-16. The same handler, parameters, rows and meta as /players/{playerId}/stoppages, under the word the request used. The honest name is `stoppages`: nothing here is a diagnosis, only what the scorer, umpire or result stated.

## Path parameters

- `playerId` integer, required

## Query parameters

- `since` string
- `until` string
- `kind` string
- `before` string
- `limit` integer

## Response `200`

Identical to /players/{playerId}/stoppages

- object
  - `data` PlayerStoppage[]
    - `kind` 'medical_timeout' | 'trainer_called' | 'toilet_break' | 'pause' | 'stoppage' | 'retirement' | 'walkover'
    - `at` string, date-time: UTC instant of the stoppage (the source's own instant) or of the recorded outcome.
    - `match_id` integer
    - `tournament` string, nullable
    - `opponent` object, nullable: The other side of the match; null when unknown.
      - `id` integer
      - `name` string
    - `score_at` object: Stoppage rows only — the score at the stoppage.
      - `sets` integer[], nullable
      - `games` array[]
        - integer[]
      - `points` string[], nullable
    - `final_score` object: Outcome rows only, when a score row exists — sets and games of the newest score row.
      - `sets` integer[]
      - `games` array[]
        - integer[]
    - `attribution` 'player' | 'match': `player` — the source named this player's side (or the result names them as the non-winner); `match` — the source stated the stoppage for the match without a side, so the row appears in both players' lists.
    - `duration_seconds` integer, nullable: Seconds to the matching end row; null when no end row was recorded and on outcome rows.
    - `source_stated` boolean: True when a scorer, umpire, live-scoring state or result stated it; false only on `pause` (clock-inferred).
    - `reason` string: Stoppage rows only — the stated reason; `unknown` when only a flag reached us.
  - `meta` PlayerStoppagesMeta
    - `player_id` integer
    - `window` object: The bounds actually applied, UTC.
      - `since` string, date-time
      - `until` string, date-time
    - `kinds` string[]: The kinds this response was filtered to.
    - `counts` object: Per selected kind, the number of rows over the WHOLE window (not the page).
    - `latest_medical_timeout` PlayerStoppage: One row of GET /players/{playerId}/stoppages — an in-match stoppage on one of the player's matches, or a match the player did not finish. Stoppage rows carry `score_at`, `duration_seconds` and `reason`; outcome rows carry `final_score` when a score row exists. Never inferred except `pause` (source_stated false).
      - `kind` 'medical_timeout' | 'trainer_called' | 'toilet_break' | 'pause' | 'stoppage' | 'retirement' | 'walkover'
      - `at` string, date-time: UTC instant of the stoppage (the source's own instant) or of the recorded outcome.
      - `match_id` integer
      - `tournament` string, nullable
      - `opponent` object, nullable: The other side of the match; null when unknown.
        - `id` integer
        - `name` string
      - `score_at` object: Stoppage rows only — the score at the stoppage.
        - `sets` integer[], nullable
        - `games` array[]
          - integer[]
        - `points` string[], nullable
      - `final_score` object: Outcome rows only, when a score row exists — sets and games of the newest score row.
        - `sets` integer[]
        - `games` array[]
          - integer[]
      - `attribution` 'player' | 'match': `player` — the source named this player's side (or the result names them as the non-winner); `match` — the source stated the stoppage for the match without a side, so the row appears in both players' lists.
      - `duration_seconds` integer, nullable: Seconds to the matching end row; null when no end row was recorded and on outcome rows.
      - `source_stated` boolean: True when a scorer, umpire, live-scoring state or result stated it; false only on `pause` (clock-inferred).
      - `reason` string: Stoppage rows only — the stated reason; `unknown` when only a flag reached us.
    - `previous_medical_timeout` PlayerStoppage: One row of GET /players/{playerId}/stoppages — an in-match stoppage on one of the player's matches, or a match the player did not finish. Stoppage rows carry `score_at`, `duration_seconds` and `reason`; outcome rows carry `final_score` when a score row exists. Never inferred except `pause` (source_stated false).
      - `kind` 'medical_timeout' | 'trainer_called' | 'toilet_break' | 'pause' | 'stoppage' | 'retirement' | 'walkover'
      - `at` string, date-time: UTC instant of the stoppage (the source's own instant) or of the recorded outcome.
      - `match_id` integer
      - `tournament` string, nullable
      - `opponent` object, nullable: The other side of the match; null when unknown.
        - `id` integer
        - `name` string
      - `score_at` object: Stoppage rows only — the score at the stoppage.
        - `sets` integer[], nullable
        - `games` array[]
          - integer[]
        - `points` string[], nullable
      - `final_score` object: Outcome rows only, when a score row exists — sets and games of the newest score row.
        - `sets` integer[]
        - `games` array[]
          - integer[]
      - `attribution` 'player' | 'match': `player` — the source named this player's side (or the result names them as the non-winner); `match` — the source stated the stoppage for the match without a side, so the row appears in both players' lists.
      - `duration_seconds` integer, nullable: Seconds to the matching end row; null when no end row was recorded and on outcome rows.
      - `source_stated` boolean: True when a scorer, umpire, live-scoring state or result stated it; false only on `pause` (clock-inferred).
      - `reason` string: Stoppage rows only — the stated reason; `unknown` when only a flag reached us.
    - `record_starts` object: How far back each family is recorded — read before trusting a long window.
      - `stoppages` string: 2026-09-12 — no stoppage row exists before this day.
      - `outcomes` string, nullable: Date of the oldest match with a stated winner (the field an outcome row needs).
    - `note` string: In-match stoppages and match outcomes only; no off-court injury record.
    - `limit` integer
    - `count` integer
    - `has_more` boolean
    - `next_cursor` string, nullable: Pass back as `?before=`; null when the window is exhausted.

## Other responses

- `400`: window_too_long, bad_window, bad_since, bad_until, bad_kind or bad_cursor
- `401`: Missing, unknown, or disabled credentials
- `403`: Your tier doesn't unlock this endpoint
- `404`: No roster player holds this id. Carries the archive signpost (`detail` + `see`) when the id is a corpus person id.
- `410`: The player id existed and was merged into another player record, or was retired with no successor. The body is `PlayerMerged`, not `Error`: it carries a forwarding address, which is the whole point of answering 410 rather than 404. An id that was NEVER issued keeps its 404 — a 410 would assert it once existed.
- `429`: Rate limit exceeded (Retry-After header present). Three body shapes, told apart by `error` and `scope`: the per-MINUTE limit (`rate_limited`, with `upgrade_url`, `tier` and `price` naming the next tier up); the per-DAY quota (`rate_limited` with `scope: "day"`, `limit_per_day`, and `resets_at` — the absolute ISO instant the daily window resets); and `abuse_throttled` with `retry_at_epoch` — a 24-hour block applied to clients that keep hammering far past their cap, which a well-behaved retry loop never sees. Fix the loop rather than retrying through it.

---

[API](https://skmtc.dev/livetennisapi/apis/live-tennis-api.md) · [All operations](https://skmtc.dev/livetennisapi/apis/live-tennis-api/llms.txt) · [OpenAPI document](https://skmtc.dev/livetennisapi/apis/live-tennis-api/revisions/7881947e8e43?raw)
