---
title: "The matches one incident affected, as JSONL or CSV (BASIC)"
method: GET
path: "/history/incidents/{incidentId}/matches"
---

# The matches one incident affected, as JSONL or CSV (BASIC)

`GET /history/incidents/{incidentId}/matches`

## Request

- Base URL: `https://api.livetennisapi.com/api/public/v1`
- URL: `https://api.livetennisapi.com/api/public/v1/history/incidents/{incidentId}/matches`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

One row per affected match, streamed as JSONL by default or CSV with `?format=csv`. Columns are `incident_id`, `match_id`, `tournament`, `tour`, `round`, `draw_stage`, `scheduled_time`, `affected_field`, `served` and `expected`. `served` and `expected` carry that incident's own vocabulary: for the deciding-set rule `match_tiebreak` against `full_set`, for the price side `side_reversed` against `side_players`, and for a field repair the before and after values. Rows are derived from stored data by the same code every consumer of that field uses. A match whose derivation would be a guess is left out, and the incident's `matches.note` says which those are, so this export is exact rather than complete.

## Path parameters

- `incidentId` string, required

## Query parameters

- `format` 'jsonl' | 'csv'

## Response `200`

One row per affected match, as a file attachment.

## Other responses

- `400`: `bad_format` — `format` was neither `jsonl` nor `csv`.
- `401`: Missing, unknown, or disabled credentials
- `403`: Your tier doesn't unlock this endpoint
- `404`: `not_found` for an unknown incident id. `not_derivable` for an incident with no exact per-match derivation, carrying that incident's `window_utc`, `affected_surfaces` and the note saying why.
- `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)
