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

# How well the NBA models track one team

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

Per-team reconciliation of our as-published game-day predictions against realized results. `team` accepts the franchise name ("Boston Celtics"), the slug ("boston-celtics") or a historical era name ("Seattle SuperSonics" resolves to the Thunder). Returns the team's predictability (binary Brier score of the win probability vs the NBA-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 favorite), and the most recent reconciled games with the pre-game probabilities. NBA predictions exist only on game day, so the record is as-published by nature (`source='production'`). Typical use: judge how much to trust today's prediction for a team by checking how the model has tracked it this season.

## Path parameters

- `team` string, required

## Query parameters

- `season` string, nullable: NBA season key: the closing year, e.g. 2026 = the 2025-26 season. Omitted = the team's latest covered season.
- `last` integer: How many recent reconciled games to return

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- NBATeamPerformanceResponse
  - `team` string, required: Stored franchise name — the join key across the API
  - `slug` string, required
  - `conference` string, nullable: 'East' or 'West'
  - `season` string, required: NBA season key: the closing year, e.g. '2026' = 2025-26
  - `season_label` string, required
  - `source` string, required: 'production': the rows are the game-day predictions as originally published during the season (NBA predictions exist only on game day, so the record is as-published by nature).
  - `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 team WON while our model gave it under 35% — wins as a clear underdog.
  - `upsets_suffered` integer, required: Games the team LOST while our model gave it 65% or more — losses as a clear favorite.
  - `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)
