# Get a fixture's conditions

`GET /v1/fixtures/{id}/conditions`

The conditions the fixture was played in (the attendance, whether the venue was
neutral, the observed weather) as known at `known_at`, one `mc_<digits>` match
conditions record per source. Governed by the `context` dataset, with the access,
versioning, delay and billing rules of `GET /v1/fixtures/{id}/officials`; served where
every source holds the display right for conditions (Sportmonks and FootyStats do).

- **One record per source.** Each source's report is its own record, served side by
  side. `source` names the record's provider where the caller may see source references
  (`read:sources` and the source's display right) and is left out otherwise. Rights are
  judged per source: a record whose source may not serve the caller is left out.
- **One reconciled attendance.** `attendance` is the attendance of the first source, in
  the order Sportmonks then FootyStats, whose served record reports one at the cutoff; a
  withheld or missing source falls through to the next, any other source never supplies
  it, and when none does it is `null`. Attendance is served from 2026-11-01; for an
  earlier `known_at` it is `null`. `attendance_source` names that source on the terms of
  `source`. A FootyStats
  attendance between 1 and 999 (a figure in thousands) is treated as not reported.
- **Values.** A value the source did not report is `null`; a later report without it
  keeps the known value. `attendance` 0 is a match behind closed doors.
- **Weather.** The source's observed weather only, never a forecast; `basis` `current`
  is its reading at the match, `day` its day values when it has no such reading. The
  values are metric: degrees Celsius, wind speed in m/s, wind direction in degrees,
  pressure in hPa.
- **`status`.** `available`: at least one record is served. `unavailable`: no record is
  known for the fixture at the cutoff. `withheld`: records exist but no source of them
  holds the right to serve conditions to this caller.

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.

Returns `200`: The fixture's conditions as known at the cutoff.
The body is [the fixture conditions object](obj-FixtureConditions.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 · Known at fallback):

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

Example response (200):

```json
{
  "fixture_id": "fx_1",
  "status": "available",
  "conditions": [
    {
      "id": "mc_3",
      "version": 1,
      "attendance": 18000,
      "neutral_venue": null,
      "weather": null,
      "recorded_at": "2026-11-01T00:30:00Z",
      "source": "footystats"
    }
  ],
  "attendance": 18000,
  "attendance_source": "footystats",
  "sources": {
    "status": "included",
    "items": [
      {
        "source": "footystats",
        "observed_at": "2026-11-01T00:25:00Z",
        "recorded_at": "2026-11-01T00:30:00Z",
        "precision": "minute"
      }
    ]
  },
  "knowledge": {
    "known_at": "2026-11-01T00:45:00Z",
    "as_requested": true
  }
}
```
