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

Group: Fixtures

Incidents — goals, cards, substitutions, period markers, added-time boards — oldest first (chronological).

Note: An empty array when the fixture has no events (yet). An injuryTime incident carries the announced added minutes in addedMinute. minute is null off the clock (before kick-off, at half-time, on the bench, in a shoot-out — shoot-out kicks come last, in kick order: shootoutSequence 1…N across both sides, shootoutRound = the taker’s side’s 1st, 2nd, … kick). A period row means that period ended (its period is the one that ended; the period still being played has none), and on set sports its homeScore / awayScore are sets won so far. Every incident’s period is set. Every field is present on every incident (null when it does not apply to the type); type and detail are closed enums. A football goal carries buildUp: the passes, crosses and shots that led to it (side, player, minute, pitch position and end position, assist, body part, expected goals), the goal last; [] on every other incident and where the source has none. Cricket ball-by-ball and the per-point rows of set sports are not listed. Refreshed about every 30 seconds while the match is live.

## Parameters

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

## Response

- `data`: `Incident[]`
- `meta`: count
- Objects: Incident (https://sportsapi.app/markdown/en/reference.md#incident)

## Request

cURL:

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

TypeScript:

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

Python:

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

Go:

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

CLI:

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

## Example response

```json
{ "data": [ …,
    { "type": "card", "detail": "secondYellow", "side": "home", "minute": 77, "period": "period2", "reason": "Foul", "rescinded": false, … },
    { "type": "goal", "detail": "regular", "side": "away", "minute": 80, "addedMinute": null, "second": null,
      "period": "period2", "player": { "id": 3759, "name": "Bukayo Saka", … }, "playerName": "Bukayo Saka",
      "assists": [ { "id": 3762, "name": "Declan Rice", … } ], "homeScore": 0, "awayScore": 1,
      "buildUp": [ { "action": "pass", "side": "away", "player": { "id": 3762, "name": "Declan Rice", … }, "minute": 80,
                     "position": { "x": 52.1, "y": 38.4 }, "endPosition": { "x": 84.6, "y": 30.2 }, "assist": true, "bodyPart": null,
                     "expectedGoals": null, "expectedGoalsOnTarget": null, "goalMouthLocation": null },
                   { "action": "goal", "side": "away", "player": { "id": 3759, "name": "Bukayo Saka", … }, "minute": 80,
                     "position": { "x": 86.6, "y": 27.5 }, "endPosition": null, "assist": false, "bodyPart": "rightFoot",
                     "expectedGoals": 0.028, "expectedGoalsOnTarget": 0.165, "goalMouthLocation": "highCentre" } ], … },
    { "type": "substitution", "detail": "injury", "side": "home", "minute": 85, "period": "period2",
      "playerIn": { "id": 281171, "name": "Chris Wood", … }, "playerOut": { … }, … },
    { "type": "injuryTime", "detail": null, "side": null, "minute": 90, "addedMinute": 4, "period": "period2", … } ],
  "meta": { "count": 24 } }
```

---

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/events · All docs: https://sportsapi.app/markdown/en/docs.md
