DFS slates API
slates
dfs.slatesDFS contest slate. A slate is one operator + one league + a fixed game pool + scoring rules; users build lineups against it. Slate player and team projections are available directly on this slate resource or under the Projections section.
GET/api/v1/dfs/slatesList slates for DFS
Requires one of:
sport or league or operator_id + date or operator + date or operator_slate_id or external_id — requests satisfying none of these return 400.Parameters
operator_idquerybigintoptionalFilter to all slates for a single DFS operator: by numeric id (1 DraftKings, 2 FanDuel, 3 Yahoo).
operatorquerystringoptionalFilter to all slates for a single DFS operator: draftkings, fanduel, yahoo (or numeric operator id).
datequerydateoptionalSlate calendar date in US Eastern time (YYYY-MM-DD), derived from start_time. Range operators let a caller ask for the most recent slates on or before a day, which is how a client finds live data without knowing the schedule. Range syntax: date__gte=, date__lte=, date__between=.
leaguequerystringoptionalLeague — code (NFL, NBA, MLB, NHL, GOLF; case-insensitive) or numeric league id. Resolves via main.leagues.
sportquerystringoptionalSport/league code (NFL, NBA, MLB, NHL, GOLF; case-insensitive). Resolves via main.leagues.
external_idquerybigintoptionalOperator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId).
operator_slate_idquerybigintoptionalOperator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId). Resolves to slate id.
statusquerystringoptionalFilter by slate lifecycle status: Upcoming, Live, Completed (case-insensitive). Values: Upcoming, Live, Completed, upcoming, live, completed.
limitqueryintegeroptionaldefault 100Page size. Defaults to 100; max 5000.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/dfs/slates?date=2026-10-18&operator_id=1'Responses
200slates rows matching the declared filter set, wrapped in { slates, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.
application/jsonResponse Schema(18 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
external_id | bigint | — | Operator-side slate identifier (e.g., DraftKings contest group ID). e.g. 16775 |
league_id | bigint | — | FK to the league this slate belongs to. e.g. 2 |
operator_id | bigint | FK to the DFS operator (DraftKings, FanDuel, Yahoo, etc.). e.g. 2 | |
operator_setting_id | stringnullable | — | The operator's own id for the lineup setting this slate is played under — FanDuel states it as slateFormatId, DraftKings as lineupConfigurationId. Matches dfs.slate_settings.operator_setting_id. Text, because some stored values are not numbers (deprecated-5399). Never a key on its own: the operators reuse these ids across sports and versions, so resolution is (operator, league, this id) then the newest valid_from not after the slate date. e.g. 25 |
slate_setting_id | bigint | FK to slate_settings — the scoring format and roster constraints for this slate. e.g. 23 | |
contest_count | integer | — | Number of contests on this slate (rows in dfs.contests). Counts lobby-only contests too, which never have lineups. e.g. — (all-null in sample) |
date | date | — | Calendar day of the slate in US Eastern time (DB-generated from start_time — read-only). e.g. 2026-02-24 |
game_count | integer | — | Number of games in the slate pool (distinct games in dfs.slate_games). 0 when the slate has no linked games. e.g. — (all-null in sample) |
game_type | stringnullable | — | Roster format of the slate, from its slate setting: classic (full roster), showdown (DraftKings Showdown Captain Mode — CPT at 1.5x salary and points), single_game (FanDuel Single Game — MVP at 1.5x points, no salary change), or tiers. Null when the setting states another format. e.g. — (all-null in sample) |
lineup_contest_count | integer | — | Number of contests on this slate with their lineups loaded (dfs.contests.lineups_status = available). 0 when no contest of the slate has a lineup file. e.g. — (all-null in sample) |
main | boolean | — | Whether this is the featured ("main") slate for this operator/league/day — at most one per (operator, league, date). Daily for NBA/MLB/NHL, Sundays for NFL, never for golf. Backfilled 2016-2026 on 2026-08-24 (docs/migrations/scripts/2026-08-24-dfs-slates-main-backfill.sql). Rows loaded after that date are not yet auto-flagged. Values:falsetrue |
name | stringnullable | — | Human-readable slate label (e.g., "Sunday Main", "Showdown: TB vs KC"). e.g. Main |
part_of_game | stringnullable | — | The part of each game that the slate scores, from the scoring rule of its slate setting (dfs.slate_settings.scoring): full, or second_half and fourth_quarter for an in-game slate. Null when the setting holds no scoring rule. e.g. — (all-null in sample) |
player_count | integer | — | Number of priced players in the slate pool (rows in dfs.slate_players). e.g. — (all-null in sample) |
start_time | timestamptz | — | Lock time — first scheduled tip/kickoff of any game in the pool. e.g. 2026-02-25T00:00:00.000Z |
state | string | — | Lifecycle state of the slate in the Prelock / Started / Completed vocabulary, derived by the API on every read (browse.rs derive_dfs_lifecycle_state) from `status`: Upcoming → Prelock, Live → Started, Completed → Completed. `status` is the authoritative field; this one repeats it in the older vocabulary. e.g. — (all-null in sample) |
status | string | — | Authoritative slate lifecycle status: Upcoming (pre-lock), Live (in progress), Completed (all games final). e.g. Completed |
GET/api/v1/dfs/slates/{id}Get a single slate by id
Parameters
idpathbigintrequiredPrimary key (id) of the slate row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/dfs/slates/676551'Responses
200Single slate row.application/jsonshow example ▸
404Row not found.
Response Schema(18 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
external_id | bigint | — | Operator-side slate identifier (e.g., DraftKings contest group ID). e.g. 16775 |
league_id | bigint | — | FK to the league this slate belongs to. e.g. 2 |
operator_id | bigint | FK to the DFS operator (DraftKings, FanDuel, Yahoo, etc.). e.g. 2 | |
operator_setting_id | stringnullable | — | The operator's own id for the lineup setting this slate is played under — FanDuel states it as slateFormatId, DraftKings as lineupConfigurationId. Matches dfs.slate_settings.operator_setting_id. Text, because some stored values are not numbers (deprecated-5399). Never a key on its own: the operators reuse these ids across sports and versions, so resolution is (operator, league, this id) then the newest valid_from not after the slate date. e.g. 25 |
slate_setting_id | bigint | FK to slate_settings — the scoring format and roster constraints for this slate. e.g. 23 | |
contest_count | integer | — | Number of contests on this slate (rows in dfs.contests). Counts lobby-only contests too, which never have lineups. e.g. — (all-null in sample) |
date | date | — | Calendar day of the slate in US Eastern time (DB-generated from start_time — read-only). e.g. 2026-02-24 |
game_count | integer | — | Number of games in the slate pool (distinct games in dfs.slate_games). 0 when the slate has no linked games. e.g. — (all-null in sample) |
game_type | stringnullable | — | Roster format of the slate, from its slate setting: classic (full roster), showdown (DraftKings Showdown Captain Mode — CPT at 1.5x salary and points), single_game (FanDuel Single Game — MVP at 1.5x points, no salary change), or tiers. Null when the setting states another format. e.g. — (all-null in sample) |
lineup_contest_count | integer | — | Number of contests on this slate with their lineups loaded (dfs.contests.lineups_status = available). 0 when no contest of the slate has a lineup file. e.g. — (all-null in sample) |
main | boolean | — | Whether this is the featured ("main") slate for this operator/league/day — at most one per (operator, league, date). Daily for NBA/MLB/NHL, Sundays for NFL, never for golf. Backfilled 2016-2026 on 2026-08-24 (docs/migrations/scripts/2026-08-24-dfs-slates-main-backfill.sql). Rows loaded after that date are not yet auto-flagged. Values:falsetrue |
name | stringnullable | — | Human-readable slate label (e.g., "Sunday Main", "Showdown: TB vs KC"). e.g. Main |
part_of_game | stringnullable | — | The part of each game that the slate scores, from the scoring rule of its slate setting (dfs.slate_settings.scoring): full, or second_half and fourth_quarter for an in-game slate. Null when the setting holds no scoring rule. e.g. — (all-null in sample) |
player_count | integer | — | Number of priced players in the slate pool (rows in dfs.slate_players). e.g. — (all-null in sample) |
start_time | timestamptz | — | Lock time — first scheduled tip/kickoff of any game in the pool. e.g. 2026-02-25T00:00:00.000Z |
state | string | — | Lifecycle state of the slate in the Prelock / Started / Completed vocabulary, derived by the API on every read (browse.rs derive_dfs_lifecycle_state) from `status`: Upcoming → Prelock, Live → Started, Completed → Completed. `status` is the authoritative field; this one repeats it in the older vocabulary. e.g. — (all-null in sample) |
status | string | — | Authoritative slate lifecycle status: Upcoming (pre-lock), Live (in progress), Completed (all games final). e.g. Completed |
GET/api/v1/dfs/slates/{slate_id}/contest-ownershipProjected captain and FLEX ownership by contest, the biggest prize pool first (lobby), and by contest group
Parameters
slate_idpathbigintrequiredInternal STAT-API slate ID (references dfs.slates.id).
contestquerybigintoptionalThe contest to show in `contest` (dfs.contests id of a contest of the slate with learned rows). Default `default_contest`, the biggest prize pool. Without DFS access a contest that is not free answers locked. An id that is not a contest of the slate answers 400.
comparequerybigintoptionalThe contest to show in `compare` (dfs.contests id of a contest of the slate with learned rows). Default `default_compare`, the biggest cash game. Without DFS access a contest that is not free answers locked. An id that is not a contest of the slate answers 400.
formatquerystringoptionaldefault json'json' (default) or 'csv'. csv=players is free to every caller; csv=groups and csv=contests need DFS access, except on a TNF or MNF game's single-game slate (402 otherwise).
csvquerystringoptionaldefault groupsWith format=csv: 'groups' (default, one row per player and group), 'contests' (one row per contest and player, every contest in lobby order) or 'players' (one row per player the caller's plan lists in the open contest: 10 on a classic slate, 5 on a single-game slate without DFS access). Without format=csv it answers 400.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/dfs/slates/676551/contest-ownership'Responses
200Projected captain and FLEX ownership by contest, the biggest prize pool first (lobby), and by contest groupapplication/jsonshow example ▸
400Invalid slate ID, an unknown format or csv value, csv without format=csv, or a contest or compare id that is not a contest of the slate with learned rows
402format=csv with csv=groups or csv=contests without DFS access, on a slate other than a TNF or MNF game's single-game slate
404Slate not found (an excluded format, a test or a cancelled slate)
Response Schema(16 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
slate | object | — | The slate. |
↳id slate.id | bigint | — | dfs.slates id. |
↳external_id slate.external_id | bigint | — | Operator slate ID (DraftKings draft group, FanDuel fixture list). |
↳operator slate.operator | string | — | DraftKings or FanDuel. |
↳name slate.name | stringnullable | — | Slate name. |
↳game_type slate.game_type | stringnullable | — | The slate setting's format, as on /dfs/slates. |
↳in_game slate.in_game | boolean | — | True for an in-game format (DraftKings In-Game Showdown, FanDuel 2nd half or 4th quarter). In-game formats have no projections by design. |
↳start_time slate.start_time | stringnullable | — | Lock time (ISO 8601, UTC). |
↳status slate.status | stringnullable | — | Upcoming, Live or Completed. |
↳captain_slot slate.captain_slot | stringnullable | — | The captain slot word of the format (CPT on DraftKings, MVP on FanDuel). Null on a format without one. |
↳flex_seats slate.flex_seats | bigintnullable | — | Roster seats that are not the captain seat, from the slate setting (5 on DraftKings Showdown and on FanDuel single game since 2025). The FLEX ownership of one contest sums to 100 x flex_seats percent. |
↳games slate.games | list | — | The slate's games. |
↳game_id slate.games[].game_id | bigint | — | nfl.games id. |
↳away slate.games[].away | stringnullable | — | Away team abbreviation. |
↳home slate.games[].home | stringnullable | — | Home team abbreviation. |
↳kickoff slate.games[].kickoff | stringnullable | — | Kickoff (ISO 8601, UTC). |
source | string | — | The projection source of every value (always STAT_API_LATEST). |
model | stringnullable | — | The learned model label of the served rows (`stats.ownership_model`, e.g. single_hgb@19d12bd6d309). Null when no rows are served. |
as_of | stringnullable | — | The newest write time of the served rows (ISO 8601, UTC). Null when no rows are served. |
reason | stringnullable | — | Why `contests` and `groups` are empty (an in-game format, no STAT_API_LATEST source for the format, no learned rows yet, or a slate of another league than NFL, which this board does not serve). Null when contests are served. |
access | object | — | What this caller sees. |
↳plan access.plan | string | — | pro (every contest and player), primetime (every contest and player for every caller, on a TNF or MNF game's single-game slate), featured (the free contests with the 5 featured players, on a pre-game single-game slate) or preview (the free contests with 5 players). |
↳players_total access.players_total | bigint | — | Players on the board. |
↳players_shown access.players_shown | bigint | — | Players in `players`. |
default_contest | bigintnullable | — | The contest the tool opens on (Frank 2026-10-01): the biggest prize pool, the first of `contests`. Null without a contest. |
default_compare | bigintnullable | — | The contest each value compares with (Frank 2026-10-01): the biggest cash game (contest_type 1), by prize pool, then max_entries, then id. Null when the slate has no cash contest. |
contests | list | — | The lobby, the biggest prize pool first, then the largest max_entries, then the lowest id. With DFS access every contest of the slate with learned rows (no qualifier, no cancelled contest). Without it only the free contests: the 5 biggest prize pools of the slate, in the same order. The page filters them All, Cash or GPP and shows 5 of each with DFS access. |
↳id contests[].id | bigint | — | dfs.contests id (the `contest` and `compare` parameter). |
↳external_id contests[].external_id | bigint | — | Operator contest ID. |
↳name contests[].name | string | — | Contest name. |
↳prize_pool contests[].prize_pool | decimal | — | Prize pool, in dollars. |
↳entry_fee contests[].entry_fee | decimal | — | Entry fee, in dollars. |
↳entries contests[].entries | bigint | — | Entries (entry_count) when last read. |
↳max_entries contests[].max_entries | bigint | — | Maximum entries. |
↳max_entries_per_user contests[].max_entries_per_user | bigint | — | Maximum entries per user. |
↳kind contests[].kind | string | — | cash (contest_type 1) or gpp, the same rule as the groups. |
↳entry_type contests[].entry_type | stringnullable | — | GPP only: single_entry (max_entries_per_user 1) or multi_entry. Null for cash. |
↳tier contests[].tier | string | — | Size tier by max_entries (the tiers of the groups). |
↳group contests[].group | string | — | The key of the contest's group in `groups`. |
↳prize_rank contests[].prize_rank | bigint | — | The contest's place among every contest of the slate (1 = the biggest prize pool). A caller without DFS access sees the ranks of the free contests, 1-5 always among them. |
↳same_terms contests[].same_terms | bigint | — | How many other contests of the slate share the model's contest terms (archetype, max_entries, entry fee, max entries per user), so the same values. |
↳open contests[].open | boolean | — | True when this caller may see the contest's values. Always true, since a caller without DFS access gets only the free contests. |
contest | objectnullable | — | The values of the selected contest (`?contest=`, default `default_contest`). Null without a contest. |
↳id contest.id | bigint | — | dfs.contests id. |
↳locked contest.locked | boolean | — | True when this caller may not see the contest's values. A locked contest sends no player and no position total. |
↳reason contest.reason | stringnullable | — | Why the contest is locked, and the plan that opens it. Null when it is open. |
↳players contest.players | list | — | The shown players (all with DFS access, else the 5 featured players or the 5-row preview) with a value in the contest, the highest total first. Empty when locked. |
↳player_id contest.players[].player_id | bigintnullable | — | nfl.players id (the `player_id` of `players`). |
↳captain_pct contest.players[].captain_pct | decimalnullable | — | Captain ownership in the contest, in percent (the stored projected_ownership of the captain row x 100). |
↳flex_pct contest.players[].flex_pct | decimalnullable | — | FLEX ownership in the contest, in percent. |
↳seats contest.players[].seats | list | — | On a slate with boost seats (FanDuel's old single game: MVP 2x, STAR 1.5x, PRO 1.2x and FLEX), one entry per seat. Empty on any other slate. |
↳seat contest.players[].seats[].seat | string | — | The seat (MVP, STAR, PRO or FLEX). |
↳pct contest.players[].seats[].pct | decimalnullable | — | The seat's share, in percent. Null when the player has no row for the seat. |
↳total_pct contest.players[].total_pct | decimalnullable | — | captain_pct + flex_pct, plus the STAR and PRO seats on a slate with boost seats (the sum of `seats`). |
↳captain_rate contest.players[].captain_rate | decimalnullable | — | captain_pct / total_pct (0-1). Null when the total is 0 or a value is missing. |
↳captain_rank contest.players[].captain_rank | bigintnullable | — | Rank of the captain ownership among all players of the contest (1 = most owned; ties share a rank). |
↳flex_rank contest.players[].flex_rank | bigintnullable | — | Rank of the FLEX ownership among all players of the contest. |
↳actual_captain_pct contest.players[].actual_captain_pct | decimalnullable | — | After the contest is final: the field's actual captain (CPT or MVP) ownership of the player in this contest, in percent (GET /api/v1/dfs/contests/{contest_id}/ownership x 100; 0 when no lineup used the seat). Null on a classic contest, and while `actual_status` is not `served`. |
↳actual_flex_pct contest.players[].actual_flex_pct | decimalnullable | — | After the contest is final: the field's actual FLEX ownership in percent; on a classic contest the player's one actual ownership. Null while `actual_status` is not `served`. |
↳actual_total_pct contest.players[].actual_total_pct | decimalnullable | — | After the contest is final: the field's actual ownership of the player in any seat, in percent. Null while `actual_status` is not `served`. |
↳position_totals contest.position_totals | object | — | The contest's ownership summed by real position over every player of the contest (also the players not shown), in percent. Captain sums to about 100, FLEX to about 100 x flex_seats. Both maps are empty when locked. |
↳captain contest.position_totals.captain | object | — | Real position (QB, RB, WR, TE, K, DST, D) to the sum of its captain ownership. |
↳flex contest.position_totals.flex | object | — | Real position to the sum of its FLEX ownership. |
↳seats contest.position_totals.seats | object | — | On a slate with boost seats: seat (MVP, STAR, PRO, FLEX) to real position to the sum of its share. Empty on any other slate. |
↳actual_status contest.actual_status | stringnullable | — | The contest's actual ownership: `served` when its players carry it; `pro_required` when the caller's plan does not open the results of this contest (a marquee contest's are free to everyone); else the reason of GET /api/v1/dfs/contests/{contest_id}/ownership (`contest_not_final`, `in_game_format`, `league_not_computed`, `no_lineups`, `actuals_not_recomputed`). Null before the slate is final, and on a locked contest. |
compare | objectnullable | — | The values of the compare contest (`?compare=`, default `default_compare`), the same shape as `contest`. Null when the slate has no cash contest and none is asked. |
↳id compare.id | bigint | — | dfs.contests id. |
↳locked compare.locked | boolean | — | True when this caller may not see the contest's values. A locked contest sends no player and no position total. |
↳reason compare.reason | stringnullable | — | Why the contest is locked, and the plan that opens it. Null when it is open. |
↳players compare.players | list | — | The shown players (all with DFS access, else the 5 featured players or the 5-row preview) with a value in the contest, the highest total first. Empty when locked. |
↳player_id compare.players[].player_id | bigintnullable | — | nfl.players id (the `player_id` of `players`). |
↳captain_pct compare.players[].captain_pct | decimalnullable | — | Captain ownership in the contest, in percent (the stored projected_ownership of the captain row x 100). |
↳flex_pct compare.players[].flex_pct | decimalnullable | — | FLEX ownership in the contest, in percent. |
↳seats compare.players[].seats | list | — | On a slate with boost seats (FanDuel's old single game: MVP 2x, STAR 1.5x, PRO 1.2x and FLEX), one entry per seat. Empty on any other slate. |
↳seat compare.players[].seats[].seat | string | — | The seat (MVP, STAR, PRO or FLEX). |
↳pct compare.players[].seats[].pct | decimalnullable | — | The seat's share, in percent. Null when the player has no row for the seat. |
↳total_pct compare.players[].total_pct | decimalnullable | — | captain_pct + flex_pct, plus the STAR and PRO seats on a slate with boost seats (the sum of `seats`). |
↳captain_rate compare.players[].captain_rate | decimalnullable | — | captain_pct / total_pct (0-1). Null when the total is 0 or a value is missing. |
↳captain_rank compare.players[].captain_rank | bigintnullable | — | Rank of the captain ownership among all players of the contest (1 = most owned; ties share a rank). |
↳flex_rank compare.players[].flex_rank | bigintnullable | — | Rank of the FLEX ownership among all players of the contest. |
↳actual_captain_pct compare.players[].actual_captain_pct | decimalnullable | — | After the contest is final: the field's actual captain (CPT or MVP) ownership of the player in this contest, in percent (GET /api/v1/dfs/contests/{contest_id}/ownership x 100; 0 when no lineup used the seat). Null on a classic contest, and while `actual_status` is not `served`. |
↳actual_flex_pct compare.players[].actual_flex_pct | decimalnullable | — | After the contest is final: the field's actual FLEX ownership in percent; on a classic contest the player's one actual ownership. Null while `actual_status` is not `served`. |
↳actual_total_pct compare.players[].actual_total_pct | decimalnullable | — | After the contest is final: the field's actual ownership of the player in any seat, in percent. Null while `actual_status` is not `served`. |
↳position_totals compare.position_totals | object | — | The contest's ownership summed by real position over every player of the contest (also the players not shown), in percent. Captain sums to about 100, FLEX to about 100 x flex_seats. Both maps are empty when locked. |
↳captain compare.position_totals.captain | object | — | Real position (QB, RB, WR, TE, K, DST, D) to the sum of its captain ownership. |
↳flex compare.position_totals.flex | object | — | Real position to the sum of its FLEX ownership. |
↳seats compare.position_totals.seats | object | — | On a slate with boost seats: seat (MVP, STAR, PRO, FLEX) to real position to the sum of its share. Empty on any other slate. |
↳actual_status compare.actual_status | stringnullable | — | The contest's actual ownership: `served` when its players carry it; `pro_required` when the caller's plan does not open the results of this contest (a marquee contest's are free to everyone); else the reason of GET /api/v1/dfs/contests/{contest_id}/ownership (`contest_not_final`, `in_game_format`, `league_not_computed`, `no_lineups`, `actuals_not_recomputed`). Null before the slate is final, and on a locked contest. |
across | object | — | The biggest contests side by side (the tool's Across contests tab). |
↳contest_ids across.contest_ids | list<L> | — | The contests in lobby order. With DFS access the 5 biggest GPP contests and the 5 biggest cash games (the page's three filters); without it the free contests, so the ids of `contests`. |
↳values across.values | object | — | Contest id to player id to [captain_pct, flex_pct], for the open contests of `contest_ids` and the shown players with a value. A locked contest is left out. |
↳seats across.seats | object | — | On a slate with boost seats: contest id to player id to seat (MVP, STAR, PRO, FLEX) to its share, for the same contests and players as `values`. Empty on any other slate. |
default_group | stringnullable | — | The group key the tool opened first before the lobby (Frank 2026-10-01, the largest GPP): the GPP group whose representative contest comes first by the representative order (paid, then the largest max_entries, then entries, prize pool, id). Null without a GPP group. |
groups | list | — | The contest groups, cash first, then single-entry GPP, then multi-entry GPP, each by size tier. DFS access only; empty without it. |
↳key groups[].key | string | — | The group key: kind, entry type (GPP only) and size tier, e.g. cash:3-100, gpp:single_entry:1k-10k, gpp:multi_entry:100k+. |
↳kind groups[].kind | string | — | cash or gpp, as the operator labels the contest (Frank 2026-10-01): contest_type 1 is cash, every other type gpp. A DraftKings Triple Up (contest_type 0) is gpp, although the model's archetype calls it cash. Only a contest without a contest_type falls back to the model's name rule (Double Up, 50/50, H2H, Triple Up). |
↳entry_type groups[].entry_type | stringnullable | — | GPP only: single_entry (max_entries_per_user 1) or multi_entry. Null for cash. |
↳size_tier groups[].size_tier | string | — | Size tier by max_entries. |
↳contest_count groups[].contest_count | bigint | — | Contests of the slate in this group that have learned rows. |
↳contest groups[].contest | object | — | The representative contest, whose stored values the group shows: paid first, then the largest max_entries, then the most entries, then the largest prize pool, then the lowest id. |
↳contest_id groups[].contest.contest_id | bigint | — | dfs.contests id. |
↳external_id groups[].contest.external_id | bigint | — | Operator contest ID. |
↳name groups[].contest.name | string | — | Contest name. |
↳entries groups[].contest.entries | bigint | — | Entries (entry_count) when last read. |
↳max_entries groups[].contest.max_entries | bigint | — | Maximum entries (the model's size feature). |
↳max_entries_per_user groups[].contest.max_entries_per_user | bigint | — | Maximum entries per user. |
↳entry_fee_cents groups[].contest.entry_fee_cents | bigint | — | Entry fee in cents. |
↳prize_pool_cents groups[].contest.prize_pool_cents | bigint | — | Prize pool in cents. |
↳archetype groups[].contest.archetype | string | — | The stored contest_archetype of its rows, else the model's rule. |
↳position_totals groups[].position_totals | list | — | The group's ownership summed by real position, captain and FLEX apart, over every player of the representative contest (also the players a preview does not list). Captain sums to about 100, FLEX to about 100 x flex_seats. |
↳position groups[].position_totals[].position | string | — | Real position (QB, RB, WR, TE, K, DST on DraftKings, D on FanDuel). |
↳captain_pct groups[].position_totals[].captain_pct | decimal | — | Sum of the captain ownership, in percent. |
↳flex_pct groups[].position_totals[].flex_pct | decimal | — | Sum of the FLEX ownership, in percent. |
↳seats groups[].position_totals[].seats | list | — | On a slate with boost seats, each seat's sum (MVP, STAR, PRO, FLEX). Empty on any other slate. |
↳seat groups[].position_totals[].seats[].seat | string | — | The seat (MVP, STAR, PRO or FLEX). |
↳pct groups[].position_totals[].seats[].pct | decimalnullable | — | The seat's share, in percent. Null when the player has no row for the seat. |
players | list | — | The players, highest peak total first (all with DFS access, else the 5 featured players or the 5-row preview). The order is the same for every caller, so the first 5 of a Pro answer are the featured players. |
↳player_id players[].player_id | bigintnullable | — | nfl.players id. |
↳name players[].name | stringnullable | — | Player name. |
↳team players[].team | stringnullable | — | Team abbreviation. |
↳position players[].position | stringnullable | — | Real position (QB, RB, WR, TE, K, DST or D). |
↳captain players[].captain | objectnullable | — | The captain (CPT or MVP) slot. Null on a format without one. |
↳slate_player_id players[].captain.slate_player_id | bigint | — | dfs.slate_players id of this slot. |
↳salary players[].captain.salary | integernullable | — | Salary of this slot. |
↳projected_points players[].captain.projected_points | decimalnullable | — | STAT_API_LATEST projected fantasy points of this slot. |
↳points_per_1k players[].captain.points_per_1k | decimalnullable | — | Projected points per $1,000 of salary. |
↳floor players[].captain.floor | decimalnullable | — | The projection's floor for this slot, its 15th percentile (the floor of GET /api/v1/dfs/slates/{slate_id}/projections). |
↳ceiling players[].captain.ceiling | decimalnullable | — | The projection's ceiling for this slot, its 85th percentile (the ceiling of GET /api/v1/dfs/slates/{slate_id}/projections). |
↳flex players[].flex | objectnullable | — | The FLEX slot. |
↳slate_player_id players[].flex.slate_player_id | bigint | — | dfs.slate_players id of this slot. |
↳salary players[].flex.salary | integernullable | — | Salary of this slot. |
↳projected_points players[].flex.projected_points | decimalnullable | — | STAT_API_LATEST projected fantasy points of this slot. |
↳points_per_1k players[].flex.points_per_1k | decimalnullable | — | Projected points per $1,000 of salary. |
↳floor players[].flex.floor | decimalnullable | — | The projection's floor for this slot, its 15th percentile (the floor of GET /api/v1/dfs/slates/{slate_id}/projections). |
↳ceiling players[].flex.ceiling | decimalnullable | — | The projection's ceiling for this slot, its 85th percentile (the ceiling of GET /api/v1/dfs/slates/{slate_id}/projections). |
↳seats players[].seats | list | — | On a slate with boost seats (FanDuel's old single game: MVP 2x, STAR 1.5x, PRO 1.2x and FLEX), the slot of each seat the player holds, in that order: the seat and the fields of a slot (slate_player_id, salary, projected_points, points_per_1k, floor, ceiling). `captain` is the MVP seat and `flex` the FLEX seat. Empty on any other slate. |
↳seat players[].seats[].seat | string | — | The seat (MVP, STAR, PRO or FLEX). |
↳slate_player_id players[].seats[].slate_player_id | bigint | — | dfs.slate_players id of this seat. |
↳salary players[].seats[].salary | integernullable | — | Salary of this seat. |
↳projected_points players[].seats[].projected_points | decimalnullable | — | STAT_API_LATEST projected fantasy points of this seat. |
↳points_per_1k players[].seats[].points_per_1k | decimalnullable | — | Projected points per $1,000 of salary. |
↳floor players[].seats[].floor | decimalnullable | — | The projection's floor for this seat, its 15th percentile. |
↳ceiling players[].seats[].ceiling | decimalnullable | — | The projection's ceiling for this seat, its 85th percentile. |
↳projected_minutes players[].projected_minutes | decimalnullable | — | The minutes we project the player to play, on an NBA slate (the value of the NBA projections). Null on an NFL slate. |
↳projection players[].projection | objectnullable | — | The essential fields of the player's projection: from the flat row (`format=flat`) GET /api/v1/dfs/slates/{slate_id}/projections serves for the player's FLEX (not multiplied) seat, as it stood at kickoff (`mode=pre`), with that route's keys and values. NBA: opponent, std_dev, usage_rate, play_probability, start_probability, pts, reb, ast, stl, blk, tov, fg3m, double_double_probability, triple_double_probability. NFL: opponent, std_dev, projected_team_snaps (the team's offensive snaps), projected_snaps (the player's), passing_attempts, passing_completions, passing_yds, passing_tds, interceptions_thrown, carries, rushing_yds, rushing_tds, targets, receptions, receiving_yds, receiving_tds. Null when the route has no row for the player. The players CSV (csv=players) adds one `projection.<field>` column per field. |
↳actual players[].actual | objectnullable | — | The player's actual result, once the stats services hold one (null before his game). |
↳fantasy_pts players[].actual.fantasy_pts | decimalnullable | — | The fantasy points he scored on the slate's scoring (GET /api/v1/dfs/player_stats `fantasy_pts` of his FLEX row). |
↳minutes players[].actual.minutes | decimalnullable | — | The minutes he played, on an NBA slate (GET /api/v1/nba/game_player_stats `minutes`). Null on NFL. |
↳peak_total_pct players[].peak_total_pct | decimalnullable | — | The highest total ownership in any free contest (the 5 biggest prize pools of the slate), in percent. The order of players and the featured pick, the same for every caller. |
↳captain_spread players[].captain_spread | objectnullable | — | Max minus min of the captain ownership across the groups, with the groups at both ends. Null without a value, and always null without DFS access (no groups). |
↳spread_pct players[].captain_spread.spread_pct | decimal | — | high_pct minus low_pct. |
↳high_group players[].captain_spread.high_group | string | — | The group key with the highest value (the first in group order on a tie). |
↳high_pct players[].captain_spread.high_pct | decimal | — | The highest value, in percent. |
↳low_group players[].captain_spread.low_group | string | — | The group key with the lowest value (the first in group order on a tie). |
↳low_pct players[].captain_spread.low_pct | decimal | — | The lowest value, in percent. |
↳flex_spread players[].flex_spread | objectnullable | — | The same for the FLEX ownership. |
↳spread_pct players[].flex_spread.spread_pct | decimal | — | high_pct minus low_pct. |
↳high_group players[].flex_spread.high_group | string | — | The group key with the highest value (the first in group order on a tie). |
↳high_pct players[].flex_spread.high_pct | decimal | — | The highest value, in percent. |
↳low_group players[].flex_spread.low_group | string | — | The group key with the lowest value (the first in group order on a tie). |
↳low_pct players[].flex_spread.low_pct | decimal | — | The lowest value, in percent. |
↳by_group players[].by_group | list | — | The player's values in each group, in the order of `groups`. Empty without DFS access. |
↳key players[].by_group[].key | string | — | The group key. |
↳captain_pct players[].by_group[].captain_pct | decimalnullable | — | Captain ownership in the representative contest, in percent (the stored projected_ownership of the captain row x 100). |
↳flex_pct players[].by_group[].flex_pct | decimalnullable | — | FLEX ownership in the representative contest, in percent. |
↳seats players[].by_group[].seats | list | — | On a slate with boost seats (FanDuel's old single game: MVP 2x, STAR 1.5x, PRO 1.2x and FLEX), one entry per seat. Empty on any other slate. |
↳seat players[].by_group[].seats[].seat | string | — | The seat (MVP, STAR, PRO or FLEX). |
↳pct players[].by_group[].seats[].pct | decimalnullable | — | The seat's share, in percent. Null when the player has no row for the seat. |
↳total_pct players[].by_group[].total_pct | decimalnullable | — | captain_pct + flex_pct, plus the STAR and PRO seats on a slate with boost seats (the sum of `seats`). |
↳captain_rate players[].by_group[].captain_rate | decimalnullable | — | captain_pct / total_pct (0-1). Null when the total is 0 or a value is missing. |
↳captain_rank players[].by_group[].captain_rank | bigintnullable | — | Rank of the captain ownership among all players of the group (1 = most owned; ties share a rank). |
↳flex_rank players[].by_group[].flex_rank | bigintnullable | — | Rank of the FLEX ownership among all players of the group. |
_metadata | object | — | Where the values come from, and on a gated answer the plan that opens the rest. |
↳contest_ownership _metadata.contest_ownership | stringnullable | — | persisted (the stored rows of the learned model) when contests are served, else null. |
↳required_tier _metadata.required_tier | stringnullable | — | Sent only when players or contests are held back - pro. |
↳message _metadata.message | stringnullable | — | Sent only when players or contests are held back - what the plan opens. |
↳total_actual_records _metadata.total_actual_records | bigintnullable | — | Sent only when players or contests are held back - the players on the board. |
GET/api/v1/dfs/slates/{slate_id}/projectionsDFS slate player projections, distributions, and betting props
Parameters
slate_idpathbigintrequiredInternal STAT-API slate ID (references dfs.slates.id). Operator contest group external IDs (e.g. 153770) are not accepted; query GET /api/v1/dfs/slates to resolve internal slate IDs.
sourcequerystringoptionaldefault STAT_API_LATESTProjection source name. The default, STAT_API_LATEST, is always the newest stat-api engine; its version is in `_metadata.engine_version`. STAT_API (the 2.1 engine) is deprecated. A request for STAT_API, or with no source, gets STAT_API_LATEST on every slate where STAT_API_LATEST has projections, and STAT_API on any other slate (`_metadata.fallback` is then true). A request for STAT_API_LATEST by name never falls back.
positionquerystringoptionalRoster position filter (e.g. QB, RB, WR, TE, DST, K, or comma-separated list).
formatquerystringoptionaldefault jsonRow format: 'json' (default) sends the nested rows in `projections`; 'flat' sends the flat rows in `player_stats`; 'csv' returns the flat rows as text/csv, one column per `player_stats` field, then one per `enrich` tag.
enrichquerystringoptionalComma-separated tags that join related data onto each player row, the same tags as on /dfs/slate_players: dfs.player_stats, nfl.games, nfl.teams, nfl.projected_player_snaps (or dfs.*, nfl.*, *; a sub-path such as nfl.games.opponent.abbreviation picks one field). Each tag adds one key (one CSV column) named by its table. mode=pre refuses dfs.player_stats, which is post-game data.
modequerystringoptionaldefault preTime wall: 'pre' (default) returns the post-game fields (actual_fantasy_pts, actual_ownership, actual_rank, leverage_delta) as null; 'full' includes them. See the Data timing guide.
projection_idquerybigintoptionalNBA slates only: a version of our NBA engine (main.projections id). Default: its active version. An NFL slate answers 400 with this parameter.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/dfs/slates/676551/projections'Responses
200DFS slate player projections, distributions, and betting propsapplication/jsonshow example ▸
400Invalid slate ID format, an unknown format, or an enrich tag the time wall refuses
404Slate not found, or its format has no projection source (in-game formats answer 200 with projection_status none_by_design, a slate with no player pool 200 with no_player_pool)
Response Schema(8 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
projection_status | string | — | Whether the slate's format has projections. `available`: the format has a projection source, and the arrays hold its rows (a player without a projection has null values). `none_by_design`: the format has no projections by decision (the in-game formats: DraftKings In-Game Showdown H2 and Q4, FanDuel single game 2nd half and 4th quarter); `source` is null and the arrays are empty. `no_player_pool`: the slate has no player pool yet, so there is nothing to project; `source` is null and the arrays are empty. `not_projected_yet` (NBA): no player of the slate has a projection of our NBA engine yet. A game's first projection appears on game day, once its betting line and roster are in, and preseason games are never projected; the arrays are empty. `not_projected` (NBA): every game of the slate tipped with no projection of our NBA engine (the games before the engine ran), so none will come; the arrays are empty. `league_not_projected`: our engines do not project the slate's league (MLB, NHL, golf); the arrays are empty. |
slate | object | — | Contest slate summary. |
↳id slate.id | bigint | — | Slate ID. |
↳external_id slate.external_id | string | — | Operator-specific contest slate identifier. |
↳operator slate.operator | string | — | DFS operator name (DraftKings, FanDuel, Yahoo). |
↳actual_ownership_contest_id slate.actual_ownership_contest_id | bigintnullable | — | The one contest (dfs.contests id) whose actual_ownership the player rows of this slate carry: the contest with actuals and the biggest prize pool, then the most entries, then the lowest id. Absent when no contest of the slate has actuals. The contest answer never uses this value. |
↳league slate.league | stringnullable | — | The slate's league (nfl, nba, mlb, nhl, golf). It decides which row fields the answer carries: the fields marked NBA only come on NBA rows, every other row field on NFL rows. |
source | objectnullable | — | Projection source metadata. Null when projection_status is none_by_design or no_player_pool, and on every NBA answer (our NBA engine has no stored source row; `_metadata.served_source` names it, STAT_API_NBA). |
↳id source.id | bigint | — | Source ID. |
↳slate_setting_id source.slate_setting_id | bigint | — | Slate setting ID. |
↳name source.name | string | — | Projection model name. |
↳source_type source.source_type | integer | — | Source type code. |
↳updated_at source.updated_at | string | — | Timestamp of projection generation. |
computed | object | — | Projection coverage and calculation summary. |
↳eligible_players computed.eligible_players | bigint | — | Total eligible players in contest pool. |
↳projected_players computed.projected_players | bigint | — | Number of players with generated projections. |
↳missing_players computed.missing_players | bigint | — | Unprojected player count. |
↳coverage computed.coverage | decimal | — | Percentage of pool successfully projected. |
↳total_teams computed.total_teams | integernullable | — | Total active teams projected on the slate. |
↳position computed.position | stringnullable | — | Roster position filter applied to request. |
↳total_roster_mass computed.total_roster_mass | decimalnullable | — | Total roster mass. |
↳position_ownership_totals computed.position_ownership_totals | objectnullable | — | Aggregated projected ownership percentage by position group across the slate. |
↳refused_seats computed.refused_seats | listnullable | — | NBA only: the seats that have a projection but are left out of the rows, each with the reason (never guessed). Absent on NFL answers. |
↳slate_player_id computed.refused_seats[].slate_player_id | bigint | — | The seat (dfs.slate_players.id). |
↳position computed.refused_seats[].position | stringnullable | — | The seat's position as the operator names it. |
↳reason computed.refused_seats[].reason | string | — | no_seat_multiplier: a CPT, MVP, STAR or PRO seat whose slate setting states no score multiplier. no_scoring_rules: no scoring table of the operator is in force at the game's time. bad_stat_line: the player's stat line cannot be scored. |
player_stats | list | — | The player projections as flat rows, one per slate player. Sent with format=flat. format=csv returns these rows as CSV: one column per field below, in this order, then one column per `enrich` tag. An NFL row sends every field that is not marked NBA only; an NBA row sends the shared fields and the fields marked NBA only, in this order, and no NFL-only field. A value the projection does not have is null. |
↳id player_stats[].id | bigint | — | Slate player ID (dfs.slate_players.id). |
↳slate_player_id player_stats[].slate_player_id | bigint | — | Slate player ID (dfs.slate_players.id), the same value as id. |
↳league_id player_stats[].league_id | bigint | — | League ID. |
↳slate_id player_stats[].slate_id | bigint | — | Slate ID. |
↳operator_id player_stats[].operator_id | bigint | — | Operator ID (1 DraftKings, 2 FanDuel, 3 Yahoo). |
↳scoring_format player_stats[].scoring_format | string | — | The slate's scoring format: showdown when the pool has captain (CPT/MVP) rows, else classic. |
↳player_id player_stats[].player_id | bigintnullable | — | Canonical player ID (nfl.players.id). |
↳operator_player_id player_stats[].operator_player_id | stringnullable | — | Operator athlete ID (dfs.slate_players.external_id). |
↳operator_player_export_id player_stats[].operator_player_export_id | stringnullable | — | Operator export / draftable ID for lineup CSV uploads (dfs.slate_players.export_id). |
↳slate_game_id player_stats[].slate_game_id | bigintnullable | — | Slate game ID (dfs.slate_games.id). |
↳game_id player_stats[].game_id | bigintnullable | — | Canonical game ID (nfl.games.id). |
↳team_id player_stats[].team_id | bigintnullable | — | Team ID (nfl.teams.id). |
↳slate_date player_stats[].slate_date | stringnullable | — | Slate date (YYYY-MM-DD). |
↳salary player_stats[].salary | integernullable | — | Contest player salary in currency units. |
↳position player_stats[].position | stringnullable | — | Contest roster position (e.g. QB, RB, WR, TE, DST, K, CPT). |
↳name player_stats[].name | stringnullable | — | Player name. |
↳team player_stats[].team | stringnullable | — | Team abbreviation. |
↳opponent player_stats[].opponent | stringnullable | — | Opponent team abbreviation. |
↳gsis player_stats[].gsis | stringnullable | — | NFL GSIS player ID. |
↳fantasy_pts player_stats[].fantasy_pts | decimalnullable | — | Projected fantasy points under the slate's scoring rules. Null when the player has no projection. |
↳floor player_stats[].floor | decimalnullable | — | Projected 10th percentile fantasy point outcome. |
↳ceiling player_stats[].ceiling | decimalnullable | — | Projected 90th percentile fantasy point outcome. |
↳std_dev player_stats[].std_dev | decimalnullable | — | Standard deviation of the projected fantasy point distribution. |
↳value player_stats[].value | decimalnullable | — | Projected fantasy points per $1k of salary. |
↳quantiles player_stats[].quantiles | objectnullable | — | Quantile outcomes of the simulated fantasy point distribution (p05 to p95). |
↳passing_yds_fpts player_stats[].passing_yds_fpts | decimalnullable | — | Fantasy points from projected passing yards. |
↳passing_td_fpts player_stats[].passing_td_fpts | decimalnullable | — | Fantasy points from projected passing touchdowns. |
↳interception_fpts player_stats[].interception_fpts | decimalnullable | — | Fantasy points lost to projected interceptions. |
↳passing_2pt_conversion_fpts player_stats[].passing_2pt_conversion_fpts | decimalnullable | — | Fantasy points from 2-point passing conversions (0 when the player has a projection; the model projects none). |
↳passing_bonus_fpts player_stats[].passing_bonus_fpts | decimalnullable | — | Fantasy bonus points for milestone passing (DraftKings 300+ yards). |
↳rushing_yds_fpts player_stats[].rushing_yds_fpts | decimalnullable | — | Fantasy points from projected rushing yards. |
↳rushing_td_fpts player_stats[].rushing_td_fpts | decimalnullable | — | Fantasy points from projected rushing touchdowns. |
↳fumble_lost_fpts player_stats[].fumble_lost_fpts | decimalnullable | — | Fantasy points lost to projected lost fumbles. |
↳rushing_2pt_conversion_fpts player_stats[].rushing_2pt_conversion_fpts | decimalnullable | — | Fantasy points from 2-point rushing conversions (0 when the player has a projection; the model projects none). |
↳rushing_bonus_fpts player_stats[].rushing_bonus_fpts | decimalnullable | — | Fantasy bonus points for milestone rushing (DraftKings 100+ yards). |
↳receiving_yds_fpts player_stats[].receiving_yds_fpts | decimalnullable | — | Fantasy points from projected receiving yards. |
↳reception_fpts player_stats[].reception_fpts | decimalnullable | — | Fantasy points from projected receptions (DraftKings full PPR, FanDuel half PPR). |
↳receiving_td_fpts player_stats[].receiving_td_fpts | decimalnullable | — | Fantasy points from projected receiving touchdowns. |
↳receiving_2pt_conversion_fpts player_stats[].receiving_2pt_conversion_fpts | decimalnullable | — | Fantasy points from 2-point receiving conversions (0 when the player has a projection; the model projects none). |
↳receiving_bonus_fpts player_stats[].receiving_bonus_fpts | decimalnullable | — | Fantasy bonus points for milestone receiving (DraftKings 100+ yards). |
↳passing_yds player_stats[].passing_yds | decimalnullable | — | Projected passing yards (QB, or a player with 1+ projected pass attempt). |
↳passing_tds player_stats[].passing_tds | decimalnullable | — | Projected passing touchdowns. |
↳interceptions_thrown player_stats[].interceptions_thrown | decimalnullable | — | Projected interceptions thrown. |
↳rushing_yds player_stats[].rushing_yds | decimalnullable | — | Projected rushing yards. |
↳rushing_tds player_stats[].rushing_tds | decimalnullable | — | Projected rushing touchdowns. |
↳rushing_fumbles_lost player_stats[].rushing_fumbles_lost | decimalnullable | — | Projected lost fumbles (0 when the player has a projection and the model gives none). |
↳receptions player_stats[].receptions | decimalnullable | — | Projected receptions. |
↳receiving_yds player_stats[].receiving_yds | decimalnullable | — | Projected receiving yards. |
↳receiving_tds player_stats[].receiving_tds | decimalnullable | — | Projected receiving touchdowns. |
↳carries player_stats[].carries | decimalnullable | — | Projected rushing attempts. |
↳targets player_stats[].targets | decimalnullable | — | Projected receiving targets. |
↳catch_rate player_stats[].catch_rate | decimalnullable | — | Projected receptions per target, as a percentage (0-100). |
↳passing_attempts player_stats[].passing_attempts | decimalnullable | — | Projected pass attempts. |
↳passing_completions player_stats[].passing_completions | decimalnullable | — | Projected pass completions. |
↳snap_pct player_stats[].snap_pct | decimalnullable | — | Projected offensive snap share, as a percentage (0-100). |
↳projected_snap_share player_stats[].projected_snap_share | decimalnullable | — | Projected offensive snap share, as a fraction (0-1). |
↳projected_snaps player_stats[].projected_snaps | decimalnullable | — | Projected offensive snaps. |
↳projected_team_snaps player_stats[].projected_team_snaps | decimalnullable | — | Projected team offensive snaps. |
↳player_game_note player_stats[].player_game_note | stringnullable | — | Game note for the player from the projection model. |
↳projected_ownership player_stats[].projected_ownership | decimalnullable | — | Projected tournament roster share, as a fraction (0-1). |
↳ownership_pct player_stats[].ownership_pct | decimalnullable | — | Projected tournament roster share, as a percentage (e.g. 15.5 for 15.5%). |
↳ownership_volatility player_stats[].ownership_volatility | decimalnullable | — | Standard deviation of the projected ownership percentage across simulated crowds. |
↳ownership_low player_stats[].ownership_low | decimalnullable | — | 10th percentile projected ownership percentage. |
↳ownership_high player_stats[].ownership_high | decimalnullable | — | 90th percentile projected ownership percentage. |
↳chalk_fragility player_stats[].chalk_fragility | decimalnullable | — | Chalk fragility index in [0, 1] (0 = stable across cap allocations, 1 = fragile). |
↳cash_projected_ownership player_stats[].cash_projected_ownership | decimalnullable | — | Projected cash-game (double-up, 50/50) roster share, as a fraction (0-1). Null on contest projections. |
↳cash_ownership_pct player_stats[].cash_ownership_pct | decimalnullable | — | Projected cash-game roster share, as a percentage. Null on contest projections. |
↳captain_ownership player_stats[].captain_ownership | decimalnullable | — | Showdown: projected ownership percentage of this player's captain (CPT/MVP) row. Null on classic slates. |
↳flex_ownership player_stats[].flex_ownership | decimalnullable | — | Showdown: projected ownership percentage of this player's FLEX row. Null on classic slates. |
↳total_ownership player_stats[].total_ownership | decimalnullable | — | Showdown: captain plus FLEX ownership percentage. Null on classic slates. |
↳captain_ratio player_stats[].captain_ratio | decimalnullable | — | Showdown: captain ownership divided by total ownership (0-1). Null on classic slates. |
↳play_profile player_stats[].play_profile | objectnullable | — | Play profile with upside and safety metrics, boom/bust probabilities, archetype and analysis. |
↳upside_tier player_stats[].upside_tier | stringnullable | — | Salary-adjusted upside tier (ELITE, BOOM, STEADY, LOW_CAP, NONE). |
↳ceiling_multiplier player_stats[].ceiling_multiplier | decimalnullable | — | Ceiling per $1k of salary. |
↳boom_probability player_stats[].boom_probability | decimalnullable | — | Probability of scoring at least the boom multiple of salary. |
↳cash_safety_tier player_stats[].cash_safety_tier | stringnullable | — | Salary-adjusted cash safety tier (CORE_CASH, CASH_VIABLE, MODERATE, HIGH_RISK, UNVIABLE). |
↳floor_multiplier player_stats[].floor_multiplier | decimalnullable | — | Floor per $1k of salary. |
↳bust_probability player_stats[].bust_probability | decimalnullable | — | Probability of scoring under 1.5x salary. |
↳play_archetype player_stats[].play_archetype | stringnullable | — | Archetype (GPP_BOOM, CORE_CASH, LEVERAGE, FRAGILE_CHALK, BALANCED, LOW_CAP, OUT_INACTIVE, or the model's tactical label). |
↳leverage_factor player_stats[].leverage_factor | decimalnullable | — | Tournament leverage factor (ceiling_multiplier / max(0.02, ownership)). |
↳tactical_tag player_stats[].tactical_tag | stringnullable | — | Tactical play tag from the projection model (e.g. GOOD_CHALK, FRAGILE_CHALK, LEVERAGE). |
↳fade_leverage_score player_stats[].fade_leverage_score | decimalnullable | — | Score for fading the player in tournaments, from the projection model. |
↳knapsack_shadow_price player_stats[].knapsack_shadow_price | decimalnullable | — | Marginal points per salary dollar at the optimizer's cap constraint, from the projection model. |
↳relative_fragility player_stats[].relative_fragility | decimalnullable | — | Fragility relative to the player's position peers on the slate, from the projection model. |
↳analysis_headline player_stats[].analysis_headline | stringnullable | — | One-line summary of the player's role, floor or ceiling. |
↳cash_verdict player_stats[].cash_verdict | stringnullable | — | Cash-game verdict. |
↳gpp_verdict player_stats[].gpp_verdict | stringnullable | — | Tournament verdict. |
↳vegas_odds player_stats[].vegas_odds | objectnullable | — | The player's betting props used as calibration anchors. |
↳anytime_td player_stats[].vegas_odds.anytime_td | integernullable | — | Anytime touchdown odds (American format). |
↳rushing_yards player_stats[].vegas_odds.rushing_yards | decimalnullable | — | Rushing yards consensus betting line. |
↳receiving_yards player_stats[].vegas_odds.receiving_yards | decimalnullable | — | Receiving yards consensus betting line. |
↳receptions player_stats[].vegas_odds.receptions | decimalnullable | — | Receptions consensus betting line. |
↳passing_yards player_stats[].vegas_odds.passing_yards | decimalnullable | — | Passing yards consensus betting line. |
↳passing_tds player_stats[].vegas_odds.passing_tds | decimalnullable | — | Passing touchdowns consensus betting line. |
↳dvp_archetype player_stats[].dvp_archetype | stringnullable | — | Player usage archetype the defense-vs-position rating uses. |
↳dvp_rank player_stats[].dvp_rank | integernullable | — | Opponent defense rank against the archetype (1 = best matchup). |
↳dvp_rating player_stats[].dvp_rating | decimalnullable | — | Defense-vs-position matchup rating. |
↳dvp_matchup player_stats[].dvp_matchup | stringnullable | — | Matchup label (e.g. Favorable, Neutral, Tough). |
↳dvp_explanation player_stats[].dvp_explanation | stringnullable | — | Explanation of the defensive matchup. |
↳dvp_metrics player_stats[].dvp_metrics | objectnullable | — | Defense-vs-position metrics behind the rating. |
↳scheme_metrics player_stats[].scheme_metrics | objectnullable | — | Defensive scheme indicators behind the rating. |
↳last_update_time player_stats[].last_update_time | timestamptznullable | — | When the projection last changed (UTC). |
↳update_explanation player_stats[].update_explanation | stringnullable | — | Why the projection last changed. |
↳update_reason player_stats[].update_reason | objectnullable | — | Structured reason of the last change. |
↳update_history player_stats[].update_history | list<object>nullable | — | The last 5 projection changes, oldest first. |
↳actual_fantasy_pts player_stats[].actual_fantasy_pts | decimalnullable | — | Post-game: fantasy points scored (dfs.player_stats). Null in mode=pre. |
↳actual_ownership player_stats[].actual_ownership | decimalnullable | — | Post-game: roster share in the slate's largest contest with results, as a fraction (0-1). Null in mode=pre. |
↳actual_rank player_stats[].actual_rank | integernullable | — | Post-game: the player's rank by actual ownership in the contest (contest projections only). Null in mode=pre. |
↳leverage_delta player_stats[].leverage_delta | decimalnullable | — | Post-game: actual_ownership minus projected_ownership. Null in mode=pre. |
↳status player_stats[].status | stringnullable | — | NBA only: the player's status in our NBA game roster (active, questionable, out, ...). |
↳seat_multiplier player_stats[].seat_multiplier | decimalnullable | — | NBA only: the seat's score multiplier from the slate setting (DraftKings CPT 1.5, FanDuel MVP 1.5); 1 for every other seat. fantasy_pts, floor, ceiling, std_dev and quantiles are already multiplied. |
↳chance_5x player_stats[].chance_5x | decimalnullable | — | NBA only: chance the seat's points reach 5x salary / 1000, 0 to 1 (see the route description); null without a salary. |
↳chance_5x_bound player_stats[].chance_5x_bound | stringnullable | — | NBA only: set when chance_5x is a bound, not a value: above_99pct (the chance is 0.99 or more) or below_1pct (0.01 or less). |
↳chance_6x player_stats[].chance_6x | decimalnullable | — | NBA only: chance the seat's points reach 6x salary / 1000, 0 to 1; null without a salary. |
↳chance_6x_bound player_stats[].chance_6x_bound | stringnullable | — | NBA only: set when chance_6x is a bound, not a value. |
↳minutes_mean player_stats[].minutes_mean | decimalnullable | — | NBA only: projected minutes (mean). |
↳minutes_std player_stats[].minutes_std | decimalnullable | — | NBA only: standard deviation of the projected minutes. |
↳minutes_p10 player_stats[].minutes_p10 | decimalnullable | — | NBA only: 10th percentile of the projected minutes. |
↳minutes_p25 player_stats[].minutes_p25 | decimalnullable | — | NBA only: 25th percentile of the projected minutes. |
↳minutes_p50 player_stats[].minutes_p50 | decimalnullable | — | NBA only: median of the projected minutes. |
↳minutes_p75 player_stats[].minutes_p75 | decimalnullable | — | NBA only: 75th percentile of the projected minutes. |
↳minutes_p90 player_stats[].minutes_p90 | decimalnullable | — | NBA only: 90th percentile of the projected minutes. |
↳usage_rate player_stats[].usage_rate | decimalnullable | — | NBA only: projected usage rate, 0 to 1. |
↳play_probability player_stats[].play_probability | decimalnullable | — | NBA only: chance the player plays, 0 to 1. |
↳start_probability player_stats[].start_probability | decimalnullable | — | NBA only: chance the player starts, 0 to 1. |
↳pts player_stats[].pts | decimalnullable | — | NBA only: projected points (the stat). |
↳reb player_stats[].reb | decimalnullable | — | NBA only: projected rebounds. |
↳ast player_stats[].ast | decimalnullable | — | NBA only: projected assists. |
↳stl player_stats[].stl | decimalnullable | — | NBA only: projected steals. |
↳blk player_stats[].blk | decimalnullable | — | NBA only: projected blocks. |
↳fg3m player_stats[].fg3m | decimalnullable | — | NBA only: projected three-pointers made. |
↳tov player_stats[].tov | decimalnullable | — | NBA only: projected turnovers. |
↳double_double_probability player_stats[].double_double_probability | decimalnullable | — | NBA only: chance of a double-double, 0 to 1. |
↳triple_double_probability player_stats[].triple_double_probability | decimalnullable | — | NBA only: chance of a triple-double, 0 to 1. |
↳profile_id player_stats[].profile_id | bigintnullable | — | NBA only: the contest segment (dfs.contest_profiles.id) of the ownership on this row; contest projections only, null on a slate. |
↳ownership_model player_stats[].ownership_model | stringnullable | — | NBA only: the ownership model that wrote the row's ownership; contest projections only, null on a slate. |
teams | listnullable | — | Team projections and game pace for every team on the slate. Sent with the default format and with format=flat. Null when the team model fails for the slate. |
↳team_id teams[].team_id | bigint | — | Canonical team ID (references nfl.teams). |
↳team_code teams[].team_code | string | — | Team abbreviation code (e.g. DET, KC, LAR). |
↳opponent_team_id teams[].opponent_team_id | bigintnullable | — | Opponent team ID. |
↳opponent_team_code teams[].opponent_team_code | stringnullable | — | Opponent team abbreviation code. |
↳matchup_id teams[].matchup_id | bigintnullable | — | Unique slate game matchup identifier. |
↳primary_qb_player_id teams[].primary_qb_player_id | bigintnullable | — | Projected starting quarterback player ID. |
↳total_offensive_snaps teams[].total_offensive_snaps | decimal | — | Projected team total offensive snaps. |
↳implied_total teams[].implied_total | decimalnullable | — | Implied team total points from betting game line and spread. |
↳spread teams[].spread | decimalnullable | — | Point spread consensus line. |
↳game_total teams[].game_total | decimalnullable | — | Over/under game total consensus line. |
↳vegas_odds teams[].vegas_odds | objectnullable | — | Associated team game betting props. |
↳pass_play_pct teams[].pass_play_pct | decimal | — | Projected offensive passing play rate percentage. |
↳run_play_pct teams[].run_play_pct | decimal | — | Projected offensive rushing play rate percentage. |
↳seconds_per_play teams[].seconds_per_play | decimalnullable | — | Projected seconds per offensive play (nfl.projected_team_snaps). |
↳no_huddle_rate teams[].no_huddle_rate | decimalnullable | — | Projected no-huddle play rate (nfl.projected_team_snaps). |
↳pass_oe teams[].pass_oe | decimalnullable | — | Projected pass rate over expected (nfl.projected_team_snaps). |
↳projected_defensive_snaps teams[].projected_defensive_snaps | decimalnullable | — | Projected defensive snaps (nfl.projected_team_snaps). |
↳passing teams[].passing | object | — | Team passing volume totals. |
↳attempts teams[].passing.attempts | decimal | — | Projected team pass attempts. |
↳completions teams[].passing.completions | decimal | — | Projected team pass completions. |
↳yards teams[].passing.yards | decimal | — | Projected team passing yards. |
↳touchdowns teams[].passing.touchdowns | decimal | — | Projected team passing touchdowns. |
↳interceptions teams[].passing.interceptions | decimal | — | Projected team interceptions. |
↳targets teams[].passing.targets | decimal | — | Projected team pass targets. |
↳rushing teams[].rushing | object | — | Team rushing volume totals. |
↳attempts teams[].rushing.attempts | decimal | — | Projected team rushing attempts. |
↳yards teams[].rushing.yards | decimal | — | Projected team rushing yards. |
↳touchdowns teams[].rushing.touchdowns | decimal | — | Projected team rushing touchdowns. |
↳players teams[].players | list<object> | — | Distribution of projections across team skill position roster. |
↳game_id teams[].game_id | bigintnullable | — | NBA only: the game (nba.games.id). |
↳is_home teams[].is_home | booleannullable | — | NBA only: the team plays at home. |
↳possessions_mean teams[].possessions_mean | decimalnullable | — | NBA only: projected possessions (mean). |
↳possessions_p10 teams[].possessions_p10 | decimalnullable | — | NBA only: 10th percentile of the projected possessions. |
↳possessions_p50 teams[].possessions_p50 | decimalnullable | — | NBA only: median of the projected possessions. |
↳possessions_p90 teams[].possessions_p90 | decimalnullable | — | NBA only: 90th percentile of the projected possessions. |
↳pace_per_48 teams[].pace_per_48 | decimalnullable | — | NBA only: projected pace per 48 minutes. |
↳team_points_mean teams[].team_points_mean | decimalnullable | — | NBA only: projected team points (mean). |
↳team_points_std teams[].team_points_std | decimalnullable | — | NBA only: standard deviation of the projected team points. |
↳team_points_p10 teams[].team_points_p10 | decimalnullable | — | NBA only: 10th percentile of the projected team points. |
↳team_points_p25 teams[].team_points_p25 | decimalnullable | — | NBA only: 25th percentile of the projected team points. |
↳team_points_p50 teams[].team_points_p50 | decimalnullable | — | NBA only: median of the projected team points. |
↳team_points_p75 teams[].team_points_p75 | decimalnullable | — | NBA only: 75th percentile of the projected team points. |
↳team_points_p90 teams[].team_points_p90 | decimalnullable | — | NBA only: 90th percentile of the projected team points. |
↳opponent_points_mean teams[].opponent_points_mean | decimalnullable | — | NBA only: projected opponent points (mean). |
↳offensive_rating teams[].offensive_rating | decimalnullable | — | NBA only: projected offensive rating. |
↳win_probability teams[].win_probability | decimalnullable | — | NBA only: chance the team wins, 0 to 1. |
↳overtime_probability teams[].overtime_probability | decimalnullable | — | NBA only: chance the game goes to overtime, 0 to 1. |
↳reb_mean teams[].reb_mean | decimalnullable | — | NBA only: projected team rebounds. |
↳ast_mean teams[].ast_mean | decimalnullable | — | NBA only: projected team assists. |
↳stl_mean teams[].stl_mean | decimalnullable | — | NBA only: projected team steals. |
↳blk_mean teams[].blk_mean | decimalnullable | — | NBA only: projected team blocks. |
↳fg3m_mean teams[].fg3m_mean | decimalnullable | — | NBA only: projected team three-pointers made. |
↳tov_mean teams[].tov_mean | decimalnullable | — | NBA only: projected team turnovers. |
↳vegas_total teams[].vegas_total | decimalnullable | — | NBA only: the game total of the betting line the projection used. |
↳vegas_spread teams[].vegas_spread | decimalnullable | — | NBA only: the spread of the betting line the projection used. |
↳implied_team_total teams[].implied_team_total | decimalnullable | — | NBA only: the team total the betting line implies. |
↳lines_captured_at teams[].lines_captured_at | timestamptznullable | — | NBA only: time the betting line was captured (UTC). |
↳inputs_as_of teams[].inputs_as_of | timestamptznullable | — | NBA only: time of the newest input of the team projection (UTC). |
projections | list | — | The player projections as nested rows, one per slate player: identity, distribution, opportunity, scoring breakdown, ownership, matchup, betting props and update provenance. Sent with the default format (no format param). An NFL row sends every field that is not marked NBA only; a value the projection does not have is null. An NBA row sends the groups player, projection, opportunity, breakdown, ownership and provenance, with the shared fields and the fields marked NBA only. |
↳player projections[].player | object | — | Player identity, team context, and slate metadata. |
↳id projections[].player.id | bigint | — | Unique slate player identifier. |
↳slate_player_id projections[].player.slate_player_id | bigint | — | Slate player ID (references dfs.slate_players.id). |
↳player_id projections[].player.player_id | bigintnullable | — | Canonical player ID in sport schema (references nfl.players.id). |
↳operator_player_id projections[].player.operator_player_id | stringnullable | — | Operator athlete identifier (from dfs.slate_players.external_id). |
↳operator_player_export_id projections[].player.operator_player_export_id | stringnullable | — | Operator export / draftable ID for lineup CSV uploads (from dfs.slate_players.export_id). |
↳name projections[].player.name | stringnullable | — | Player display name. |
↳position projections[].player.position | stringnullable | — | Contest roster position eligibility (e.g. QB, RB, WR, TE, DST, K). |
↳team projections[].player.team | stringnullable | — | Team abbreviation code (e.g. DET). |
↳opponent projections[].player.opponent | stringnullable | — | Opponent team abbreviation code (e.g. NO). |
↳salary projections[].player.salary | integernullable | — | Contest player salary in currency units (e.g. 8000). |
↳status projections[].player.status | stringnullable | — | Injury / roster status (e.g. Active, Questionable, Out). |
↳game_id projections[].player.game_id | bigintnullable | — | Canonical game ID. |
↳slate_date projections[].player.slate_date | stringnullable | — | Contest slate date (YYYY-MM-DD). |
↳player_game_note projections[].player.player_game_note | stringnullable | — | Contextual scouting and game note for player. |
↳projection projections[].projection | object | — | Fantasy points distribution, simulation bounds, and value ratio. |
↳fantasy_pts projections[].projection.fantasy_pts | decimalnullable | — | Mean projected fantasy points under contest scoring rules. |
↳floor projections[].projection.floor | decimalnullable | — | 10th percentile fantasy point outcome (floor). |
↳ceiling projections[].projection.ceiling | decimalnullable | — | 90th percentile fantasy point outcome (ceiling). |
↳std_dev projections[].projection.std_dev | decimalnullable | — | Standard deviation of projected fantasy point distribution. |
↳value projections[].projection.value | decimalnullable | — | Projected fantasy points per $1k of salary (pts / (salary / 1000)). |
↳quantiles projections[].projection.quantiles | objectnullable | — | Quantile simulation distribution outcomes across Monte Carlo runs. |
↳p05 projections[].projection.quantiles.p05 | decimalnullable | — | 5th percentile outcome. |
↳p10 projections[].projection.quantiles.p10 | decimalnullable | — | 10th percentile outcome. |
↳p15 projections[].projection.quantiles.p15 | decimalnullable | — | 15th percentile outcome. |
↳p25 projections[].projection.quantiles.p25 | decimalnullable | — | 25th percentile outcome. |
↳p50 projections[].projection.quantiles.p50 | decimalnullable | — | 50th percentile (median) outcome. |
↳p75 projections[].projection.quantiles.p75 | decimalnullable | — | 75th percentile outcome. |
↳p85 projections[].projection.quantiles.p85 | decimalnullable | — | 85th percentile outcome. |
↳p90 projections[].projection.quantiles.p90 | decimalnullable | — | 90th percentile outcome. |
↳p95 projections[].projection.quantiles.p95 | decimalnullable | — | 95th percentile outcome. |
↳seat_multiplier projections[].projection.seat_multiplier | decimalnullable | — | NBA only: the seat's score multiplier (DraftKings CPT 1.5, FanDuel MVP 1.5; 1 for every other seat). The points fields are already multiplied. |
↳chance_5x projections[].projection.chance_5x | decimalnullable | — | NBA only: chance the seat's points reach 5x salary / 1000, 0 to 1; null without a salary. |
↳chance_5x_bound projections[].projection.chance_5x_bound | stringnullable | — | NBA only: set when chance_5x is a bound: above_99pct or below_1pct. |
↳chance_6x projections[].projection.chance_6x | decimalnullable | — | NBA only: chance the seat's points reach 6x salary / 1000, 0 to 1; null without a salary. |
↳chance_6x_bound projections[].projection.chance_6x_bound | stringnullable | — | NBA only: set when chance_6x is a bound. |
↳opportunity projections[].opportunity | object | — | Volume and snap share opportunity metrics. |
↳snap_pct projections[].opportunity.snap_pct | decimalnullable | — | Projected offensive snap percentage (0-100%). |
↳projected_snaps projections[].opportunity.projected_snaps | decimalnullable | — | Projected offensive snaps. |
↳projected_team_snaps projections[].opportunity.projected_team_snaps | decimalnullable | — | Projected team total offensive snaps. |
↳carries projections[].opportunity.carries | decimalnullable | — | Projected rushing attempts. |
↳targets projections[].opportunity.targets | decimalnullable | — | Projected receiving targets. |
↳receptions projections[].opportunity.receptions | decimalnullable | — | Projected receptions. |
↳catch_rate projections[].opportunity.catch_rate | decimalnullable | — | Projected reception catch rate percentage. |
↳passing_attempts projections[].opportunity.passing_attempts | decimalnullable | — | Projected passing attempts (QB only). |
↳passing_completions projections[].opportunity.passing_completions | decimalnullable | — | Projected passing completions (QB only). |
↳minutes_mean projections[].opportunity.minutes_mean | decimalnullable | — | NBA only: projected minutes (mean). |
↳minutes_std projections[].opportunity.minutes_std | decimalnullable | — | NBA only: standard deviation of the projected minutes. |
↳minutes_p10 projections[].opportunity.minutes_p10 | decimalnullable | — | NBA only: 10th percentile of the projected minutes. |
↳minutes_p25 projections[].opportunity.minutes_p25 | decimalnullable | — | NBA only: 25th percentile of the projected minutes. |
↳minutes_p50 projections[].opportunity.minutes_p50 | decimalnullable | — | NBA only: median of the projected minutes. |
↳minutes_p75 projections[].opportunity.minutes_p75 | decimalnullable | — | NBA only: 75th percentile of the projected minutes. |
↳minutes_p90 projections[].opportunity.minutes_p90 | decimalnullable | — | NBA only: 90th percentile of the projected minutes. |
↳usage_rate projections[].opportunity.usage_rate | decimalnullable | — | NBA only: projected usage rate, 0 to 1. |
↳play_probability projections[].opportunity.play_probability | decimalnullable | — | NBA only: chance the player plays, 0 to 1. |
↳start_probability projections[].opportunity.start_probability | decimalnullable | — | NBA only: chance the player starts, 0 to 1. |
↳breakdown projections[].breakdown | object | — | Granular fantasy point component breakdown and counting stats. |
↳passing_yds projections[].breakdown.passing_yds | decimalnullable | — | Projected passing yards. |
↳passing_tds projections[].breakdown.passing_tds | decimalnullable | — | Projected passing touchdowns. |
↳passing_yds_fpts projections[].breakdown.passing_yds_fpts | decimalnullable | — | Fantasy points from passing yards. |
↳passing_td_fpts projections[].breakdown.passing_td_fpts | decimalnullable | — | Fantasy points from passing touchdowns. |
↳interception_fpts projections[].breakdown.interception_fpts | decimalnullable | — | Fantasy point deduction from interceptions. |
↳rushing_yds projections[].breakdown.rushing_yds | decimalnullable | — | Projected rushing yards. |
↳rushing_tds projections[].breakdown.rushing_tds | decimalnullable | — | Projected rushing touchdowns. |
↳rushing_yds_fpts projections[].breakdown.rushing_yds_fpts | decimalnullable | — | Fantasy points from rushing yards. |
↳rushing_td_fpts projections[].breakdown.rushing_td_fpts | decimalnullable | — | Fantasy points from rushing touchdowns. |
↳receiving_yds projections[].breakdown.receiving_yds | decimalnullable | — | Projected receiving yards. |
↳receiving_tds projections[].breakdown.receiving_tds | decimalnullable | — | Projected receiving touchdowns. |
↳receiving_yds_fpts projections[].breakdown.receiving_yds_fpts | decimalnullable | — | Fantasy points from receiving yards. |
↳reception_fpts projections[].breakdown.reception_fpts | decimalnullable | — | Fantasy points from receptions (PPR / half-PPR). |
↳receiving_td_fpts projections[].breakdown.receiving_td_fpts | decimalnullable | — | Fantasy points from receiving touchdowns. |
↳bonus_fpts projections[].breakdown.bonus_fpts | decimalnullable | — | Fantasy points from milestone performance bonuses (e.g. 100+ rush/rec, 300+ pass). |
↳defensive_td_fpts projections[].breakdown.defensive_td_fpts | decimalnullable | — | Fantasy points from defensive touchdowns (DST). |
↳sack_fpts projections[].breakdown.sack_fpts | decimalnullable | — | Fantasy points from sacks (DST). |
↳pts_allowed_fpts projections[].breakdown.pts_allowed_fpts | decimalnullable | — | Fantasy points from points allowed tiers (DST). |
↳pts projections[].breakdown.pts | decimalnullable | — | NBA only: projected points (the stat). |
↳reb projections[].breakdown.reb | decimalnullable | — | NBA only: projected rebounds. |
↳ast projections[].breakdown.ast | decimalnullable | — | NBA only: projected assists. |
↳stl projections[].breakdown.stl | decimalnullable | — | NBA only: projected steals. |
↳blk projections[].breakdown.blk | decimalnullable | — | NBA only: projected blocks. |
↳fg3m projections[].breakdown.fg3m | decimalnullable | — | NBA only: projected three-pointers made. |
↳tov projections[].breakdown.tov | decimalnullable | — | NBA only: projected turnovers. |
↳double_double_probability projections[].breakdown.double_double_probability | decimalnullable | — | NBA only: chance of a double-double, 0 to 1. |
↳triple_double_probability projections[].breakdown.triple_double_probability | decimalnullable | — | NBA only: chance of a triple-double, 0 to 1. |
↳ownership projections[].ownership | objectnullable | — | Monte Carlo tournament crowd ownership projections and volatility. NBA rows carry the ownership of the contest's segment on /dfs/contests/{contest_id}/projections, and null on a slate (NBA ownership is projected per contest segment, never per slate). |
↳projected_ownership projections[].ownership.projected_ownership | decimalnullable | — | Projected roster percentage in decimal form (0.0000 - 1.0000). |
↳ownership_pct projections[].ownership.ownership_pct | decimalnullable | — | Projected roster percentage formatted as 0-100% (e.g. 15.5 for 15.5%). |
↳volatility projections[].ownership.volatility | decimalnullable | — | Standard deviation of projected ownership percentage across simulations. |
↳low projections[].ownership.low | decimalnullable | — | 10th percentile crowd ownership percentage (lower bound). |
↳high projections[].ownership.high | decimalnullable | — | 90th percentile crowd ownership percentage (upper bound). |
↳chalk_fragility projections[].ownership.chalk_fragility | decimalnullable | — | Sensitivity of player ownership to salary cap allocations [0, 1]. |
↳cash_projected_ownership projections[].ownership.cash_projected_ownership | decimalnullable | — | Projected roster percentage in cash game double-ups / 50-50s (0.0000 - 1.0000). |
↳cash_ownership_pct projections[].ownership.cash_ownership_pct | decimalnullable | — | Projected roster percentage in cash games formatted as 0-100% (e.g. 12.3 for 12.3%). |
↳captain_ownership projections[].ownership.captain_ownership | decimalnullable | — | Projected Captain / MVP roster percentage in single-game / Showdown slates (0-100%). |
↳flex_ownership projections[].ownership.flex_ownership | decimalnullable | — | Projected FLEX utility roster percentage in single-game / Showdown slates (0-100%). |
↳total_ownership projections[].ownership.total_ownership | decimalnullable | — | Total combined roster percentage across Captain and FLEX slots (0-100%). |
↳captain_ratio projections[].ownership.captain_ratio | decimalnullable | — | Ratio of Captain ownership relative to total ownership (0.0 - 1.0). |
↳profile_id projections[].ownership.profile_id | bigintnullable | — | NBA only: the contest segment (dfs.contest_profiles.id) the ownership belongs to. |
↳model projections[].ownership.model | stringnullable | — | NBA only: the ownership model that wrote the row. |
↳inputs_as_of projections[].ownership.inputs_as_of | timestamptznullable | — | NBA only: time of the newest input of the ownership projection (UTC). |
↳dvp projections[].dvp | objectnullable | — | Defense vs Position (DvP) matchup ratings, scheme metrics, and qualitative context. |
↳archetype projections[].dvp.archetype | stringnullable | — | Player usage archetype (e.g. Pass-Catching Back, Deep Threat, Slot). |
↳rank projections[].dvp.rank | integernullable | — | Opponent defense positional ranking against archetype (1 = best matchup / 32 = worst). |
↳rating projections[].dvp.rating | decimalnullable | — | Matchup rating multiplier or score. |
↳matchup projections[].dvp.matchup | stringnullable | — | Matchup label (e.g. Favorable, Neutral, Tough). |
↳explanation projections[].dvp.explanation | stringnullable | — | Qualitative analytical explanation of defensive matchup. |
↳metrics projections[].dvp.metrics | objectnullable | — | Detailed defensive metrics breakdown. |
↳rank projections[].dvp.metrics.rank | integernullable | — | Opponent defense ranking vs archetype. |
↳archetype projections[].dvp.metrics.archetype | stringnullable | — | Target archetype. |
↳multiplier projections[].dvp.metrics.multiplier | decimalnullable | — | DvP projection multiplier applied. |
↳explanation projections[].dvp.metrics.explanation | stringnullable | — | Detailed qualitative explanation. |
↳matchup_grade projections[].dvp.metrics.matchup_grade | stringnullable | — | Letter grade or qualitative category. |
↳fpts_allowed_pg projections[].dvp.metrics.fpts_allowed_pg | decimalnullable | — | Fantasy points allowed per game to archetype. |
↳league_avg_fpts projections[].dvp.metrics.league_avg_fpts | decimalnullable | — | League average fantasy points per game to archetype. |
↳def_adot_allowed projections[].dvp.metrics.def_adot_allowed | decimalnullable | — | Defensive average depth of target allowed. |
↳def_pressure_rate projections[].dvp.metrics.def_pressure_rate | decimalnullable | — | Defensive pressure rate. |
↳opponent_team_code projections[].dvp.metrics.opponent_team_code | stringnullable | — | Opponent team abbreviation code. |
↳scheme_metrics projections[].dvp.scheme_metrics | objectnullable | — | Scheme-specific indicators (man/zone frequency, blitz rate, etc.). |
↳opponent projections[].dvp.scheme_metrics.opponent | stringnullable | — | Opponent team abbreviation code. |
↳composite projections[].dvp.scheme_metrics.composite | decimalnullable | — | Composite scheme matchup score. |
↳shadow_cb projections[].dvp.scheme_metrics.shadow_cb | stringnullable | — | Shadow cornerback assignment if active. |
↳db_injuries projections[].dvp.scheme_metrics.db_injuries | list<object>nullable | — | Opponent defensive back injuries impacting scheme. |
↳funnel_tilt projections[].dvp.scheme_metrics.funnel_tilt | decimalnullable | — | Run/pass funnel defensive tilt factor. |
↳scheme_mult projections[].dvp.scheme_metrics.scheme_mult | decimalnullable | — | Scheme matchup multiplier. |
↳injury_boost projections[].dvp.scheme_metrics.injury_boost | decimalnullable | — | Injury adjustment boost multiplier. |
↳pressure_mult projections[].dvp.scheme_metrics.pressure_mult | decimalnullable | — | Pressure rate multiplier. |
↳rb_target_rate_allowed projections[].dvp.scheme_metrics.rb_target_rate_allowed | decimalnullable | — | Defensive target rate allowed to running backs. |
↳te_target_rate_allowed projections[].dvp.scheme_metrics.te_target_rate_allowed | decimalnullable | — | Defensive target rate allowed to tight ends. |
↳two_high_shell_rate projections[].dvp.scheme_metrics.two_high_shell_rate | decimalnullable | — | Defensive two-high safety shell rate. |
↳vegas_odds projections[].vegas_odds | objectnullable | — | Active player betting lines and props used as model calibration anchors. |
↳anytime_td projections[].vegas_odds.anytime_td | integernullable | — | Anytime touchdown odds (American format). |
↳first_td projections[].vegas_odds.first_td | integernullable | — | First touchdown odds. |
↳last_td projections[].vegas_odds.last_td | integernullable | — | Last touchdown odds. |
↳rushing_yds projections[].vegas_odds.rushing_yds | decimalnullable | — | Rushing yards consensus betting line. |
↳receiving_yds projections[].vegas_odds.receiving_yds | decimalnullable | — | Receiving yards consensus betting line. |
↳receptions projections[].vegas_odds.receptions | decimalnullable | — | Receptions consensus betting line. |
↳rushing_attempts projections[].vegas_odds.rushing_attempts | decimalnullable | — | Rushing attempts betting line. |
↳passing_yards projections[].vegas_odds.passing_yards | decimalnullable | — | Passing yards consensus betting line. |
↳passing_tds projections[].vegas_odds.passing_tds | decimalnullable | — | Passing touchdowns consensus betting line. |
↳passing_yds projections[].vegas_odds.passing_yds | decimalnullable | — | Passing yards consensus betting line. |
↳passing_attempts projections[].vegas_odds.passing_attempts | decimalnullable | — | Passing attempts consensus betting line. |
↳completions projections[].vegas_odds.completions | decimalnullable | — | Pass completions consensus betting line. |
↳interceptions projections[].vegas_odds.interceptions | decimalnullable | — | Passing interceptions consensus betting line. |
↳provenance projections[].provenance | objectnullable | — | Projection update history, audit timestamps, and explanation of adjustments. |
↳last_update_time projections[].provenance.last_update_time | stringnullable | — | ISO-8601 UTC timestamp of most recent projection adjustment. |
↳update_explanation projections[].provenance.update_explanation | stringnullable | — | Human-readable explanation of why projection was updated (e.g. injury news, weather). |
↳update_reason projections[].provenance.update_reason | objectnullable | — | Structured metadata describing event triggering update. |
↳primary_code projections[].provenance.update_reason.primary_code | stringnullable | — | Primary change classification code (e.g. DEFENSE_DEGRADED). |
↳secondary_codes projections[].provenance.update_reason.secondary_codes | list<S>nullable | — | Secondary change classification codes. |
↳factors projections[].provenance.update_reason.factors | objectnullable | — | Detailed factor adjustments triggering projection update. |
↳update_history projections[].provenance.update_history | listnullable | — | Chronological audit trail of prior projection snapshots. |
↳id projections[].provenance.update_history[].id | string | — | Snapshot change identifier. |
↳timestamp projections[].provenance.update_history[].timestamp | string | — | UTC timestamp of snapshot. |
↳explanation projections[].provenance.update_history[].explanation | stringnullable | — | Change explanation text. |
↳reason projections[].provenance.update_history[].reason | objectnullable | — | Event trigger that provoked update. |
↳current_value projections[].provenance.update_history[].current_value | objectnullable | — | New projection values after adjustment. |
↳previous_value projections[].provenance.update_history[].previous_value | objectnullable | — | Prior projection values before adjustment. |
↳play_profile projections[].play_profile | objectnullable | — | Complete native play profile with upside and safety metrics, empirical boom/bust probabilities, and archetype. |
↳upside projections[].play_profile.upside | objectnullable | — | Upside and ceiling distribution metrics. |
↳tier projections[].play_profile.upside.tier | stringnullable | — | Salary-adjusted upside tier (ELITE, BOOM, STEADY, LOW_CAP). |
↳ceiling_multiplier projections[].play_profile.upside.ceiling_multiplier | decimalnullable | — | Salary-adjusted ceiling multiplier (ceiling / (salary / 1000)). |
↳boom_probability projections[].play_profile.upside.boom_probability | decimalnullable | — | Probability of reaching 4.0x boom value. |
↳leverage_factor projections[].play_profile.upside.leverage_factor | decimalnullable | — | Tournament leverage factor. |
↳safety projections[].play_profile.safety | objectnullable | — | Safety and floor stability metrics. |
↳tier projections[].play_profile.safety.tier | stringnullable | — | Cash safety tier (CORE_CASH, CASH_VIABLE, MODERATE, HIGH_RISK). |
↳floor_multiplier projections[].play_profile.safety.floor_multiplier | decimalnullable | — | Salary-adjusted floor multiplier. |
↳bust_probability projections[].play_profile.safety.bust_probability | decimalnullable | — | Probability of falling below 1.5x salary value. |
↳chalk_fragility projections[].play_profile.safety.chalk_fragility | decimalnullable | — | Chalk fragility rating. |
↳play_archetype projections[].play_profile.play_archetype | stringnullable | — | Archetype classification. |
↳is_leverage projections[].play_profile.is_leverage | booleannullable | — | Whether player is a top leverage candidate. |
↳is_fragile_chalk projections[].play_profile.is_fragile_chalk | booleannullable | — | Whether player represents fragile chalk. |
↳analysis projections[].play_profile.analysis | objectnullable | — | Qualitative analytical breakdowns and recommendations. |
↳headline projections[].play_profile.analysis.headline | stringnullable | — | Synthesized headline summarizing player outlook. |
↳cash_analysis projections[].play_profile.analysis.cash_analysis | objectnullable | — | Detailed cash game outlook. |
↳status projections[].play_profile.analysis.cash_analysis.status | stringnullable | — | Cash status (CORE_CASH, CASH_VIABLE, NEUTRAL, UNVIABLE). |
↳verdict projections[].play_profile.analysis.cash_analysis.verdict | stringnullable | — | Cash game verdict narrative. |
↳key_positives projections[].play_profile.analysis.cash_analysis.key_positives | list<S>nullable | — | Positive factors supporting cash game viability. |
↳key_risks projections[].play_profile.analysis.cash_analysis.key_risks | list<S>nullable | — | Downside risks impacting cash game safety. |
↳cohort_comparison projections[].play_profile.analysis.cash_analysis.cohort_comparison | stringnullable | — | Performance comparison relative to salary cohort. |
↳gpp_analysis projections[].play_profile.analysis.gpp_analysis | objectnullable | — | Detailed GPP tournament outlook. |
↳status projections[].play_profile.analysis.gpp_analysis.status | stringnullable | — | GPP status. |
↳verdict projections[].play_profile.analysis.gpp_analysis.verdict | stringnullable | — | Tournament verdict narrative. |
↳ceiling_thesis projections[].play_profile.analysis.gpp_analysis.ceiling_thesis | stringnullable | — | Upside potential thesis. |
↳leverage_thesis projections[].play_profile.analysis.gpp_analysis.leverage_thesis | stringnullable | — | Ownership leverage thesis. |
↳pivot_recommendation projections[].play_profile.analysis.gpp_analysis.pivot_recommendation | stringnullable | — | Suggested tournament pivots. |
↳comparative_context projections[].play_profile.analysis.comparative_context | objectnullable | — | Relative rankings and cohort differentials. |
↳positional_floor_rank projections[].play_profile.analysis.comparative_context.positional_floor_rank | stringnullable | — | Positional floor ranking text. |
↳positional_ceiling_rank projections[].play_profile.analysis.comparative_context.positional_ceiling_rank | stringnullable | — | Positional ceiling ranking text. |
↳positional_ownership_rank projections[].play_profile.analysis.comparative_context.positional_ownership_rank | stringnullable | — | Positional ownership ranking text. |
↳floor_vs_position_median projections[].play_profile.analysis.comparative_context.floor_vs_position_median | stringnullable | — | Floor points differential relative to positional median. |
↳value_vs_salary_cohort projections[].play_profile.analysis.comparative_context.value_vs_salary_cohort | stringnullable | — | Value differential relative to salary tier. |
↳tactical_tag projections[].play_profile.tactical_tag | stringnullable | — | Tactical play tag (e.g. GOOD_CHALK, FRAGILE_CHALK, LEVERAGE). |
↳fade_leverage_score projections[].play_profile.fade_leverage_score | decimalnullable | — | Quantitative score for fading the player in tournaments. |
↳knapsack_shadow_price projections[].play_profile.knapsack_shadow_price | decimalnullable | — | Knapsack constraint shadow price indicating marginal point value per dollar. |
↳relative_fragility projections[].play_profile.relative_fragility | decimalnullable | — | Normalized fragility relative to slate position peers. |
↳upside_tier projections[].upside_tier | stringnullable | — | Salary-adjusted upside tier (ELITE, BOOM, STEADY, LOW_CAP). |
↳ceiling_multiplier projections[].ceiling_multiplier | decimalnullable | — | Salary-adjusted ceiling multiplier (ceiling / (salary / 1000)). |
↳boom_probability projections[].boom_probability | decimalnullable | — | Empirical probability of scoring >= 4.0x salary in 10,000 Monte Carlo simulations. |
↳cash_safety_tier projections[].cash_safety_tier | stringnullable | — | Salary-adjusted cash safety tier (CORE_CASH, CASH_VIABLE, MODERATE, HIGH_RISK). |
↳floor_multiplier projections[].floor_multiplier | decimalnullable | — | Salary-adjusted floor multiplier (floor / (salary / 1000)). |
↳bust_probability projections[].bust_probability | decimalnullable | — | Empirical probability of scoring < 1.5x salary in 10,000 Monte Carlo simulations. |
↳play_archetype projections[].play_archetype | stringnullable | — | Summary archetype classification (GPP_BOOM, CORE_CASH, LEVERAGE, FRAGILE_CHALK, BALANCED, LOW_CAP). |
↳leverage_factor projections[].leverage_factor | decimalnullable | — | Tournament leverage factor (ceiling_multiplier / max(0.02, ownership)). |
↳analysis_headline projections[].analysis_headline | stringnullable | — | Synthesized qualitative headline capturing player role, floor equity, or ceiling upside. |
↳cash_verdict projections[].cash_verdict | stringnullable | — | Qualitative cash game analysis verdict with touch/floor security and bust risk reasoning. |
↳gpp_verdict projections[].gpp_verdict | stringnullable | — | Qualitative GPP tournament analysis verdict with ceiling potential and ownership leverage reasoning. |
↳tactical_tag projections[].tactical_tag | stringnullable | — | Tactical play tag (e.g. GOOD_CHALK, FRAGILE_CHALK, LEVERAGE). |
↳fade_leverage_score projections[].fade_leverage_score | decimalnullable | — | Quantitative score for fading the player in tournaments. |
↳knapsack_shadow_price projections[].knapsack_shadow_price | decimalnullable | — | Knapsack constraint shadow price indicating marginal point value per dollar. |
↳relative_fragility projections[].relative_fragility | decimalnullable | — | Normalized fragility relative to slate position peers. |
_metadata | objectnullable | — | Which projection source served this response, and which stat-api engine made its rows. Sent last, with the default format and with format=flat. The `source` object describes the served source. |
↳requested_source _metadata.requested_source | string | — | The source the request asked for, the `source` parameter, else the default (STAT_API_LATEST). |
↳served_source _metadata.served_source | string | — | The source whose rows this response holds. It differs from `requested_source` when STAT_API_LATEST serves a request for STAT_API, or when STAT_API serves a slate that STAT_API_LATEST has no projections for (`fallback`). A slate served per game by both sources gives "STAT_API,STAT_API_LATEST" (see `fallback_games`). |
↳engine_version _metadata.engine_version | stringnullable | — | The stat-api engine version of the served rows, for example "2.2". A row without a version is "2.1". Rows of several versions give a comma-separated list. Null when the response holds no rows. |
↳deprecated _metadata.deprecated | boolean | — | True when the requested source is deprecated. STAT_API is deprecated, and STAT_API_LATEST serves it. |
↳replacement _metadata.replacement | stringnullable | — | The source that replaces the deprecated requested source (STAT_API_LATEST). Null when `deprecated` is false. |
↳backfilled _metadata.backfilled | boolean | — | True when any served row is a backfill: a projection written after the slate locked, for a slate that locked before its engine went live. |
↳fallback _metadata.fallback | boolean | — | True when the request was for STAT_API or named no source, and STAT_API served this slate, or the games of it that STAT_API_LATEST has no projections for (`fallback_games`). The source is chosen per game: STAT_API_LATEST serves every game of the slate it has projections for; STAT_API (engine 2.1) serves only a game without them that kicked off before the slate's first STAT_API_LATEST projection was written (the Thursday game of a Thursday-to-Monday slate); every other game without them gets no projection (`pending_games`). |
↳note _metadata.note | stringnullable | — | The same facts in one sentence. Null when the requested source is not deprecated, did not fall back and has no pending game. |
↳fallback_games _metadata.fallback_games | list<L>nullable | — | The NFL games (`game_id`) of the slate whose rows come from STAT_API because STAT_API_LATEST has no projections for them, while STAT_API_LATEST served the other games; `served_source` then names both sources. Only games that kicked off before the slate's first STAT_API_LATEST projection was written. Sent only then (absent otherwise). |
↳pending_games _metadata.pending_games | list<L>nullable | — | The NFL games (`game_id`) of a slate that STAT_API_LATEST serves in part, that have no STAT_API_LATEST projections and did not kick off before the slate's first one was written: their players have no points projection in this response (no 2.1 value stands in; a stored contest ownership may still show). Sent only when there is one (absent otherwise). |
GET/api/v1/dfs/slates/seasonsDFS contest slate seasons and schedule manifest
Parameters
sportquerystringoptionalSport code (nfl, nba, mlb, nhl, golf). Defaults to nfl.
league_idquerybigintoptionalNumeric league ID (1 NFL, 2 NBA, 3 MLB, 4 NHL, 5 Golf).
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/dfs/slates/seasons?sport=nfl'Responses
200DFS contest slate seasons and schedule manifestapplication/jsonshow example ▸
Response Schema(6 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
sport | string | — | Sport code. |
league_id | bigint | — | Numeric league ID. |
earliest_date | stringnullable | — | Earliest slate date on file (YYYY-MM-DD). |
latest_date | stringnullable | — | Latest slate date on file (YYYY-MM-DD). |
total_slates | bigint | — | Total slates across all seasons. |
seasons | list | — | List of available seasons with week breakdowns. |
↳season seasons[].season | integer | — | Season start year (e.g. 2026). |
↳slate_count seasons[].slate_count | bigint | — | Total slates in this season. |
↳contest_count seasons[].contest_count | bigint | — | Total contests in this season. |
↳earliest_date seasons[].earliest_date | stringnullable | — | Earliest slate date in this season. |
↳latest_date seasons[].latest_date | stringnullable | — | Latest slate date in this season. |
↳min_week seasons[].min_week | integer | — | Minimum available week. |
↳max_week seasons[].max_week | integer | — | Maximum available week. |
↳available_weeks seasons[].available_weeks | list<I> | — | Regular-season week numbers that have at least one slate. |
↳weeks seasons[].weeks | list | — | Every regular-season week of the schedule, with its window and slate counts (NFL). Other sports return one entry per calendar year. |
↳week seasons[].weeks[].week | integer | — | Regular-season week number. |
↳start_date seasons[].weeks[].start_date | stringnullable | — | First day of the week window (YYYY-MM-DD, US Eastern). Null outside the NFL. |
↳end_date seasons[].weeks[].end_date | stringnullable | — | Last day of the week window, the week's last game day (YYYY-MM-DD, US Eastern). Null outside the NFL. |
↳slate_count seasons[].weeks[].slate_count | bigint | — | Slates whose lock date falls in the window (0 for a week with no slate yet). |
↳contest_count seasons[].weeks[].contest_count | bigint | — | Contests on those slates. |
↳min_date seasons[].weeks[].min_date | stringnullable | — | First slate date in the window. Null when the week has no slate. |
↳max_date seasons[].weeks[].max_date | stringnullable | — | Last slate date in the window. Null when the week has no slate. |