---
title: "Get my saved NBA Fantasy roster, tonight's five and the week ahead"
method: GET
path: "/v1/fantasy/nba/me"
tags: ["fantasy"]
---

# Get my saved NBA Fantasy roster, tonight's five and the week ahead

`GET /v1/fantasy/nba/me`

## 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/fantasy/nba/me`
- Auth: none declared

Returns the private squad saved under the same Predixsport account and everything computed from it. A squad carries a `mode`: 'salary_cap' is the official NBA game and 'season_long' an ESPN-like points league. A season-long squad also returns a `league` node with the contract it is played under (active slots, per-player platform eligibility, matchup end), the days a plan can see, and the latest saved tonight lineup and add/drop plan under `league.snapshots`, each marked `stale` when the squad or the projections have moved since. A stale plan is history: run the matching POST again rather than acting on it. The board below is the official Salary Cap card and is computed on every read: the highest projected legal Gameday five out of the players you hold, the bench order behind it, every rostered player's week with the thinnest names called out, and the Captain call. The Captain call is a stated RULE, not a model pick (policy captain_form_daily_v1): it backs your best realised-form player OF THOSE WITH A GAME LEFT in the Gameweek, on the first day he is in his team's published five, and it forces the choice on the last day your squad can still spend the chip. The board says which Gameweek it worked in: 'official' is a hand-entered calendar of the game's own Gameweeks, 'iso_week_approximation' is the ISO week of the slate day and is not an official Gameweek. The owner is derived exclusively from the bearer token. This endpoint does not accept a user id. The same roster is edited in the web workspace and through the MCP tools. NBA projections exist on game day only, so an empty card with a populated roster is the normal state outside a slate, not an outage. A weekly number is a sum of per-game expectations and carries no distribution and no availability. The NBA fantasy workspace is a public beta. When the operator narrows it to a private trial, this endpoint answers 403 for an account outside it.

## Query parameters

- `season` string, nullable: NBA season, e.g. 2027. Omitted = the current season.

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- NBAFantasyStateResponse
  - `sport` 'nba'
  - `roster` NBAFantasySavedRoster, required
    - `season` string, required
    - `preset` 'espn_points' | 'yahoo_9cat' | 'sleeper_points' | 'nba_salary_cap': The scoring system this squad is played in. Omitted on an update = the saved one is kept (nba_salary_cap for a first save).
    - `mode` 'salary_cap' | 'season_long', nullable: Which game this squad is played in: 'salary_cap' is the official NBA game, 'season_long' an ESPN-like points league. Omitted on an update = the saved one is kept; on a first save the scoring system decides.
    - `roster` NBAFantasyRosterPlayer[]
      - `name` string, required
      - `court` 'BC' | 'FC', nullable: Owner override of the listed position: BC for backcourt, FC for frontcourt. Null means the listed position decides.
    - `league_rules` NBAFantasyLeagueRules: The contract a season-long league is played under. No two season-long leagues are the same: the active slots, what a platform lets a player fill and when the matchup ends all differ, and a lineup computed from a default would be right for one owner and wrong for the next with nothing in the response to say so.
      - `version` integer
      - `preset` 'espn_points' | 'yahoo_9cat' | 'sleeper_points' | 'nba_salary_cap', nullable
      - `slots` NBAFantasySlot[], nullable: Omit for the ESPN default: PG, SG, SF, PF, C, G, F and three UTIL.
        - `slot` string, required
        - `count` integer, required
        - `eligible` string[], nullable: Which positions this slot accepts. Omitted for the slots every platform names the same way (PG, SG, SF, PF, C, G, F, UTIL).
      - `bench` integer
      - `matchup_end` string, date, nullable: Last day of the current matchup, in the owner's own time zone.
      - `timezone` string, nullable
      - `lock` 'per_game': The only lineup lock served today. Weekly-lock leagues, waivers and acquisition limits are out of scope.
      - `eligibility` object
    - `chip_used_on` string, date, nullable: The day the owner spent the Captain chip this Gameweek. Null means it is still available. Omitted on an update = the saved day is kept, so resending the squad never revives a spent chip.
    - `revision` integer, required: Increments only when the saved content changes, so an identical save is idempotent and does not move it.
    - `updated_at` string, date-time, nullable
    - `changed` boolean, nullable: Whether this write changed the stored squad.
  - `board` NBAFantasyBoard
    - `preset` string, required
    - `playing_today` integer
    - `gameday` NBAFantasyGameday, required
      - `ok` boolean, required
      - `reason` string, nullable
      - `formation` string, nullable
      - `starters` NBAFantasyGamedayPlayer[]
        - `player_name` string, nullable
        - `team` string, nullable
        - `court` string, nullable
        - `expected` number, nullable
        - `lineup_status` string, nullable
        - `low_confidence` boolean
        - `filler` boolean: No game tonight: fielded only to complete a legal five when the players with a game cannot, so he scores zero.
      - `expected_total` number, nullable
      - `bench` NBAFantasyGamedayPlayer[]
        - `player_name` string, nullable
        - `team` string, nullable
        - `court` string, nullable
        - `expected` number, nullable
        - `lineup_status` string, nullable
        - `low_confidence` boolean
        - `filler` boolean: No game tonight: fielded only to complete a legal five when the players with a game cannot, so he scores zero.
      - `unassigned` string[]
      - `playing` integer
      - `legal_fives` integer
      - `forced` boolean: The squad admits exactly one legal five, so the card is a display of a decision already made rather than a choice.
      - `captain_candidates` NBAFantasyCaptainDay[]
        - `date` string, required
        - `players` NBAFantasyCaptainDayPlayer[], required
          - `player_name` string, required
          - `team` string, nullable
          - `expected` number, required
      - `fillers` string[]: Starters with no game tonight, named so the five is legal: fewer than five of the squad play, and the game still wants five.
    - `week` NBAFantasyWeek, required
      - `players` NBAFantasyWeekPlayer[]
        - `player_name` string, required
        - `team` string, nullable
        - `games` integer
        - `expected` number, nullable
        - `per_game` number, nullable
        - `in_week` boolean
      - `drops` string[]: The thinnest weeks in this squad. A statement about the calendar, not a recommendation to trade.
      - `horizon_days` integer, nullable
      - `preset` string, nullable
    - `captain` NBAFantasyCaptain, required
      - `policy` string, nullable: Identifier of the captain policy that produced this answer. 'captain_form_daily_v1' is the measured decision-3b rule.
      - `state` string, required: play, wait, wait_lineup, no_form or chip_used. The rule has no model in it: it backs the squad's best realised-form player OF THOSE WITH A GAME LEFT in the Gameweek, on the first day he is in his team's published five, and it forces the choice on the last day the squad can still spend the chip. wait_lineup is that last day with no published five yet.
      - `player_name` string, nullable
      - `form` number, nullable
      - `form_games` integer, nullable
      - `team` string, nullable
      - `expected_today` number, nullable
      - `reason` string, nullable: Why today is not the day: no_game, no_lineup, not_in_five, or no_games_left when the whole squad is out of Gameweek games.
      - `next_day` string, nullable
      - `chip_used_on` string, nullable
      - `forced` boolean: The Gameweek ends for this squad today, so the call is the forced one rather than a choice between days.
      - `last_usable_day` boolean: No rostered player has a game later in the Gameweek and the whole window is inside the projection horizon.
      - `gameweek` NBAFantasyGameweek
        - `source` 'official' | 'iso_week_approximation', required: Where the Gameweek boundary came from. 'official' is a hand-entered calendar of the game's own Gameweeks. 'iso_week_approximation' is the ISO week (Monday to Sunday) of the slate day in US Eastern, which is an approximation of the boundary and NOT an official Gameweek.
        - `gameweek` integer, nullable: Official Gameweek number, null under the approximation.
        - `label` string, nullable
        - `start` string, nullable
        - `end` string, nullable: Last day of the window, the day the chip expires.
        - `last_gameday` string, nullable
        - `key` string, nullable
      - `gameweek_source` string, nullable: Same value as gameweek.source, flat for convenience.
      - `ranked` NBAFantasyCaptainRanked[]
        - `player_name` string, required
        - `form` number, required
        - `games_left` integer, nullable: Games this player has left in the Gameweek, today included. Zero means the chip can no longer be spent on him.
      - `candidates` string[]: Rostered players with a game left in the Gameweek.
      - `no_games_left` string[]: Rostered players with form whose Gameweek games are all played. They are ranked and named but cannot be captained in it.
      - `without_form` string[]
      - `skipped` string[]
    - `missing_from_slate` string[]
    - `early_season` NBAFantasyEarlySeason
      - `active` boolean: True in the opening fortnight of a season, before the player model can run: tonight's numbers then come from an audited early-season prior (last season, this season's first games and tonight's role), and/or the Captain ranks on last season's form.
      - `model_variants` string[]: Labels of the early-season rows on the board, e.g. cold_start_player_prior_nba_v1.
      - `form_source` 'current_season' | 'previous_season': Which season's realised form the Captain rule ranks on.
  - `salary_cap` NBAFantasySalaryCapBlock: The official half of the owner read: prices, window, saved plans.
    - `available` boolean, required: False when there is no OPEN market to plan against, which is the steady state between two seasons and before the first collection of a period. The saved squad, tonight's card and the Captain call do not depend on it and keep working.
    - `state` 'open' | 'waiting_for_prices' | 'no_market' | 'market_unavailable' | 'no_rules': 'open' is a live Gameday market. 'waiting_for_prices' is the game between two seasons: a snapshot exists but its period is a calendar day rather than an open Gameday, so it is the board the game CLOSED the last season with. Nothing is priced on it, because it still names players who have retired since.
    - `message` string, nullable: The sentence to show the reader while there is no open market. Present for waiting_for_prices and no_market.
    - `free_transfers` integer, required
    - `extra_transfer_point_cost` integer, required
    - `transfer_rules_source` string, required
    - `value_wording` string, nullable
    - `court_source` 'official_market'
    - `cap` number, nullable
    - `squad_size` integer, nullable
    - `max_per_club` integer, nullable
    - `market` NBAFantasyMarketReference: Which frozen snapshot of the official market a plan was priced from.
      - `snapshot_id` integer, required
      - `revision` integer, required
      - `period_kind` 'gameday' | 'calendar_day', required
      - `period_key` string, required
      - `source_observed_at` string, date-time, nullable
      - `collected_at` string, date-time, nullable
      - `deadline_at` string, date-time, nullable: The official Gameday deadline this market was frozen before.
      - `player_count` integer, required
      - `priced_players` integer, required: How many priced players we could place against our own player identity. The rest are on the market and not in this plan.
      - `duplicate_identities` integer
    - `window` NBAFantasyGameweekWindow: The Gameweek a transfer plan was made for, and how we know it.
      - `source` 'official' | 'iso_week_approximation', nullable: 'official' is the game's own Gameweek calendar. 'iso_week_approximation' is the ISO week of the slate day and is NOT an official Gameweek: say so wherever the window is shown.
      - `gameweek` integer, nullable
      - `label` string, nullable
      - `start` string, nullable
      - `end` string, nullable
      - `today` string, nullable
      - `days_counted` string[]: The days inside the window our published calendar can see.
      - `players_with_games` integer: Priced players with at least one game left in the window. Zero means there is nothing left to plan for in this Gameweek, which is a state and not a failure.
    - `squad` object[]: Your saved players at the frozen prices, with the game's court.
    - `squad_value` number, nullable
    - `unpriced` string[]: Saved players the frozen market carries no price for.
    - `board_digest` string, nullable
    - `snapshots` object
  - `league` NBAFantasyLeagueBlock: The season-long half of the owner read.
    - `rules` object, nullable
    - `optimisable` boolean, required: False for a nine-category league, which has no single score and therefore no lineup optimiser and no add/drop comparison.
    - `slate_day` string, nullable
    - `horizon` string[]
    - `horizon_end_reason` string, nullable
    - `unconfirmed_eligibility` string[]: Players whose platform eligibility is still our guess from their listed position.
    - `lock_slots` object: Which of the league's slots each player may be locked into. A lock pins the slot he is already playing in, so this is the list that slot is chosen from.
    - `board_digest` string, nullable
    - `snapshots` object

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-20** `02014aee733d`: 3 info
  - added the optional property `board/anyOf[subschema #1: NBAFantasyBoard]/gameday/bench/items/filler` to the response with the `200` status
  - added the optional property `board/anyOf[subschema #1: NBAFantasyBoard]/gameday/fillers` to the response with the `200` status
  - added the optional property `board/anyOf[subschema #1: NBAFantasyBoard]/gameday/starters/items/filler` to the response with the `200` status

[Operation history](https://skmtc.dev/predixsport/apis/predixsport-api/changes/v1/fantasy/nba/me/get.md)

---

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