---
title: "Full football match payload (probabilities + distributions/CDFs)"
method: GET
path: "/v1/predictions/football/{match_id}"
tags: ["predictions"]
---

# Full football match payload (probabilities + distributions/CDFs)

`GET /v1/predictions/football/{match_id}`

## Request

- Base URL: `https://api.predixsport.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.predixsport.com/v1/predictions/football/{match_id}`
- Auth: none declared

Returns the full payload for a single football match. Includes the 1X2 (`home_win` / `draw` / `away_win`), over/under 2.5 and BTTS probabilities, expected values for corners / shots / goal spread, and the full count PMF (`distributions`) and CDF (`cdfs`) for each. Three independent classifiers feed the probability fields — cross-family mismatches on the same match are expected. Without the optional `league` hint the service probes all 12 league tables (5 top flights + 7 second divisions) in turn; pass `?league=...` to skip the probe and save a roundtrip when you know the league. Returns **404** when no row matches in any league table.

## Path parameters

- `match_id` string, required

## Query parameters

- `league` 'serie_a' | 'premier_league' | 'la_liga' | 'bundesliga' | 'ligue_1' | 'championship' | 'league_one' | 'league_two' | 'segunda_division' | 'ligue_2' | 'bundesliga_2' | 'serie_b'

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- FootballMatchDetail
  - `match_id` string, required
  - `sport` 'football'
  - `league` string, required
  - `prediction_date` string, date, required
  - `season` string, required
  - `home_team` string, required
  - `away_team` string, required
  - `probabilities` FootballProbabilities, required: Three-way result + over/under + both-teams-to-score outcomes. NOTE — model independence: ``home_win``/``draw``/``away_win`` are the output of the 1X2 softmax classifier; ``over_2_5``/``under_2_5`` are the output of an independent over/under binary classifier; ``btts_yes``/ ``btts_no`` are the output of a third independent classifier. The three families do NOT share a joint likelihood: a high P(home_win) need not imply a correspondingly high P(over_2_5), and the 1X2 marginal need not equal the sum of any exact-score family. Apparent inconsistencies between these probabilities on the same match are EXPECTED BY DESIGN. To assess the reliability of any single probability call ``GET /v1/calibration/football/<model_id>`` (or its MCP equivalent ``get_model_calibration``). Discover model ids via ``GET /v1/models``.
    - `home_win` number, nullable: Probability home team wins outright. Source: 1X2 classifier.
    - `draw` number, nullable: Probability of a draw. Source: 1X2 classifier (same model as home_win / away_win).
    - `away_win` number, nullable: Probability away team wins outright. Source: 1X2 classifier.
    - `predicted_result` string, nullable: Argmax of the 1X2 classifier (home / draw / away).
    - `under_2_5` number, nullable: P(total goals ≤ 2). Source: INDEPENDENT over/under classifier — NOT derived from the 1X2 model.
    - `over_2_5` number, nullable: P(total goals ≥ 3). Source: INDEPENDENT over/under classifier — NOT derived from the 1X2 model.
    - `predicted_under_over` string, nullable
    - `btts_yes` number, nullable: P(both teams score ≥ 1). Source: INDEPENDENT BTTS classifier — NOT derived from the 1X2 or O/U models.
    - `btts_no` number, nullable
    - `predicted_btts` string, nullable
  - `expected_corners` number, nullable
  - `expected_shots` number, nullable
  - `expected_spread` number, nullable: Expected (home_goals - away_goals). Positive = home favoured.
  - `distributions` FootballDistributions: Probability mass functions for count-style targets.
    - `corners` object, nullable
    - `shots` object, nullable
    - `spread` object, nullable
  - `cdfs` FootballDistributions: Probability mass functions for count-style targets.
    - `corners` object, nullable
    - `shots` object, nullable
    - `spread` object, nullable
  - `key_factors` KeyFactors: Concept-level attribution of the winner prediction. Computed with gradient-based attribution on the production neural network and aggregated into human concepts; the factors approximately sum to the gap between the served win probability and an even matchup. For football the factors compare the two sides directly (the draw probability is modelled separately). Absent on rows predicted before the explainability rollout (June 2026).
    - `schema_version` integer: Contract version of this payload.
    - `baseline_probability` number, nullable: Model probability for an average matchup — the reference point the factors move the prediction away from.
    - `factors` KeyFactor[]: Factors sorted by absolute impact (largest first).
      - `key` string, required: Stable identifier of the factor (e.g. 'surface', 'starting_five', 'attack').
      - `label` string, required: Human-readable factor name, as shown on predixsport.com.
      - `prob_points` number, required: How many win-probability percentage points this factor moves the prediction. Positive values favour the first side (player one / home team), negative values the second side.
      - `direction` string, required: What the factor favours: 'player_one'/'player_two' for tennis, 'home'/'away' for NBA and football winner attributions, 'under'/'over' for the football under/over 2.5 attribution.
      - `stable` boolean, required: True when the attribution sign is consistent across independent estimator runs. Treat unstable factors as indicative, not decisive.
      - `display` boolean: False for internal context buckets not shown on predixsport.com.
      - `share` number, nullable: This factor's share of the total absolute attribution (0-1).
      - `synthetic` boolean, nullable: True for fixed baseline terms (home advantage, league scoring environment) that reflect league-wide tendencies rather than this specific matchup.
      - `side` string, nullable: For per-team factors on outcome attributions (football under/over): which team the factor describes ('home'/'away'). Surfaces can substitute the actual team name into the label.
  - `key_factors_under_over` KeyFactors: Concept-level attribution of the winner prediction. Computed with gradient-based attribution on the production neural network and aggregated into human concepts; the factors approximately sum to the gap between the served win probability and an even matchup. For football the factors compare the two sides directly (the draw probability is modelled separately). Absent on rows predicted before the explainability rollout (June 2026).
    - `schema_version` integer: Contract version of this payload.
    - `baseline_probability` number, nullable: Model probability for an average matchup — the reference point the factors move the prediction away from.
    - `factors` KeyFactor[]: Factors sorted by absolute impact (largest first).
      - `key` string, required: Stable identifier of the factor (e.g. 'surface', 'starting_five', 'attack').
      - `label` string, required: Human-readable factor name, as shown on predixsport.com.
      - `prob_points` number, required: How many win-probability percentage points this factor moves the prediction. Positive values favour the first side (player one / home team), negative values the second side.
      - `direction` string, required: What the factor favours: 'player_one'/'player_two' for tennis, 'home'/'away' for NBA and football winner attributions, 'under'/'over' for the football under/over 2.5 attribution.
      - `stable` boolean, required: True when the attribution sign is consistent across independent estimator runs. Treat unstable factors as indicative, not decisive.
      - `display` boolean: False for internal context buckets not shown on predixsport.com.
      - `share` number, nullable: This factor's share of the total absolute attribution (0-1).
      - `synthetic` boolean, nullable: True for fixed baseline terms (home advantage, league scoring environment) that reflect league-wide tendencies rather than this specific matchup.
      - `side` string, nullable: For per-team factors on outcome attributions (football under/over): which team the factor describes ('home'/'away'). Surfaces can substitute the actual team name into the label.
  - `actual` FootballActual: Realized result once the match has been played and reconciled (the per-league ``football_in_season_performance*`` table). Absent until the match is played.
    - `result` string, nullable: Full-time result: 'H' (home win), 'D' (draw) or 'A' (away win).
    - `total_goals` number, nullable: Total goals scored by both teams.
    - `under_over_2_5` string, nullable: Realized under/over 2.5 goals: 'under_2_5' or 'over_2_5'.
    - `btts` string, nullable: Both-teams-to-score outcome: 'goal' or 'no_goal'.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/predixsport/apis/predixsport-api.md) · [All operations](https://skmtc.dev/predixsport/apis/predixsport-api/llms.txt) · [OpenAPI document](https://skmtc.dev/predixsport/apis/predixsport-api/revisions/02014aee733d?raw)
