---
title: "How well the Euroleague models track one club"
method: GET
path: "/v1/teams/euroleague/{team}/prediction-performance"
tags: ["teams"]
---

# How well the Euroleague models track one club

`GET /v1/teams/euroleague/{team}/prediction-performance`

## 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/teams/euroleague/{team}/prediction-performance`
- Auth: none declared

Per-club reconciliation of our game predictions against realized results. `team` accepts the canonical club name ("Baskonia Vitoria-Gasteiz"), the slug ("baskonia-vitoria-gasteiz"), the 3-letter club code ("BAS") or ANY historical sponsor name ("Laboral Kutxa Vitoria", "TD Systems Baskonia Vitoria-Gasteiz") — Euroleague club names carry the season's title sponsor and change almost every year, while the code stays put. Returns the club's predictability (binary Brier score of the win probability vs the Euroleague-wide average, with an 'on_script'/'in_line'/'chaos' tier), winner accuracy over all predicted games and over confident calls (65%+) next to the league baseline, upset counts (wins as a clear underdog, losses as a clear favourite), and the most recent reconciled games with the pre-game probabilities. Season keys are the Euroleague codes, e.g. `E2025` for 2025-26.

## Path parameters

- `team` string, required

## Query parameters

- `season` string, nullable: Euroleague season code, e.g. E2025 = the 2025-26 season. Omitted = the club's latest covered season.
- `last` integer: How many recent reconciled games to return

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- EuroLeagueTeamPerformanceResponse
  - `team` string, required: Canonical, sponsor-free club name. Euroleague club names carry the season's title sponsor and change almost every year, so this is the stable name and `team_code` the stable identifier.
  - `team_code` string, required: 3-letter club code — the join key in every Euroleague table
  - `slug` string, required
  - `season` string, required: Euroleague season key, e.g. 'E2025' = 2025-26
  - `season_label` string, required
  - `source` string, required: 'backtest': the reconciled record replays a completed season with the deployed model on data it never trained on (train up to 2022-23, tuning on 2023-24, the whole 2025-26 season out-of-sample). 'production' will mark seasons predicted live, game by game, from 2026-27 onward.
  - `games` integer, required: Reconciled games behind the numbers
  - `predictability` TeamPredictability, required
    - `brier` number, nullable: Mean binary Brier score of our as-published game-day win probability over the team's reconciled games. Lower = the team's results were easier to call.
    - `league_brier` number, nullable: Same average over every reconciled game in the NBA
    - `delta_pct` number, nullable: How much easier (+) or harder (-) the team was to call than the NBA average, as a percentage of the league Brier.
    - `tier` string, nullable: 'on_script' (clearly easier than the league), 'in_line', or 'chaos' (clearly harder). Null below 15 reconciled games.
  - `markets` TeamMarketAccuracy[], required
    - `market` string, required: 'game_winner' (every predicted game) or 'confident_calls' (only games where the model gave one side at least 65%)
    - `team_accuracy` number, nullable: % of the team's games the as-published prediction called correctly
    - `league_accuracy` number, nullable: NBA-wide % over the same season
  - `upsets_caused` integer, required: Games the club WON while our model gave it under 35% — wins as a clear underdog.
  - `upsets_suffered` integer, required: Games the club LOST while our model gave it 65% or more — losses as a clear favourite.
  - `recent_games` TeamRecentGame[], required: Most recent reconciled games first
    - `match_id` string, required: Prediction file_name — join key across the API
    - `date` string, nullable
    - `opponent` string, required
    - `is_home` boolean, required
    - `team_win_probability` number, nullable: As-published win probability for THIS team (%)
    - `predicted` string, nullable: Predicted outcome from the team's perspective: W / L
    - `result` string, required: Realized outcome from the team's perspective
    - `score` string, nullable: Final score from the team's perspective, e.g. '110-98'
    - `prediction_correct` boolean, nullable

## 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)
