# Get a fixture

`GET /v1/fixtures/{id}`

One fixture with its revision history and current result. Rescheduling preserves the
identifier; `kickoff_at`, `status`, `stage_id`, `venue` and the sides are the state as
known at `known_at`, `kickoff_revisions` lists every revision recorded by that cutoff
(each a citable `rev_` record) and `result` is the highest result version recorded by
then (`null` when none). `include=provenance` adds, for each field whose value is
chosen among several sources, the source it was taken from (needs the `read:sources`
scope). Only what sources holding a display right for fixtures stated is
served: revisions and result versions another source reported are left out, a value
such a source won is withheld (`venue` and scores as `null`), and a fixture known only
through such sources, or whose kickoff or status such a source won, is a `404`.

Parameters:
- `id` (path, string, required): Canonical or retired fixture identifier (`fx_<digits>`); another kind's prefix or an undecodable body is a 400 naming `id`.
- `known_at` (query, timestamp, optional): Knowledge cutoff (UTC); the answer reflects only what OddsFinder had recorded by this instant. Default is the request time. Must not be in the future.
- `include` (query, enum, optional): Optional blocks to add to a single-entity read. `provenance` names, for each field whose value is chosen among several sources, the source report it was taken from as known at `known_at`; it needs the `read:sources` scope (`403 not-entitled`, `restriction: scope` otherwise), and a field is `withheld` when its source holds no display right. One of: `provenance`.

Returns `200`: The fixture as known at the cutoff.
The body is [the fixture object](obj-Fixture.md).

Errors: `400` Malformed parameter or cursor (`invalid-request`).; `401` Missing or invalid credential (`unauthenticated`).; `403` Operation not permitted (`forbidden`) or restricted by grants/rights (`not-entitled`).; `404` Unknown identifier at the requested cutoff (`not-found`).; `422` Well-formed but unanswerable (`invalid-range`, `unsupported-historical-capability`).; `429` The per-minute rate limit is used up (`rate-limited`) or a daily allowance is exhausted (`quota-exceeded`). Failed requests (403, 404, other 4xx, 5xx) use up the per-minute rate limit too.; `500` Unexpected failure (`internal-error`); `request_id` identifies the server-side record.; `503` A service this operation depends on, or the access check, is temporarily unavailable (`unavailable`, `policy-unavailable`).

Example request (200 · After kickoff correction):

```bash
curl -G https://api.example.com/v1/fixtures/fx_1 \
  -H "X-API-Key: $ODDSFINDER_API_KEY" \
  -d known_at=2026-10-01T00:00:00Z
```

Example response (200):

```json
{
  "id": "fx_1",
  "competition_id": "cmp_1",
  "season_id": "ssn_1",
  "stage_id": "stg_1",
  "home_team_id": "tm_1",
  "away_team_id": "tm_2",
  "kickoff_at": "2026-10-03T16:30:00Z",
  "kickoff_precision": "minute",
  "status": "scheduled",
  "venue": "Northbridge Park",
  "venue_id": "ven_1",
  "kickoff_revisions": [
    {
      "id": "rev_1",
      "revision_no": 1,
      "kickoff_at": "2026-10-03T14:00:00Z",
      "kickoff_precision": "minute",
      "status": "scheduled",
      "recorded_at": "2026-09-01T09:00:00Z",
      "reason": "initial"
    },
    {
      "id": "rev_2",
      "revision_no": 2,
      "kickoff_at": "2026-10-03T16:30:00Z",
      "kickoff_precision": "minute",
      "status": "scheduled",
      "recorded_at": "2026-09-25T09:00:00Z",
      "reason": "kickoff_correction"
    }
  ],
  "result": {
    "id": "res_1",
    "version": 1,
    "status": "pending",
    "result_kind": null,
    "score_ht": null,
    "score_ft": null,
    "score_et": null,
    "score_pens": null,
    "retracted": false,
    "decided_at": null,
    "recorded_at": "2026-09-01T09:00:00Z"
  },
  "knowledge": {
    "known_at": "2026-10-01T00:00:00Z",
    "as_requested": true
  },
  "sources": {
    "status": "included",
    "items": [
      {
        "source": "synthetic_alpha",
        "observed_at": "2026-09-25T08:55:00Z",
        "recorded_at": "2026-09-25T09:00:00Z",
        "precision": "minute"
      }
    ]
  }
}
```
