# GET /v2/fixtures/{id}/commentary

Group: Fixtures

AI match commentary for a football fixture, oldest first (by seq; the newest 100): one short entry per goal, red card, missed penalty, VAR decision, period start / end, big chance and sustained momentum swing (events of the same few seconds share one entry), plus half-time and full-time summaries. Pro and Business plans.

Plans: Pro + Business only (other plans get 403 endpoint_not_in_plan).

Note: Written by SportsAPI AI from our own data of the match only — events, score, clock, shot map, statistics and our win-probability model; no betting language. Generated while someone follows the match: this endpoint or a fixture:{id} WebSocket channel keeps it going, so call it during the match (a match nobody followed has no entries); the featured top-league matches on sportsapi.app are always written. Each entry is written once and is the same for every client; seq never changes. kind is one of kickoff, goal, redCard, missedPenalty, varDecision, bigChance, momentum, periodStart, periodEnd, halfTime, fullTime, update; a fullTime summary carries minute 90 (120 after extra time). Live updates: fixture:{id} channels (Business) get a commentary frame per new entry.

## Parameters

| Name | In | Required | Description |
| --- | --- | --- | --- |
| `id` | path | yes | our numeric id (positive integer) |

## Response

- `data`: `Commentary`
- `meta`: count, generatedBy
- Objects: Commentary (https://sportsapi.app/markdown/en/reference.md#commentary)

## Errors

- 403 endpoint_not_in_plan — Free and Starter keys
- 404 not_supported — not a football fixture

Plus the common errors (https://sportsapi.app/markdown/en/docs.md#errors).

## Request

cURL:

```bash
curl -H "Authorization: Bearer sk_live_…" \
    "https://api.sportsapi.app/v2/fixtures/{id}/commentary"
```

TypeScript:

```ts
const { data, meta } = await client.fixtures.commentary(id);
```

Python:

```python
res = client.fixtures.commentary(id)
```

Go:

```go
res, err := client.Fixtures.Commentary(ctx, id)
```

CLI:

```bash
$ sportsapi fixtures commentary <id>
```

## Example response

```json
{ "data": { "fixtureId": 236923, "entries": [ …,
      { "seq": 2, "kind": "goal", "minute": 36, "addedMinute": null, "model": "sportsapi-ai", "createdAt": "2026-10-18T13:37:41.000Z",
        "text": "Nico Paz doubles Como's lead, finishing after a pass from Álex Valle, four minutes after Mattia Liberali's opener. Our model now gives Como an 85% win probability, up from 65%." },
      { "seq": 3, "kind": "halfTime", "minute": 45, "addedMinute": null, "model": "sportsapi-ai", "createdAt": "2026-10-18T13:52:04.000Z",
        "text": "Como lead Fiorentina 2-1 at the break. Mattia Liberali and Nico Paz struck in the 32nd and 36th minutes before Marin Pongračić pulled one back, a goal confirmed by VAR in first-half stoppage time." } ] },
  "meta": { "count": 3, "generatedBy": "sportsapi-ai" } }
```

---

Base URL: https://api.sportsapi.app. Send your API key as `Authorization: Bearer <key>` on every /v2 request; keys are created in the dashboard (https://sportsapi.app/dashboard).
HTML: https://sportsapi.app/docs/fixtures/commentary · All docs: https://sportsapi.app/markdown/en/docs.md
