---
title: "Current rating snapshot for a sport"
method: GET
path: "/v1/ratings/{sport}"
tags: ["ratings"]
---

# Current rating snapshot for a sport

`GET /v1/ratings/{sport}`

## 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/ratings/{sport}`
- Auth: none declared

Returns the latest standings snapshot. NBA + football + EuroLeague populate per-team ratings with rank ordering (EuroLeague: ELO + Glicko-2 with rating-deviation, plus the current-season W/L record); tennis (ATP) and wta (women's tennis) return per-player ratings including surface-specific ELO (hard/clay/grass), form_index, and race ranking. Snapshot date reflects the last ratings-pipeline run for the relevant season.

## Path parameters

- `sport` 'nba' | 'euroleague' | 'football' | 'tennis' | 'wta' | 'champions', required

## Query parameters

- `season` string, nullable: Season as stored in the AI pipeline ("2026" for NBA/tennis/wta, "2025_2026" for football, "E2025" for EuroLeague). Defaults to the most recent on file.
- `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

- union
  - NBARatingsResponse
    - `sport` 'nba'
    - `season` integer, required
    - `snapshot_date` string, date, nullable, required
    - `teams` NBATeamRating[], required
      - `name` string, required
      - `position_overall` integer, required: League-wide rank by ELO (1 = strongest).
      - `position_conference` integer, nullable: Rank within the team's conference (1 = strongest).
      - `conference` string, nullable: Conference identifier ("east" or "west").
      - `elo_rating` number, required: Predixsport ELO rating. Higher = stronger; the population is centred near 1500 by construction. See /blog/nba-elo-ratings for the full methodology.
      - `matches_played` integer, required: Games played this season.
      - `wins` integer, required
      - `losses` integer, required
      - `win_pct` number, required: Wins divided by matches_played, in [0, 1].
      - `last_10_wins` integer, nullable: Wins in the team's most recent 10 regular-season games.
      - `last_10_losses` integer, nullable
      - `streak` string, nullable: Current run encoded as "W4" (won last 4) or "L2" (lost last 2).
  - EuroLeagueRatingsResponse
    - `sport` 'euroleague'
    - `season` string, required
    - `snapshot_date` string, nullable
    - `teams` EuroLeagueTeamRating[], required
      - `name` string, required: Full club name as published by the EuroLeague (e.g. 'Real Madrid').
      - `team_code` string, required: Three-letter EuroLeague club code (e.g. 'MAD').
      - `elo_rank` integer, required: Rank by `elo_rating` among current-season clubs (1 = strongest).
      - `elo_rating` number, required: Predixsport ELO rating. Season-relative: it resets to 0 at the start of each season, so positive = above the season-start baseline and a value can be negative for a club performing below it. Higher = stronger.
      - `glicko_rank` integer, nullable: Rank by `glicko_rating` among current-season clubs (1 = strongest).
      - `glicko_rating` number, nullable: Glicko-2 rating — unlike ELO this carries across seasons (centred near 1500) and pairs with `glicko_rd` to gauge confidence.
      - `glicko_rd` number, nullable: Rating Deviation — Glicko-2's uncertainty estimate. Lower = more confident; it rises across the off-season gap.
      - `glicko_vol` number, nullable: Glicko-2 volatility — how erratic the club's recent results are.
      - `matches_played` integer: Games played this season.
      - `wins` integer
      - `losses` integer
      - `win_pct` number: wins / matches_played, in [0, 1].
  - FootballRatingsResponse
    - `sport` 'football'
    - `season` string, required
    - `snapshot_date` string, date, nullable: Date of the most recent completed match included in the ratings (the data horizon) — NOT when they were computed, see `run_date`.
    - `run_date` string, date, nullable: Date the ratings were computed (the module run). With several leagues in one response, the first league's run.
    - `teams` FootballTeamRating[], required
      - `name` string, required
      - `league` string, required: Customer-facing league code (e.g. 'serie_a').
      - `position_overall_elo` integer, required: Rank within the league by overall ELO (1 = strongest).
      - `elo_overall_rating` number, required: Combined ELO rating across attack + defense. See /blog/football-elo-ratings for the methodology.
      - `elo_attack_rating` number, nullable: Attack-side component of the team's ELO. Updated more strongly by goal-scoring outcomes than by clean sheets.
      - `elo_defense_rating` number, nullable: Defense-side component of the team's ELO. Updated more strongly by goals-conceded outcomes than by goals scored.
      - `position_overall_glicko2` integer, nullable: Rank within the league by overall Glicko-2.
      - `glicko2_overall_rating` number, nullable: Glicko-2 rating — adds Rating Deviation (uncertainty) and Volatility on top of ELO. See /blog/football-glicko2-ratings.
      - `glicko2_attack_rating` number, nullable: Attack-side component of the team's Glicko-2 rating.
      - `glicko2_defense_rating` number, nullable: Defense-side component of the team's Glicko-2 rating.
      - `matches_played` integer, required
      - `wins` integer, required
      - `draws` integer, required
      - `losses` integer, required
      - `goals_for` integer, required: Total goals scored this season.
      - `goals_against` integer, required: Total goals conceded this season.
      - `league_points` integer, required: League-table points: 3 per win, 1 per draw, 0 per loss.
  - TennisRatingsResponse
    - `sport` 'tennis'
    - `season` string, required
    - `snapshot_date` string, nullable
    - `players` TennisPlayerRating[], required
      - `name` string, required
      - `elo_rating` number, required: Overall surface-agnostic Predixsport ELO rating. See /blog/tennis-elo-ratings for the methodology.
      - `elo_rank` integer, nullable: Tour rank by `elo_rating` (1 = strongest).
      - `glicko2_rating` number, nullable: Glicko-2 rating — adds Rating Deviation (uncertainty) on top of ELO. Pairs with `glicko2_rd` to gauge confidence.
      - `glicko2_rd` number, nullable: Rating Deviation — Glicko-2's uncertainty estimate. Lower = more confident; new / returning players see higher RD.
      - `glicko2_rank` integer, nullable
      - `surface_hard_rating` number, nullable: Hard-court-specific form index. Surface ratings live in a different scale than overall ELO — interpret them relative to the tour, not against `elo_rating`.
      - `surface_hard_rank` integer, nullable
      - `surface_clay_rating` number, nullable: Clay-court form index. See `surface_hard_rating` note.
      - `surface_clay_rank` integer, nullable
      - `surface_grass_rating` number, nullable: Grass-court form index. See `surface_hard_rating` note.
      - `surface_grass_rank` integer, nullable
      - `form_index` number, nullable: Short-window recency score (~last 8 matches) blending result, opponent strength and surface. Scaled so most active players sit in [0, 100].
      - `race_rankings` number, nullable: ATP Race points — calendar-year ranking points. Roughly proportional to current-season title pursuit.
      - `matches_played` integer
      - `matches_won` integer
      - `win_rate` number: matches_won / matches_played, in [0, 1].
  - WTARatingsResponse: WTA (women's tennis) ratings — same per-player shape as ATP tennis (``race_rankings`` carries WTA Race points for this sport).
    - `sport` 'wta'
    - `season` string, required
    - `snapshot_date` string, nullable
    - `players` TennisPlayerRating[], required
      - `name` string, required
      - `elo_rating` number, required: Overall surface-agnostic Predixsport ELO rating. See /blog/tennis-elo-ratings for the methodology.
      - `elo_rank` integer, nullable: Tour rank by `elo_rating` (1 = strongest).
      - `glicko2_rating` number, nullable: Glicko-2 rating — adds Rating Deviation (uncertainty) on top of ELO. Pairs with `glicko2_rd` to gauge confidence.
      - `glicko2_rd` number, nullable: Rating Deviation — Glicko-2's uncertainty estimate. Lower = more confident; new / returning players see higher RD.
      - `glicko2_rank` integer, nullable
      - `surface_hard_rating` number, nullable: Hard-court-specific form index. Surface ratings live in a different scale than overall ELO — interpret them relative to the tour, not against `elo_rating`.
      - `surface_hard_rank` integer, nullable
      - `surface_clay_rating` number, nullable: Clay-court form index. See `surface_hard_rating` note.
      - `surface_clay_rank` integer, nullable
      - `surface_grass_rating` number, nullable: Grass-court form index. See `surface_hard_rating` note.
      - `surface_grass_rank` integer, nullable
      - `form_index` number, nullable: Short-window recency score (~last 8 matches) blending result, opponent strength and surface. Scaled so most active players sit in [0, 100].
      - `race_rankings` number, nullable: ATP Race points — calendar-year ranking points. Roughly proportional to current-season title pursuit.
      - `matches_played` integer
      - `matches_won` integer
      - `win_rate` number: matches_won / matches_played, in [0, 1].

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