DFS API Reference
Daily-fantasy contest data across operators — the slates (operator + league + game pool + scoring rules), their game pools, player pools with salaries and positions, projection sources and projections, and the contests with their entrants, submitted lineups, and per-lineup player rosters.
Main
slate_settings
dfs.slate_settingsThe scoring format and roster-construction ruleset a slate is built on — salary cap, position slots, seat multipliers, and the scoring rule (`scoring`) per operator / league / format version. A small reference table that many slates point at; a slate's scoring comes only from its setting.
GET/api/v1/dfs/slate_settingsList slate_settings for DFS
Requires one of:
operator_id or operator — requests satisfying none of these return 400.Parameters
operator_idquerybigintoptionalFilter by operator: by numeric id (1 DraftKings, 2 FanDuel, 3 Yahoo).
operatorquerystringoptionalFilter by operator: by name (draftkings, fanduel) or numeric id (1, 2).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; 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/slate_settings?operator_id=1'Responses
200slate_settings rows matching the declared filter set, wrapped in { slate_settings, 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(11 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
league_id | bigint | — | — e.g. 2 |
operator_id | bigint | — e.g. 2 | |
operator_setting_id | stringnullable | — | The operator's own id for this format (DraftKings gameTypeId, FanDuel slateFormatId). Operators reuse these ids across versions and formats, so it is unique only together with operator, league, game type and valid_from. e.g. 45 |
contest_type | integer | — | Contest structure code (0 = Tournament / GPP, 1 = Cash game / Double-up). e.g. 0 |
game_style | stringnullable | — | Operator game style label. Values:CLASSICSINGLE_GAMEPICK_EMFULL_ROSTERLATE_SWAPSHOW_DOWNSHOW_DOWN_CAPTAIN_MODESINGLE_GAME_BOOSTSINGLE_GAME_V3NON_LATE_SWAPSTARTING_5WEEKENDSHOW_DOWN_CAPTAIN_MODE_…FINAL_ROUND_ONLYSINGLE_GAME_DEPRECATEDSINGLE_GAME_V2-DEPRECAT…SINGLE_GAME_V2 |
game_type | integer | — | Contest format code (0 = Classic full-slate, 1 = Showdown / Single Game, 2 = Tiers). e.g. 1 |
name | string | — | Ruleset name (e.g. "Classic", "Showdown Captain Mode", "Single Game"). e.g. Showdown |
scoring | jsonbnullable | — | The setting's scoring rule, the only source of its slates' points: `rule` (a name shared by settings that score alike, e.g. fanduel-nfl-2024), `part_of_game` (full, second_half, fourth_quarter), and for a full-game rule `stats`: points per stat, yardage bonuses (stat, at, points), field-goal tiers, and defense points (with the points-allowed figure the operator counts). An in-game rule holds no `stats`: its slates carry the operator's own points. NULL = no rule yet. e.g. {"part_of_game":"full","rule":"fanduel-nba","stats":{"assis… |
settings | jsonb | — | The lineup ruleset as JSON, from the operator's own data: salary cap, roster slots, eligible positions, and the seat multipliers (syntheticPositions, e.g. CPT 1.5x). The points per stat are in `scoring`. e.g. {"containsDuplicatePlayers":false,"lateSwap":false,"maxPlay… |
↳scoring settings.scoring | objectnullable | — | Legacy: per-stat settings copied onto some old rows from an earlier configuration, served as stored. Not read; the scoring rule is the `scoring` column. |
↳lateSwap settings.lateSwap | booleannullable | — | Whether late lineup swapping is permitted. |
↳positions settings.positions | listnullable | — | Roster slot requirements and eligible positions. |
↳salaryCap settings.salaryCap | integernullable | — | Total team salary cap in dollars (e.g. 50000). |
↳minTeamCount settings.minTeamCount | integernullable | — | Minimum distinct teams represented in lineup. |
↳salaryIncrement settings.salaryIncrement | integernullable | — | Minimum salary step unit. |
↳maxPlayersSameTeamCount settings.maxPlayersSameTeamCount | integernullable | — | Maximum players allowed from a single team. |
↳containsDuplicatePlayers settings.containsDuplicatePlayers | booleannullable | — | Whether captain/MVP multiplier slots allow player duplicates. |
valid_from | datenullable | — | First slate day (US Eastern) this version of the format applies to. e.g. 2015-10-01 |
GET/api/v1/dfs/slate_settings/{id}Get a single slate_setting by id
Parameters
idpathbigintrequiredPrimary key (id) of the slate_setting 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/slate_settings/130'Responses
200Single slate_setting row.application/jsonshow example ▸
404Row not found.
Response Schema(11 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
league_id | bigint | — | — e.g. 2 |
operator_id | bigint | — e.g. 2 | |
operator_setting_id | stringnullable | — | The operator's own id for this format (DraftKings gameTypeId, FanDuel slateFormatId). Operators reuse these ids across versions and formats, so it is unique only together with operator, league, game type and valid_from. e.g. 45 |
contest_type | integer | — | Contest structure code (0 = Tournament / GPP, 1 = Cash game / Double-up). e.g. 0 |
game_style | stringnullable | — | Operator game style label. Values:CLASSICSINGLE_GAMEPICK_EMFULL_ROSTERLATE_SWAPSHOW_DOWNSHOW_DOWN_CAPTAIN_MODESINGLE_GAME_BOOSTSINGLE_GAME_V3NON_LATE_SWAPSTARTING_5WEEKENDSHOW_DOWN_CAPTAIN_MODE_…FINAL_ROUND_ONLYSINGLE_GAME_DEPRECATEDSINGLE_GAME_V2-DEPRECAT…SINGLE_GAME_V2 |
game_type | integer | — | Contest format code (0 = Classic full-slate, 1 = Showdown / Single Game, 2 = Tiers). e.g. 1 |
name | string | — | Ruleset name (e.g. "Classic", "Showdown Captain Mode", "Single Game"). e.g. Showdown |
scoring | jsonbnullable | — | The setting's scoring rule, the only source of its slates' points: `rule` (a name shared by settings that score alike, e.g. fanduel-nfl-2024), `part_of_game` (full, second_half, fourth_quarter), and for a full-game rule `stats`: points per stat, yardage bonuses (stat, at, points), field-goal tiers, and defense points (with the points-allowed figure the operator counts). An in-game rule holds no `stats`: its slates carry the operator's own points. NULL = no rule yet. e.g. {"part_of_game":"full","rule":"fanduel-nba","stats":{"assis… |
settings | jsonb | — | The lineup ruleset as JSON, from the operator's own data: salary cap, roster slots, eligible positions, and the seat multipliers (syntheticPositions, e.g. CPT 1.5x). The points per stat are in `scoring`. e.g. {"containsDuplicatePlayers":false,"lateSwap":false,"maxPlay… |
↳scoring settings.scoring | objectnullable | — | Legacy: per-stat settings copied onto some old rows from an earlier configuration, served as stored. Not read; the scoring rule is the `scoring` column. |
↳lateSwap settings.lateSwap | booleannullable | — | Whether late lineup swapping is permitted. |
↳positions settings.positions | listnullable | — | Roster slot requirements and eligible positions. |
↳salaryCap settings.salaryCap | integernullable | — | Total team salary cap in dollars (e.g. 50000). |
↳minTeamCount settings.minTeamCount | integernullable | — | Minimum distinct teams represented in lineup. |
↳salaryIncrement settings.salaryIncrement | integernullable | — | Minimum salary step unit. |
↳maxPlayersSameTeamCount settings.maxPlayersSameTeamCount | integernullable | — | Maximum players allowed from a single team. |
↳containsDuplicatePlayers settings.containsDuplicatePlayers | booleannullable | — | Whether captain/MVP multiplier slots allow player duplicates. |
valid_from | datenullable | — | First slate day (US Eastern) this version of the format applies to. e.g. 2015-10-01 |
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. |
slate_games
dfs.slate_gamesMany-to-many bridge between a DFS slate and the sport games included in its pool.
GET/api/v1/dfs/slate_gamesList slate_games for DFS
Requires one of:
slate_id or operator_slate_id — requests satisfying none of these return 400.Parameters
slate_idquerybigintoptionalFilter to the games in a single slate pool.
operator_slate_idquerybigintoptionalOperator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId). Resolves to slate_id.
operator_idquerystringoptionalDisambiguate slate by operator: 1 DraftKings, 2 FanDuel, 3 Yahoo.
operatorquerystringoptionalDisambiguate slate by operator: draftkings, fanduel, yahoo (or numeric operator id).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; 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/slate_games?slate_id=676551'Responses
200slate_games rows matching the declared filter set, wrapped in { slate_games, 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(6 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
external_id | stringnullable | — | Operator-side game identifier. e.g. 59159 |
game_id | bigint | — | Polymorphic reference to {nfl,nba,mlb}.games based on league_id e.g. 2392 |
league_id | bigint | — | League key disambiguating the polymorphic game_id (nfl/nba/mlb/nhl). e.g. 2 |
slate_id | bigint | FK to dfs.slates. e.g. 758 | |
data | jsonbnullable | — | Operator-provided game metadata (teams, matchup type, and start time). e.g. {"awayTeam":"NY","homeTeam":"BOS","matchType":null,"operato… |
↳awayTeam data.awayTeam | stringnullable | — | Away team code in slate context (e.g. DET). |
↳homeTeam data.homeTeam | stringnullable | — | Home team code in slate context (e.g. KC). |
↳startTime data.startTime | timestamptznullable | — | Scheduled game start timestamp. |
↳matchType data.matchType | stringnullable | — | Match classification (regular season, playoff, etc.). |
↳operator data.operator | stringnullable | — | DFS operator name (draftkings, fanduel, yahoo). |
↳operatorGameId data.operatorGameId | stringnullable | — | Operator external game identifier. |
↳recordedAt data.recordedAt | timestamptznullable | — | Ingest capture timestamp. |
↳source data.source | stringnullable | — | Data ingest source identifier. |
↳sourceOrdinal data.sourceOrdinal | integernullable | — | Source precedence ranking. |
↳v data.v | integernullable | — | Payload format schema version. |
GET/api/v1/dfs/slate_games/{id}Get a single slate_game by id
Parameters
idpathbigintrequiredPrimary key (id) of the slate_game 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/slate_games/2122853'Responses
200Single slate_game row.application/jsonshow example ▸
404Row not found.
Response Schema(6 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
external_id | stringnullable | — | Operator-side game identifier. e.g. 59159 |
game_id | bigint | — | Polymorphic reference to {nfl,nba,mlb}.games based on league_id e.g. 2392 |
league_id | bigint | — | League key disambiguating the polymorphic game_id (nfl/nba/mlb/nhl). e.g. 2 |
slate_id | bigint | FK to dfs.slates. e.g. 758 | |
data | jsonbnullable | — | Operator-provided game metadata (teams, matchup type, and start time). e.g. {"awayTeam":"NY","homeTeam":"BOS","matchType":null,"operato… |
↳awayTeam data.awayTeam | stringnullable | — | Away team code in slate context (e.g. DET). |
↳homeTeam data.homeTeam | stringnullable | — | Home team code in slate context (e.g. KC). |
↳startTime data.startTime | timestamptznullable | — | Scheduled game start timestamp. |
↳matchType data.matchType | stringnullable | — | Match classification (regular season, playoff, etc.). |
↳operator data.operator | stringnullable | — | DFS operator name (draftkings, fanduel, yahoo). |
↳operatorGameId data.operatorGameId | stringnullable | — | Operator external game identifier. |
↳recordedAt data.recordedAt | timestamptznullable | — | Ingest capture timestamp. |
↳source data.source | stringnullable | — | Data ingest source identifier. |
↳sourceOrdinal data.sourceOrdinal | integernullable | — | Source precedence ranking. |
↳v data.v | integernullable | — | Payload format schema version. |
slate_players
dfs.slate_playersPlayer pool for a DFS slate — one row per (slate, player, roster slot). Carries operator salary, positions, and any operator-side metadata.
GET/api/v1/dfs/slate_playersList slate_players for DFS
Requires one of:
slate_id or operator_slate_id — requests satisfying none of these return 400.Parameters
slate_idquerybigintoptionalFilter to the player pool of a single slate.
operator_slate_idquerybigintoptionalOperator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId). Resolves to slate_id.
operator_idquerystringoptionalDisambiguate slate by operator: 1 DraftKings, 2 FanDuel, 3 Yahoo.
operatorquerystringoptionalDisambiguate slate by operator: draftkings, fanduel, yahoo (or numeric operator id).
positionquerystringoptionalFilter by roster position (e.g. QB, RB, WR, TE, DST, K).
team_idquerybigintoptionalFilter by team ID.
modequerystringoptionaldefault preTime wall. `pre` (default): each value as it stood at its game's kickoff; post-game fields are null. `full`: the latest value before week end (the first Tuesday 04:00 ET after the game), post-game fields included. See the Data timing guide. Values: pre, full.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; 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/slate_players?slate_id=676551'Responses
200slate_players rows matching the declared filter set, wrapped in { slate_players, 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(17 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
export_id | stringnullable | — | Operator player ID used for CSV export/import e.g. 108443-158854 |
external_id | stringnullable | — | Operator player identifier in this slate. e.g. 145319 |
league_id | bigint | — | League key disambiguating player_id. e.g. 2 |
player_id | bigint | — | Polymorphic FK to {nfl,nba,mlb,nhl}.players based on league_id. e.g. 23 |
slate_game_id | bigint | FK to dfs.slate_games — the specific slate-game this player is rostered to. e.g. 193 | |
slate_id | bigint | FK to dfs.slates. e.g. 247 | |
team_id | bigintnullable | — | Polymorphic FK to {league}.teams. Null for golfers and other player-only sports. e.g. 17 |
avg_points | floatnullable | — | Average fantasy points from operator e.g. 14.4 |
display_name | stringnullable | — | Full display name from operator e.g. Jarred Vanderbilt |
eligible_positions | stringnullable | — | Every position the operator lets this listing fill, /-joined in the operator's order (e.g. OF/2B/3B, PG/SG). A lineup may seat the player in any slot that accepts one of them. A showdown listing (CPT, MVP, STAR, PRO) holds its own seat. Null when no operator answer we hold gives the list. Values:CPGCPTSGMVPPROSTARSFSG/SFPFSF/PFPG/SGPF/CPF/SFSF/SGSG/PGPG/SFC/PFPG/PF |
first_name | stringnullable | — | Player first name from operator e.g. Jalen |
injury_details | stringnullable | — | Injury body part/details e.g. — (all-null in sample) |
injury_status | stringnullable | — | Injury status, lower case: il, o, q, d, p, dtd, na, ir, gtd (game-time decision), c19 (COVID-19 protocols, 2021-22 only). Empty when the operator listed the player as healthy. Values:oqgtd |
last_name | stringnullable | — | Player last name from operator e.g. Williams |
position | string | — | Primary position label per operator (e.g., RB, WR, PG, SP). Values:CPGCPTSGMVPPROSTARSFSG/SFPFSF/PFPG/SGPF/CPF/SFSF/SGSG/PGPG/SFC/PFPG/PF |
salary | integer | — | Operator-assigned DFS salary (whole dollars; e.g., 8400 = $8,400). e.g. 6000 |
GET/api/v1/dfs/slate_players/{id}Get a single slate_player by id
Parameters
idpathbigintrequiredPrimary key (id) of the slate_player row.
modequerystringoptionaldefault preTime wall. `pre` (default): each value as it stood at its game's kickoff; post-game fields are null. `full`: the latest value before week end (the first Tuesday 04:00 ET after the game), post-game fields included. See the Data timing guide. Values: pre, full.
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/slate_players/43189982'Responses
200Single slate_player row.application/jsonshow example ▸
404Row not found.
Response Schema(17 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
export_id | stringnullable | — | Operator player ID used for CSV export/import e.g. 108443-158854 |
external_id | stringnullable | — | Operator player identifier in this slate. e.g. 145319 |
league_id | bigint | — | League key disambiguating player_id. e.g. 2 |
player_id | bigint | — | Polymorphic FK to {nfl,nba,mlb,nhl}.players based on league_id. e.g. 23 |
slate_game_id | bigint | FK to dfs.slate_games — the specific slate-game this player is rostered to. e.g. 193 | |
slate_id | bigint | FK to dfs.slates. e.g. 247 | |
team_id | bigintnullable | — | Polymorphic FK to {league}.teams. Null for golfers and other player-only sports. e.g. 17 |
avg_points | floatnullable | — | Average fantasy points from operator e.g. 14.4 |
display_name | stringnullable | — | Full display name from operator e.g. Jarred Vanderbilt |
eligible_positions | stringnullable | — | Every position the operator lets this listing fill, /-joined in the operator's order (e.g. OF/2B/3B, PG/SG). A lineup may seat the player in any slot that accepts one of them. A showdown listing (CPT, MVP, STAR, PRO) holds its own seat. Null when no operator answer we hold gives the list. Values:CPGCPTSGMVPPROSTARSFSG/SFPFSF/PFPG/SGPF/CPF/SFSF/SGSG/PGPG/SFC/PFPG/PF |
first_name | stringnullable | — | Player first name from operator e.g. Jalen |
injury_details | stringnullable | — | Injury body part/details e.g. — (all-null in sample) |
injury_status | stringnullable | — | Injury status, lower case: il, o, q, d, p, dtd, na, ir, gtd (game-time decision), c19 (COVID-19 protocols, 2021-22 only). Empty when the operator listed the player as healthy. Values:oqgtd |
last_name | stringnullable | — | Player last name from operator e.g. Williams |
position | string | — | Primary position label per operator (e.g., RB, WR, PG, SP). Values:CPGCPTSGMVPPROSTARSFSG/SFPFSF/PFPG/SGPF/CPF/SFSF/SGSG/PGPG/SFC/PFPG/PF |
salary | integer | — | Operator-assigned DFS salary (whole dollars; e.g., 8400 = $8,400). e.g. 6000 |
Stats
game_stats
dfs.game_statsOne row per game in a slate's pool: the game's total fantasy production for the scoring rule of the slate's setting with home/away point totals, per-category point columns, and headline raw stats per side. Per-side category detail lives on team_stats. NFL and NBA. The fields marked "NBA only" are null on NFL rows; every NFL-only field is null on NBA rows.
GET/api/v1/dfs/game_statsList game_stats for DFS
Requires one of:
slate_id or game_id or slate_date or operator_slate_id — requests satisfying none of these return 400.Parameters
slate_idquerybigintoptionalFilter to one slate — every game in its pool.
operator_slate_idquerybigintoptionalOperator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId). Resolves to slate_id.
game_idquerybigintoptionalFilter to one game across slates.
slate_datequerydateoptionalSlate calendar day (YYYY-MM-DD, US Eastern). Range operators support backtesting windows. Range syntax: slate_date__gte=, slate_date__lte=, slate_date__between=.
scoring_formatquerystringoptionalScoring format code (classic, showdown, single_game).
operator_idquerybigintoptionalFilter by operator: by numeric id (1 = DraftKings, 2 = FanDuel) or name (draftkings, fanduel).
operatorquerystringoptionalFilter by operator: draftkings, fanduel, yahoo (or numeric operator id).
league_idquerybigintoptionalFilter by league (1 = NFL).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; 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/game_stats?slate_id=676551'Responses
200game_stats rows matching the declared filter set, wrapped in { game_stats, 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(50 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
away_team_id | bigint | — | — e.g. 19 |
game_id | bigint | — | — e.g. 42549 |
home_team_id | bigint | — | — e.g. 16 |
league_id | bigint | — | — e.g. 1 |
operator_id | bigint | — | — e.g. 2 |
slate_id | bigint | — e.g. 124482 | |
away_fpts | decimalnullable | — | — e.g. 105.7600 |
away_passing_yds | integernullable | — | — e.g. 194 |
away_pts | integernullable | — | — e.g. 17 |
away_rushing_yds | integernullable | — | — e.g. 106 |
away_total_yds | integernullable | — | — e.g. 396 |
away_turnovers | integernullable | — | — e.g. 1 |
home_fpts | decimalnullable | — | — e.g. 76.9800 |
home_passing_yds | integernullable | — | — e.g. 275 |
home_pts | integernullable | — | — e.g. 17 |
home_rushing_yds | integernullable | — | — e.g. 96 |
home_total_yds | integernullable | — | — e.g. 367 |
home_turnovers | integernullable | — | — e.g. 1 |
player_count | integernullable | — | — e.g. 78 |
scoring_format | stringnullable | — | Operator scoring format code (classic, showdown, single_game); null when the format has no fantasy scoring. Values:classicsingle_gameshowdown |
slate_date | date | — | — e.g. 2021-11-21 |
total_blocked_kick_fpts | decimalnullable | — | — e.g. 0.0000 |
total_defense_interception_fpts | decimalnullable | — | — e.g. 2.0000 |
total_defensive_td_fpts | decimalnullable | — | — e.g. 0.0000 |
total_extra_point_fpts | decimalnullable | — | — e.g. 4.0000 |
total_field_goal_fpts | decimalnullable | — | — e.g. 6.0000 |
total_field_goal_missed_fpts | decimalnullable | — | — e.g. 0.0000 |
total_fpts | decimalnullable | — | — e.g. 180.5600 |
total_fumble_lost_fpts | decimalnullable | — | — e.g. -2.0000 |
total_fumble_recovery_fpts | decimalnullable | — | — e.g. 2.0000 |
total_interception_fpts | decimalnullable | — | — e.g. -1.0000 |
total_passing_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
total_passing_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
total_passing_td_fpts | decimalnullable | — | — e.g. 12.0000 |
total_passing_yds_fpts | decimalnullable | — | — e.g. 19.5600 |
total_pts_allowed_fpts | decimalnullable | — | — e.g. 0.0000 |
total_receiving_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
total_receiving_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
total_receiving_td_fpts | decimalnullable | — | — e.g. 18.0000 |
total_receiving_yds_fpts | decimalnullable | — | — e.g. 48.9000 |
total_reception_fpts | decimalnullable | — | — e.g. 21.5000 |
total_return_td_fpts | decimalnullable | — | — e.g. 0.0000 |
total_return_yds_fpts | decimalnullable | — | — e.g. 0.0000 |
total_rushing_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
total_rushing_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
total_rushing_td_fpts | decimalnullable | — | — e.g. 6.0000 |
total_rushing_yds_fpts | decimalnullable | — | — e.g. 20.8000 |
total_sack_fpts | decimalnullable | — | — e.g. 4.0000 |
total_safety_fpts | decimalnullable | — | — e.g. 0.0000 |
GET/api/v1/dfs/game_stats/{id}Get a single game_stat by id
Parameters
idpathbigintrequiredPrimary key (id) of the game_stat 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/game_stats/2122853'Responses
200Single game_stat row.application/jsonshow example ▸
404Row not found.
Response Schema(50 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
away_team_id | bigint | — | — e.g. 19 |
game_id | bigint | — | — e.g. 42549 |
home_team_id | bigint | — | — e.g. 16 |
league_id | bigint | — | — e.g. 1 |
operator_id | bigint | — | — e.g. 2 |
slate_id | bigint | — e.g. 124482 | |
away_fpts | decimalnullable | — | — e.g. 105.7600 |
away_passing_yds | integernullable | — | — e.g. 194 |
away_pts | integernullable | — | — e.g. 17 |
away_rushing_yds | integernullable | — | — e.g. 106 |
away_total_yds | integernullable | — | — e.g. 396 |
away_turnovers | integernullable | — | — e.g. 1 |
home_fpts | decimalnullable | — | — e.g. 76.9800 |
home_passing_yds | integernullable | — | — e.g. 275 |
home_pts | integernullable | — | — e.g. 17 |
home_rushing_yds | integernullable | — | — e.g. 96 |
home_total_yds | integernullable | — | — e.g. 367 |
home_turnovers | integernullable | — | — e.g. 1 |
player_count | integernullable | — | — e.g. 78 |
scoring_format | stringnullable | — | Operator scoring format code (classic, showdown, single_game); null when the format has no fantasy scoring. Values:classicsingle_gameshowdown |
slate_date | date | — | — e.g. 2021-11-21 |
total_blocked_kick_fpts | decimalnullable | — | — e.g. 0.0000 |
total_defense_interception_fpts | decimalnullable | — | — e.g. 2.0000 |
total_defensive_td_fpts | decimalnullable | — | — e.g. 0.0000 |
total_extra_point_fpts | decimalnullable | — | — e.g. 4.0000 |
total_field_goal_fpts | decimalnullable | — | — e.g. 6.0000 |
total_field_goal_missed_fpts | decimalnullable | — | — e.g. 0.0000 |
total_fpts | decimalnullable | — | — e.g. 180.5600 |
total_fumble_lost_fpts | decimalnullable | — | — e.g. -2.0000 |
total_fumble_recovery_fpts | decimalnullable | — | — e.g. 2.0000 |
total_interception_fpts | decimalnullable | — | — e.g. -1.0000 |
total_passing_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
total_passing_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
total_passing_td_fpts | decimalnullable | — | — e.g. 12.0000 |
total_passing_yds_fpts | decimalnullable | — | — e.g. 19.5600 |
total_pts_allowed_fpts | decimalnullable | — | — e.g. 0.0000 |
total_receiving_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
total_receiving_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
total_receiving_td_fpts | decimalnullable | — | — e.g. 18.0000 |
total_receiving_yds_fpts | decimalnullable | — | — e.g. 48.9000 |
total_reception_fpts | decimalnullable | — | — e.g. 21.5000 |
total_return_td_fpts | decimalnullable | — | — e.g. 0.0000 |
total_return_yds_fpts | decimalnullable | — | — e.g. 0.0000 |
total_rushing_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
total_rushing_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
total_rushing_td_fpts | decimalnullable | — | — e.g. 6.0000 |
total_rushing_yds_fpts | decimalnullable | — | — e.g. 20.8000 |
total_sack_fpts | decimalnullable | — | — e.g. 4.0000 |
total_safety_fpts | decimalnullable | — | — e.g. 0.0000 |
player_stats
dfs.player_statsOne row per slate player: the slate context (slate, salary, position) joined to that player's per-game fantasy result for the scoring rule of the slate's setting — total points, the per-category point columns, and the raw stats behind them. NFL and NBA. The fields marked "NBA only" are null on NFL rows; every NFL-only field is null on NBA rows.
GET/api/v1/dfs/player_statsList player_stats for DFS
Requires one of:
slate_id or player_id or game_id or slate_date or operator_slate_id — requests satisfying none of these return 400.Parameters
slate_idquerybigintoptionalFilter to one slate — every player in that slate's pool.
operator_slate_idquerybigintoptionalOperator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId). Resolves to slate_id.
player_idquerybigintoptionalFilter to a single player across slates.
game_idquerybigintoptionalFilter to the players whose slate rows resolve to one game.
slate_datequerydateoptionalSlate calendar day (YYYY-MM-DD, US Eastern). Range operators support backtesting windows. Range syntax: slate_date__gte=, slate_date__lte=, slate_date__between=.
team_idquerybigintoptionalFilter by the player's team.
scoring_formatquerystringoptionalScoring format code (classic, showdown, single_game) — e.g. exclude showdown duplicates from a player log.
positionquerystringoptionalRoster position as listed in the slate pool (QB, RB, WR, TE, DST).
operator_idquerybigintoptionalFilter by operator: by numeric id (1 = DraftKings, 2 = FanDuel) or name (draftkings, fanduel).
operatorquerystringoptionalFilter by operator: draftkings, fanduel, yahoo (or numeric operator id).
league_idquerybigintoptionalFilter by league (1 = NFL).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; 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/player_stats?slate_id=676551'Responses
200player_stats rows matching the declared filter set, wrapped in { player_stats, 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(74 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigintnullable | — | — e.g. 42306 |
league_id | bigint | — | — e.g. 1 |
operator_id | bigint | — | — e.g. 2 |
player_id | bigint | — | — e.g. 1183 |
slate_id | bigint | — e.g. 124469 | |
team_id | bigintnullable | — | — e.g. 28 |
blocked_kick_fpts | decimalnullable | — | — e.g. 0.0000 |
blocked_kicks | integernullable | — | — e.g. 0 |
defense_interception_fpts | decimalnullable | — | — e.g. 0.0000 |
defensive_interceptions | integernullable | — | — e.g. 0 |
defensive_sacks | floatnullable | — | Numeric — half-sacks exist. Player value for humans, team value for DST rows. e.g. 0 |
defensive_td_fpts | decimalnullable | — | — e.g. 0.0000 |
defensive_tds | integernullable | — | — e.g. 0 |
extra_point_fpts | decimalnullable | — | — e.g. 0.0000 |
extra_pts_made | integernullable | — | — e.g. 0 |
fantasy_pts | decimalnullable | — | — e.g. 0.0000 |
field_goal_fpts | decimalnullable | — | — e.g. 0.0000 |
field_goal_missed_fpts | decimalnullable | — | — e.g. 0.0000 |
field_goals_attempted | integernullable | — | — e.g. 0 |
field_goals_made | integernullable | — | — e.g. 0 |
field_goals_made_0_19 | integernullable | — | — e.g. 0 |
field_goals_made_20_29 | integernullable | — | — e.g. 0 |
field_goals_made_30_39 | integernullable | — | — e.g. 0 |
field_goals_made_40_49 | integernullable | — | — e.g. 0 |
field_goals_made_50_plus | integernullable | — | — e.g. 0 |
fumble_lost_fpts | decimalnullable | — | — e.g. 0.0000 |
fumble_recovery_fpts | decimalnullable | — | — e.g. 0.0000 |
fumbles_recovered | integernullable | — | — e.g. 0 |
interception_fpts | decimalnullable | — | — e.g. 0.0000 |
interception_return_tds | integernullable | — | — e.g. 0 |
interceptions_thrown | integernullable | — | — e.g. 0 |
kick_return_tds | integernullable | — | — e.g. 0 |
kick_return_yds | integernullable | — | — e.g. 0 |
passing_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
passing_2pt_conversions | integernullable | — | — e.g. 0 |
passing_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
passing_td_fpts | decimalnullable | — | — e.g. 0.0000 |
passing_tds | integernullable | — | — e.g. 0 |
passing_yds | integernullable | — | — e.g. 0 |
passing_yds_fpts | decimalnullable | — | — e.g. 0.0000 |
position | string | — | — Values:WRRBTEMVPQBCPTDKDST |
pts_allowed_def | integernullable | — | — e.g. 16 |
pts_allowed_dst | integernullable | — | — e.g. 16 |
pts_allowed_fpts | decimalnullable | — | — e.g. 0.0000 |
punt_return_tds | integernullable | — | — e.g. 0 |
punt_return_yds | integernullable | — | — e.g. 0 |
receiving_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
receiving_2pt_conversions | integernullable | — | — e.g. 0 |
receiving_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
receiving_fumbles_lost | integernullable | — | — e.g. 0 |
receiving_td_fpts | decimalnullable | — | — e.g. 0.0000 |
receiving_tds | integernullable | — | — e.g. 0 |
receiving_yds | integernullable | — | — e.g. 0 |
receiving_yds_fpts | decimalnullable | — | — e.g. 0.0000 |
reception_fpts | decimalnullable | — | — e.g. 0.0000 |
receptions | integernullable | — | — e.g. 0 |
return_td_fpts | decimalnullable | — | — e.g. 0.0000 |
return_yds_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_2pt_conversions | integernullable | — | — e.g. 0 |
rushing_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_fumbles_lost | integernullable | — | — e.g. 0 |
rushing_td_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_tds | integernullable | — | — e.g. 0 |
rushing_yds | integernullable | — | — e.g. 0 |
rushing_yds_fpts | decimalnullable | — | — e.g. 0.0000 |
sack_fpts | decimalnullable | — | — e.g. 0.0000 |
sack_fumbles_lost | integernullable | — | — e.g. 0 |
safeties | integernullable | — | — e.g. 0 |
safety_fpts | decimalnullable | — | — e.g. 0.0000 |
salary | integer | — | — e.g. 6000 |
scoring_format | stringnullable | — | Operator scoring format code (classic, showdown, single_game); null when the format has no fantasy scoring. Values:classicsingle_gameshowdown |
slate_date | date | — | — e.g. 2021-08-21 |
GET/api/v1/dfs/player_stats/{id}Get a single player_stat by id
Parameters
idpathbigintrequiredPrimary key (id) of the player_stat 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/player_stats/43189982'Responses
200Single player_stat row.application/jsonshow example ▸
404Row not found.
Response Schema(74 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigintnullable | — | — e.g. 42306 |
league_id | bigint | — | — e.g. 1 |
operator_id | bigint | — | — e.g. 2 |
player_id | bigint | — | — e.g. 1183 |
slate_id | bigint | — e.g. 124469 | |
team_id | bigintnullable | — | — e.g. 28 |
blocked_kick_fpts | decimalnullable | — | — e.g. 0.0000 |
blocked_kicks | integernullable | — | — e.g. 0 |
defense_interception_fpts | decimalnullable | — | — e.g. 0.0000 |
defensive_interceptions | integernullable | — | — e.g. 0 |
defensive_sacks | floatnullable | — | Numeric — half-sacks exist. Player value for humans, team value for DST rows. e.g. 0 |
defensive_td_fpts | decimalnullable | — | — e.g. 0.0000 |
defensive_tds | integernullable | — | — e.g. 0 |
extra_point_fpts | decimalnullable | — | — e.g. 0.0000 |
extra_pts_made | integernullable | — | — e.g. 0 |
fantasy_pts | decimalnullable | — | — e.g. 0.0000 |
field_goal_fpts | decimalnullable | — | — e.g. 0.0000 |
field_goal_missed_fpts | decimalnullable | — | — e.g. 0.0000 |
field_goals_attempted | integernullable | — | — e.g. 0 |
field_goals_made | integernullable | — | — e.g. 0 |
field_goals_made_0_19 | integernullable | — | — e.g. 0 |
field_goals_made_20_29 | integernullable | — | — e.g. 0 |
field_goals_made_30_39 | integernullable | — | — e.g. 0 |
field_goals_made_40_49 | integernullable | — | — e.g. 0 |
field_goals_made_50_plus | integernullable | — | — e.g. 0 |
fumble_lost_fpts | decimalnullable | — | — e.g. 0.0000 |
fumble_recovery_fpts | decimalnullable | — | — e.g. 0.0000 |
fumbles_recovered | integernullable | — | — e.g. 0 |
interception_fpts | decimalnullable | — | — e.g. 0.0000 |
interception_return_tds | integernullable | — | — e.g. 0 |
interceptions_thrown | integernullable | — | — e.g. 0 |
kick_return_tds | integernullable | — | — e.g. 0 |
kick_return_yds | integernullable | — | — e.g. 0 |
passing_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
passing_2pt_conversions | integernullable | — | — e.g. 0 |
passing_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
passing_td_fpts | decimalnullable | — | — e.g. 0.0000 |
passing_tds | integernullable | — | — e.g. 0 |
passing_yds | integernullable | — | — e.g. 0 |
passing_yds_fpts | decimalnullable | — | — e.g. 0.0000 |
position | string | — | — Values:WRRBTEMVPQBCPTDKDST |
pts_allowed_def | integernullable | — | — e.g. 16 |
pts_allowed_dst | integernullable | — | — e.g. 16 |
pts_allowed_fpts | decimalnullable | — | — e.g. 0.0000 |
punt_return_tds | integernullable | — | — e.g. 0 |
punt_return_yds | integernullable | — | — e.g. 0 |
receiving_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
receiving_2pt_conversions | integernullable | — | — e.g. 0 |
receiving_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
receiving_fumbles_lost | integernullable | — | — e.g. 0 |
receiving_td_fpts | decimalnullable | — | — e.g. 0.0000 |
receiving_tds | integernullable | — | — e.g. 0 |
receiving_yds | integernullable | — | — e.g. 0 |
receiving_yds_fpts | decimalnullable | — | — e.g. 0.0000 |
reception_fpts | decimalnullable | — | — e.g. 0.0000 |
receptions | integernullable | — | — e.g. 0 |
return_td_fpts | decimalnullable | — | — e.g. 0.0000 |
return_yds_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_2pt_conversions | integernullable | — | — e.g. 0 |
rushing_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_fumbles_lost | integernullable | — | — e.g. 0 |
rushing_td_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_tds | integernullable | — | — e.g. 0 |
rushing_yds | integernullable | — | — e.g. 0 |
rushing_yds_fpts | decimalnullable | — | — e.g. 0.0000 |
sack_fpts | decimalnullable | — | — e.g. 0.0000 |
sack_fumbles_lost | integernullable | — | — e.g. 0 |
safeties | integernullable | — | — e.g. 0 |
safety_fpts | decimalnullable | — | — e.g. 0.0000 |
salary | integer | — | — e.g. 6000 |
scoring_format | stringnullable | — | Operator scoring format code (classic, showdown, single_game); null when the format has no fantasy scoring. Values:classicsingle_gameshowdown |
slate_date | date | — | — e.g. 2021-08-21 |
team_stats
dfs.team_statsOne row per team per slate game: the team's summed fantasy production for the scoring rule of the slate's setting — total points, per-category point columns, player count, and the team's raw box-score line. NFL and NBA. An NFL team total includes its DST. The fields marked "NBA only" are null on NFL rows; every NFL-only field is null on NBA rows.
GET/api/v1/dfs/team_statsList team_stats for DFS
Requires one of:
slate_id or game_id or team_id or slate_date or operator_slate_id — requests satisfying none of these return 400.Parameters
slate_idquerybigintoptionalFilter to one slate — both teams of every game in it.
operator_slate_idquerybigintoptionalOperator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId). Resolves to slate_id.
game_idquerybigintoptionalFilter to one game's two team rows across slates.
slate_datequerydateoptionalSlate calendar day (YYYY-MM-DD, US Eastern). Range operators support backtesting windows. Range syntax: slate_date__gte=, slate_date__lte=, slate_date__between=.
team_idquerybigintoptionalFilter to one team across slates.
scoring_formatquerystringoptionalScoring format code (classic, showdown, single_game).
operator_idquerybigintoptionalFilter by operator: by numeric id (1 = DraftKings, 2 = FanDuel) or name (draftkings, fanduel).
operatorquerystringoptionalFilter by operator: draftkings, fanduel, yahoo (or numeric operator id).
league_idquerybigintoptionalFilter by league (1 = NFL).
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; 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/team_stats?slate_id=676551'Responses
200team_stats rows matching the declared filter set, wrapped in { team_stats, 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(61 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigint | — | — e.g. 42549 |
league_id | bigint | — | — e.g. 1 |
operator_id | bigint | — | — e.g. 2 |
opponent_team_id | bigint | — | — e.g. 19 |
slate_id | bigint | — e.g. 124482 | |
team_id | bigint | — | — e.g. 19 |
blocked_kick_fpts | decimalnullable | — | — e.g. 0.0000 |
blocked_kicks | integernullable | — | — e.g. 0 |
defense_interception_fpts | decimalnullable | — | — e.g. 0.0000 |
defensive_interceptions | integernullable | — | — e.g. 0 |
defensive_sacks | integernullable | — | — e.g. 2 |
defensive_td_fpts | decimalnullable | — | — e.g. 0.0000 |
defensive_tds | integernullable | — | — e.g. 0 |
extra_point_fpts | decimalnullable | — | — e.g. 2.0000 |
extra_pts_made | integernullable | — | — e.g. 2 |
fantasy_pts | decimalnullable | — | — e.g. 89.3000 |
field_goal_fpts | decimalnullable | — | — e.g. 3.0000 |
field_goal_missed_fpts | decimalnullable | — | — e.g. 0.0000 |
field_goals_attempted | integernullable | — | — e.g. 2 |
field_goals_made | integernullable | — | — e.g. 1 |
first_downs | integernullable | — | — e.g. 21 |
fumble_lost_fpts | decimalnullable | — | — e.g. 0.0000 |
fumble_recovery_fpts | decimalnullable | — | — e.g. 0.0000 |
fumbles_lost | integernullable | — | — e.g. 0 |
fumbles_recovered | integernullable | — | — e.g. 0 |
interception_fpts | decimalnullable | — | — e.g. 0.0000 |
interceptions_thrown | integernullable | — | — e.g. 0 |
is_home | boolean | — | — Values:truefalse |
kick_return_tds | integernullable | — | — e.g. 0 |
passing_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
passing_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
passing_td_fpts | decimalnullable | — | — e.g. 4.0000 |
passing_yds | integernullable | — | — e.g. 215 |
passing_yds_fpts | decimalnullable | — | — e.g. 8.6000 |
player_count | integernullable | — | — e.g. 39 |
pts | integernullable | — | — e.g. 17 |
pts_allowed_def | integernullable | — | — e.g. 17 |
pts_allowed_dst | integernullable | — | — e.g. 17 |
pts_allowed_fpts | decimalnullable | — | — e.g. 1.0000 |
punt_return_tds | integernullable | — | — e.g. 0 |
receiving_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
receiving_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
receiving_td_fpts | decimalnullable | — | — e.g. 6.0000 |
receiving_yds | integernullable | — | — e.g. 215 |
receiving_yds_fpts | decimalnullable | — | — e.g. 21.5000 |
reception_fpts | decimalnullable | — | — e.g. 11.5000 |
return_td_fpts | decimalnullable | — | — e.g. 0.0000 |
return_yds_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_td_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_yds | integernullable | — | — e.g. 103 |
rushing_yds_fpts | decimalnullable | — | — e.g. 10.3000 |
sack_fpts | decimalnullable | — | — e.g. 2.0000 |
safeties | integernullable | — | — e.g. 0 |
safety_fpts | decimalnullable | — | — e.g. 0.0000 |
scoring_format | stringnullable | — | Operator scoring format code (classic, showdown, single_game); null when the format has no fantasy scoring. Values:classicsingle_gameshowdown |
slate_date | date | — | — e.g. 2021-11-21 |
total_yds | integernullable | — | — e.g. 396 |
turnovers | integernullable | — | — e.g. 1 |
GET/api/v1/dfs/team_stats/{id}Get a single team_stat by id
Parameters
idpathbigintrequiredPrimary key (id) of the team_stat 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/team_stats/4245706'Responses
200Single team_stat row.application/jsonshow example ▸
404Row not found.
Response Schema(61 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
game_id | bigint | — | — e.g. 42549 |
league_id | bigint | — | — e.g. 1 |
operator_id | bigint | — | — e.g. 2 |
opponent_team_id | bigint | — | — e.g. 19 |
slate_id | bigint | — e.g. 124482 | |
team_id | bigint | — | — e.g. 19 |
blocked_kick_fpts | decimalnullable | — | — e.g. 0.0000 |
blocked_kicks | integernullable | — | — e.g. 0 |
defense_interception_fpts | decimalnullable | — | — e.g. 0.0000 |
defensive_interceptions | integernullable | — | — e.g. 0 |
defensive_sacks | integernullable | — | — e.g. 2 |
defensive_td_fpts | decimalnullable | — | — e.g. 0.0000 |
defensive_tds | integernullable | — | — e.g. 0 |
extra_point_fpts | decimalnullable | — | — e.g. 2.0000 |
extra_pts_made | integernullable | — | — e.g. 2 |
fantasy_pts | decimalnullable | — | — e.g. 89.3000 |
field_goal_fpts | decimalnullable | — | — e.g. 3.0000 |
field_goal_missed_fpts | decimalnullable | — | — e.g. 0.0000 |
field_goals_attempted | integernullable | — | — e.g. 2 |
field_goals_made | integernullable | — | — e.g. 1 |
first_downs | integernullable | — | — e.g. 21 |
fumble_lost_fpts | decimalnullable | — | — e.g. 0.0000 |
fumble_recovery_fpts | decimalnullable | — | — e.g. 0.0000 |
fumbles_lost | integernullable | — | — e.g. 0 |
fumbles_recovered | integernullable | — | — e.g. 0 |
interception_fpts | decimalnullable | — | — e.g. 0.0000 |
interceptions_thrown | integernullable | — | — e.g. 0 |
is_home | boolean | — | — Values:truefalse |
kick_return_tds | integernullable | — | — e.g. 0 |
passing_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
passing_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
passing_td_fpts | decimalnullable | — | — e.g. 4.0000 |
passing_yds | integernullable | — | — e.g. 215 |
passing_yds_fpts | decimalnullable | — | — e.g. 8.6000 |
player_count | integernullable | — | — e.g. 39 |
pts | integernullable | — | — e.g. 17 |
pts_allowed_def | integernullable | — | — e.g. 17 |
pts_allowed_dst | integernullable | — | — e.g. 17 |
pts_allowed_fpts | decimalnullable | — | — e.g. 1.0000 |
punt_return_tds | integernullable | — | — e.g. 0 |
receiving_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
receiving_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
receiving_td_fpts | decimalnullable | — | — e.g. 6.0000 |
receiving_yds | integernullable | — | — e.g. 215 |
receiving_yds_fpts | decimalnullable | — | — e.g. 21.5000 |
reception_fpts | decimalnullable | — | — e.g. 11.5000 |
return_td_fpts | decimalnullable | — | — e.g. 0.0000 |
return_yds_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_2pt_conversion_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_bonus_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_td_fpts | decimalnullable | — | — e.g. 0.0000 |
rushing_yds | integernullable | — | — e.g. 103 |
rushing_yds_fpts | decimalnullable | — | — e.g. 10.3000 |
sack_fpts | decimalnullable | — | — e.g. 2.0000 |
safeties | integernullable | — | — e.g. 0 |
safety_fpts | decimalnullable | — | — e.g. 0.0000 |
scoring_format | stringnullable | — | Operator scoring format code (classic, showdown, single_game); null when the format has no fantasy scoring. Values:classicsingle_gameshowdown |
slate_date | date | — | — e.g. 2021-11-21 |
total_yds | integernullable | — | — e.g. 396 |
turnovers | integernullable | — | — e.g. 1 |
Contests
contest_users
dfs.contest_usersA contest entrant — one operator-side user who submitted at least one lineup. Identified by the operator's user id, not a statview account.
GET/api/v1/dfs/contest_usersList contest_users for DFS
Requires one of:
operator_id or operator — requests satisfying none of these return 400.Parameters
operator_idquerybigintoptionalFilter to all contest entrants for a single DFS operator: by numeric id (1 DraftKings, 2 FanDuel, 3 Yahoo).
operatorquerystringoptionalFilter to all contest entrants for a single DFS operator: draftkings, fanduel, yahoo (or numeric operator id).
namequerystringoptionalFilter by entrant username (exact match).
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/contest_users?operator_id=1'Responses
200contest_users rows matching the declared filter set, wrapped in { contest_users, 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(4 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
external_id | string | — | Operator user ID e.g. younghoe |
operator_id | bigint | — e.g. 1 | |
name | stringnullable | — | — e.g. younghoe |
GET/api/v1/dfs/contest_users/{id}Get a single contest_user by id
Parameters
idpathbigintrequiredPrimary key (id) of the contest_user 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/contest_users/24761'Responses
200Single contest_user row.application/jsonshow example ▸
404Row not found.
Response Schema(4 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
external_id | string | — | Operator user ID e.g. younghoe |
operator_id | bigint | — e.g. 1 | |
name | stringnullable | — | — e.g. younghoe |
contests
dfs.contestsA DFS contest run on a slate — its entry fee, prize pool, entry caps, type flags and lock time. One slate hosts many contests. Fill history lives in contest_snapshots; the payout ladder in contest_payouts.
GET/api/v1/dfs/contestsList contests for DFS
Requires one of:
slate_id or operator_slate_id — requests satisfying none of these return 400.Parameters
slate_idquerybigintoptionalFilter to all contests run on a single slate.
operator_slate_idquerybigintoptionalOperator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId). Resolves to slate_id.
operator_idquerybigintoptionalFilter to one operator: by numeric id (1 DraftKings, 2 FanDuel, 3 Yahoo) or name (draftkings, fanduel).
operatorquerystringoptionalFilter to one operator: draftkings, fanduel, yahoo (or numeric operator id).
statusquerystringoptionalFilter contests by parent slate status: Upcoming, Live, Completed (case-insensitive). Values: Upcoming, Live, Completed, upcoming, live, completed.
slate_statusquerystringoptionalFilter contests by parent slate status: Upcoming, Live, Completed (case-insensitive). Values: Upcoming, Live, Completed, upcoming, live, completed.
lineups_statusquerystringoptionalFilter by lineup file status: available (the final lineups are loaded), live (a DraftKings contest whose games still run, with lineups from a live file), pending, unavailable, none. Values: available, live, pending, unavailable, none.
has_lineupsquerystringoptionalFilter contests by whether their lineups are loaded. true returns the contests with lineups_status available or live (the final file, or a live file while the games run). false returns every other contest (lineups_status pending, unavailable or none). Values: true, false.
partial_lineups_countqueryintegeroptionalFilter by how many stored lineups hold some of their seats but not all. partial_lineups_count=0 returns the contests whose stored lineups are all complete; partial_lineups_count__lte=N allows up to N such lineups. Range syntax: partial_lineups_count__lte=.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; 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/contests?slate_id=676551'Responses
200contests rows matching the declared filter set, wrapped in { contests, 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(27 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
external_id | bigint | — | Operator contest id, numeric. FanDuel: the tail of its composite id. e.g. 188369206 |
game_type_id | integernullable | — | Operator game type: DraftKings gameTypeId (1 Classic, 96 Showdown Captain, …). e.g. 70 |
operator_external_id | stringnullable | — | The operator id exactly as served. FanDuel: "{fixtureListId}-{contestId}", which the API needs back verbatim. DraftKings: same as external_id. e.g. 188369206 |
operator_id | bigint | FK to the operator. Denormalized from slates: 5,160 slate external_ids are shared between DraftKings and FanDuel, so every operator filter was a two-hop join. e.g. 1 | |
slate_id | bigint | FK to the slate this contest runs on. e.g. 32347 | |
attributes | jsonbnullable | — | The operator's raw flag set, kept whole: IsStarred, IsWinnerTakeAll, Multiplier, IsBeginner, IsCasual, IsPrivate, League, … e.g. {"lobby_captured_at":"2026-03-02T21:33:29.278Z","restricted… |
↳IsStarred attributes.IsStarred | stringnullable | — | Whether contest is starred/featured in lobby. |
↳IsQualifier attributes.IsQualifier | stringnullable | — | Whether contest awards tickets/qualifier seats. |
↳IsGuaranteed attributes.IsGuaranteed | stringnullable | — | Whether contest prize pool is guaranteed. |
↳IsWinnerTakeAll attributes.IsWinnerTakeAll | stringnullable | — | Winner-take-all payout format. |
↳Multiplier attributes.Multiplier | stringnullable | — | Contest payout multiplier flag. |
↳IsPrivate attributes.IsPrivate | stringnullable | — | Private contest restriction. |
↳League attributes.League | stringnullable | — | Contest league code. |
↳IsDoubleUp attributes.IsDoubleUp | stringnullable | — | Whether contest is a double-up format. |
↳IsFiftyfifty attributes.IsFiftyfifty | stringnullable | — | Whether contest is a 50/50 format. |
↳Is FiftyFifty attributes.Is FiftyFifty | stringnullable | — | Operator flag for 50/50 format (spaced key). |
↳Is Starred attributes.Is Starred | stringnullable | — | Operator flag for starred/featured contest (spaced key). |
↳IsGuranteed attributes.IsGuranteed | stringnullable | — | Operator flag for guaranteed prize pool (raw key spelling). |
↳contest_state_detail attributes.contest_state_detail | stringnullable | — | Detailed contest state or lifecycle detail. |
↳was_resized attributes.was_resized | booleannullable | — | Whether contest entry limit was adjusted or resized. |
↳live_telemetry attributes.live_telemetry | jsonbnullable | — | Live contest telemetry and pacing payload. |
↳hybrid_sampling attributes.hybrid_sampling | jsonbnullable | — | Hybrid sampling simulation configuration. |
↳lineup_capsule_uri attributes.lineup_capsule_uri | stringnullable | — | URI pointer to compressed contest lineup capsule. |
↳fill_pct attributes.lineup_capsule_uri.fill_pct | decimalnullable | — | Current percentage of entries filled. |
↳minutes_to_lock attributes.lineup_capsule_uri.minutes_to_lock | decimalnullable | — | Minutes remaining until contest lock. |
↳velocity_per_min attributes.lineup_capsule_uri.velocity_per_min | decimalnullable | — | Entry velocity rate per minute. |
↳projected_final_entries attributes.lineup_capsule_uri.projected_final_entries | bigintnullable | — | Projected final entry count at lock. |
↳projected_overlay_cents attributes.lineup_capsule_uri.projected_overlay_cents | bigintnullable | — | Projected operator overlay in integer cents. |
contest_state | stringnullable | — | Latest observed state: Upcoming, Live, Completed, Cancelled. DraftKings cs / contestState. Values:CompletedCancelled |
contest_type | integer | — | Contest structure code (0 = Tournament / GPP, 1 = Cash game / 50-50 / Double-up / head-to-head, 2 = League: a small public operator contest, e.g. a FanDuel 3-player league). e.g. 0 |
entry_count | integer | — | Latest observed entries. The history is in contest_snapshots. e.g. 0 |
entry_fee | integer | — | Entry fee in cents (e.g. 500 = $5.00, 2000 = $20.00). 0 for free contests. e.g. 100 |
first_seen_at | timestamptznullable | — | First lobby observation. e.g. — (all-null in sample) |
game_count | integer | — | Number of games in the pool of the contest's slate (distinct games in dfs.slate_games). 0 when the slate has no linked games. e.g. — (all-null in sample) |
guaranteed | boolean | — | Whether the prize pool is guaranteed regardless of entries filled. Values:truefalse |
last_seen_at | timestamptznullable | — | Last lobby observation. A contest absent from the lobby after this is cancelled or locked. e.g. 2026-10-02T03:09:20.810Z |
max_entries | integer | — | Maximum total entries the contest accepts. Latest observed. e.g. 100 |
max_entries_per_user | integer | — | Maximum lineups a single entrant may submit. e.g. 1 |
name | string | — | Operator-facing contest name (e.g. "$5 NBA Mini-MAX"). e.g. 50/50 Contest ($1 - Top 50% Win) |
paid_places | integernullable | — | Number of paying positions. FanDuel serves it in the lobby (prizes.count); DraftKings derives it from the ladder. e.g. 1 |
payout_type | integernullable | — | DraftKings pt. 1 on all paid contests; 2 marked the two $0 promo contests. e.g. 1 |
player_count | integer | — | Number of rows in the pool of the contest's slate (dfs.slate_players). On showdown and single-game slates a CPT or MVP row counts separately, so the number can be twice the players. e.g. — (all-null in sample) |
prize_pool | integer | — | Total prize pool in cents (e.g. 10000000 = $100,000.00). On qualifiers, includes ticket face value. e.g. 2500 |
qualifier | boolean | — | Satellite or qualifier — pays tickets or seats, not (only) cash. Excluded from field-size statistics. Values:falsetrue |
slate_status | stringnullable | — | Authoritative lifecycle status of the parent slate (Upcoming, Live, Completed), joined from dfs.slates. e.g. — (all-null in sample) |
start_time | timestamptznullable | — | The contest's own lock time. A late-swap contest locks later than its slate. e.g. 2026-03-03T00:00:00.000Z |
state | string | — | Lifecycle state of the contest in the Prelock / Started / Completed vocabulary, derived by the API on every read (browse.rs derive_dfs_lifecycle_state) from the parent slate 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 | stringnullable | — | Authoritative lifecycle status of the parent slate (Upcoming, Live, Completed), joined from dfs.slates. e.g. — (all-null in sample) |
GET/api/v1/dfs/contests/{id}Get a single contest by id
Parameters
idpathbigintrequiredPrimary key (id) of the contest 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/contests/37021368'Responses
200Single contest row.application/jsonshow example ▸
404Row not found.
Response Schema(27 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
external_id | bigint | — | Operator contest id, numeric. FanDuel: the tail of its composite id. e.g. 188369206 |
game_type_id | integernullable | — | Operator game type: DraftKings gameTypeId (1 Classic, 96 Showdown Captain, …). e.g. 70 |
operator_external_id | stringnullable | — | The operator id exactly as served. FanDuel: "{fixtureListId}-{contestId}", which the API needs back verbatim. DraftKings: same as external_id. e.g. 188369206 |
operator_id | bigint | FK to the operator. Denormalized from slates: 5,160 slate external_ids are shared between DraftKings and FanDuel, so every operator filter was a two-hop join. e.g. 1 | |
slate_id | bigint | FK to the slate this contest runs on. e.g. 32347 | |
attributes | jsonbnullable | — | The operator's raw flag set, kept whole: IsStarred, IsWinnerTakeAll, Multiplier, IsBeginner, IsCasual, IsPrivate, League, … e.g. {"lobby_captured_at":"2026-03-02T21:33:29.278Z","restricted… |
↳IsStarred attributes.IsStarred | stringnullable | — | Whether contest is starred/featured in lobby. |
↳IsQualifier attributes.IsQualifier | stringnullable | — | Whether contest awards tickets/qualifier seats. |
↳IsGuaranteed attributes.IsGuaranteed | stringnullable | — | Whether contest prize pool is guaranteed. |
↳IsWinnerTakeAll attributes.IsWinnerTakeAll | stringnullable | — | Winner-take-all payout format. |
↳Multiplier attributes.Multiplier | stringnullable | — | Contest payout multiplier flag. |
↳IsPrivate attributes.IsPrivate | stringnullable | — | Private contest restriction. |
↳League attributes.League | stringnullable | — | Contest league code. |
↳IsDoubleUp attributes.IsDoubleUp | stringnullable | — | Whether contest is a double-up format. |
↳IsFiftyfifty attributes.IsFiftyfifty | stringnullable | — | Whether contest is a 50/50 format. |
↳Is FiftyFifty attributes.Is FiftyFifty | stringnullable | — | Operator flag for 50/50 format (spaced key). |
↳Is Starred attributes.Is Starred | stringnullable | — | Operator flag for starred/featured contest (spaced key). |
↳IsGuranteed attributes.IsGuranteed | stringnullable | — | Operator flag for guaranteed prize pool (raw key spelling). |
↳contest_state_detail attributes.contest_state_detail | stringnullable | — | Detailed contest state or lifecycle detail. |
↳was_resized attributes.was_resized | booleannullable | — | Whether contest entry limit was adjusted or resized. |
↳live_telemetry attributes.live_telemetry | jsonbnullable | — | Live contest telemetry and pacing payload. |
↳hybrid_sampling attributes.hybrid_sampling | jsonbnullable | — | Hybrid sampling simulation configuration. |
↳lineup_capsule_uri attributes.lineup_capsule_uri | stringnullable | — | URI pointer to compressed contest lineup capsule. |
↳fill_pct attributes.lineup_capsule_uri.fill_pct | decimalnullable | — | Current percentage of entries filled. |
↳minutes_to_lock attributes.lineup_capsule_uri.minutes_to_lock | decimalnullable | — | Minutes remaining until contest lock. |
↳velocity_per_min attributes.lineup_capsule_uri.velocity_per_min | decimalnullable | — | Entry velocity rate per minute. |
↳projected_final_entries attributes.lineup_capsule_uri.projected_final_entries | bigintnullable | — | Projected final entry count at lock. |
↳projected_overlay_cents attributes.lineup_capsule_uri.projected_overlay_cents | bigintnullable | — | Projected operator overlay in integer cents. |
contest_state | stringnullable | — | Latest observed state: Upcoming, Live, Completed, Cancelled. DraftKings cs / contestState. Values:CompletedCancelled |
contest_type | integer | — | Contest structure code (0 = Tournament / GPP, 1 = Cash game / 50-50 / Double-up / head-to-head, 2 = League: a small public operator contest, e.g. a FanDuel 3-player league). e.g. 0 |
entry_count | integer | — | Latest observed entries. The history is in contest_snapshots. e.g. 0 |
entry_fee | integer | — | Entry fee in cents (e.g. 500 = $5.00, 2000 = $20.00). 0 for free contests. e.g. 100 |
first_seen_at | timestamptznullable | — | First lobby observation. e.g. — (all-null in sample) |
game_count | integer | — | Number of games in the pool of the contest's slate (distinct games in dfs.slate_games). 0 when the slate has no linked games. e.g. — (all-null in sample) |
guaranteed | boolean | — | Whether the prize pool is guaranteed regardless of entries filled. Values:truefalse |
last_seen_at | timestamptznullable | — | Last lobby observation. A contest absent from the lobby after this is cancelled or locked. e.g. 2026-10-02T03:09:20.810Z |
max_entries | integer | — | Maximum total entries the contest accepts. Latest observed. e.g. 100 |
max_entries_per_user | integer | — | Maximum lineups a single entrant may submit. e.g. 1 |
name | string | — | Operator-facing contest name (e.g. "$5 NBA Mini-MAX"). e.g. 50/50 Contest ($1 - Top 50% Win) |
paid_places | integernullable | — | Number of paying positions. FanDuel serves it in the lobby (prizes.count); DraftKings derives it from the ladder. e.g. 1 |
payout_type | integernullable | — | DraftKings pt. 1 on all paid contests; 2 marked the two $0 promo contests. e.g. 1 |
player_count | integer | — | Number of rows in the pool of the contest's slate (dfs.slate_players). On showdown and single-game slates a CPT or MVP row counts separately, so the number can be twice the players. e.g. — (all-null in sample) |
prize_pool | integer | — | Total prize pool in cents (e.g. 10000000 = $100,000.00). On qualifiers, includes ticket face value. e.g. 2500 |
qualifier | boolean | — | Satellite or qualifier — pays tickets or seats, not (only) cash. Excluded from field-size statistics. Values:falsetrue |
slate_status | stringnullable | — | Authoritative lifecycle status of the parent slate (Upcoming, Live, Completed), joined from dfs.slates. e.g. — (all-null in sample) |
start_time | timestamptznullable | — | The contest's own lock time. A late-swap contest locks later than its slate. e.g. 2026-03-03T00:00:00.000Z |
state | string | — | Lifecycle state of the contest in the Prelock / Started / Completed vocabulary, derived by the API on every read (browse.rs derive_dfs_lifecycle_state) from the parent slate 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 | stringnullable | — | Authoritative lifecycle status of the parent slate (Upcoming, Live, Completed), joined from dfs.slates. e.g. — (all-null in sample) |
GET/api/v1/dfs/contests/{contest_id}/downloadDownload full contest lineups (CSV or JSON)
Parameters
contest_idpathbigintrequiredInternal database contest ID or operator external_id.
formatquerystringoptionaldefault jsonOutput format (csv or json).
enrichquerystringoptionalDeclarative cross-entity enrichment tags (e.g. dfs.player_stats, nfl.games, nfl.teams). When format=csv, dfs.player_stats embeds non-zero boxscore statistics into each slot cell.
sampled_onlyquerybooleanoptionalWhen true on sampled contests, excludes unpopulated standings rows (0 in JSON, None in CSV), returning only clean populated lineups.
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/contests/37021368/download?format=csv'Responses
200Download full contest lineups (CSV or JSON)application/jsonshow example ▸
400Invalid contest ID format
404Contest or full contest lineup not found, or the loader does not collect lineups for this contest (lineups_not_collected: a caller with a paid plan on a DraftKings contest that has started, see the description)
410DraftKings no longer serves the lineup file of this contest (lineups_file_gone)
503The loader gave up on the lineup file and support is informed (lineups_not_loaded, Retry-After 3600), or the request to load it could not be queued (lineups_request_failed, Retry-After 60)
Response Schema(3 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
contest | object | — | Contest metadata. |
↳id contest.id | bigint | — | Contest ID. |
↳name contest.name | string | — | Contest name. |
↳sport contest.sport | string | — | League or sport code. |
↳operator contest.operator | string | — | DFS operator name (DraftKings, FanDuel). |
↳season contest.season | integer | — | Season year. |
↳date contest.date | string | — | Slate date (YYYY-MM-DD). |
↳slate_id contest.slate_id | bigint | — | DFS slate ID. |
↳operator_slate_id contest.operator_slate_id | bigint | — | Operator slate ID (DraftKings contestGroupId, FanDuel fixtureListId). |
↳slate_name contest.slate_name | string | — | Name of the slate (e.g. Main, Sunday Main). |
↳game_type contest.game_type | string | — | Contest format (classic, showdown). |
↳total_entries contest.total_entries | bigint | — | Total entrants. |
↳paid_places contest.paid_places | bigint | — | Total paying positions. |
↳entry_fee_cents contest.entry_fee_cents | bigint | — | Entry fee in cents. |
↳prize_pool_cents contest.prize_pool_cents | bigint | — | Prize pool in cents. |
↳slots contest.slots | list<S> | — | Ordered roster position slots. |
↳live contest.live | objectnullable | — | Present only while the lineups come from a live file: a DraftKings contest whose games still run, read at each game start, every minute for the next 30 minutes, then every 15 minutes until its final file is loaded at Completed. The seats of players whose games have not started are hidden, and no player points, payouts or ownership are served. Absent for a final file. |
↳read_at contest.live.read_at | string | — | When the live file was read from DraftKings (UTC, RFC 3339). Ranks and entry points are as of this time. |
↳kickoff_at contest.live.kickoff_at | string | — | The latest game start of the contest's slate that the live file covers (UTC, RFC 3339). Seats of games that start later are hidden. |
player_pool | list | — | The contest's player pool, one row per player per roster slot (hub decision D1). On a single-game contest (DraftKings showdown, FanDuel single game) each player has two rows with the same id: the multiplied slot (CPT on DraftKings, MVP on FanDuel) and FLEX (UTIL on NBA formats). On a contest with several multiplied slots (FanDuel NBA MVP 2x, STAR 1.5x, PRO 1.2x; FanDuel MLB MVP 2x, STAR 1.5x, shown as All-Star in the operator's file) each player has one row per multiplied slot and one for the plain slot (UTIL): the points of a row are the player's points times the multiplier of its slot. On a classic contest each player has one row, and its slot is his roster position. A lineup seat reads the row with its player id and its slot: the first seat of a single-game lineup is the CPT/MVP seat. Unique on (id, slot). Box-score stats come as an object per row with enrich=dfs.player_stats. |
↳id player_pool[].id | bigint | — | The operator's player id (dfs.slate_players.external_id). lineups[].slots hold these ids. A single-game player's CPT/MVP row and FLEX row share it. A removed-player seat (is_removed) has a negative id local to the contest instead: the operator's file names him without an id. The same holds for a shared-name seat (is_shared_name). |
↳slot player_pool[].slot | stringnullable | — | The roster slot this row prices and scores. On a single-game contest: CPT (DraftKings) or MVP (FanDuel) for the multiplied slot, and FLEX for the other slot (UTIL on NBA formats, as the contest names it). On a contest with several multiplied slots: MVP, STAR and PRO (MLB has MVP and STAR) for the multiplied slots, and UTIL for the plain slot. On a classic contest: the player's roster position. Null only for an unresolved player on a classic contest, whose position is unknown. |
↳canonical_player_id player_pool[].canonical_player_id | bigintnullable | — | Our player ID in the league player tables. Null while the player is parked (DraftKings lists him, his identity is not resolved yet) or matched only by name; the player is still served with the operator's own name, team, position, salary and points. On a removed-player seat (is_removed) it is the player our player finder names for the operator's name. On a shared-name seat (is_shared_name) it is always null: two players of the operator's pool carry the name, and no rule picks one. |
↳name player_pool[].name | stringnullable | — | The player's name, from the operator's contest data or the slate's player pool. Null when neither holds it (is_unresolved is then true); never a placeholder such as "Player 123". |
↳team player_pool[].team | stringnullable | — | Team abbreviation. Null for a player without a team (a golfer) and for an unresolved player. |
↳position player_pool[].position | stringnullable | — | The player's real position (QB, RB, WR, TE, K, DST on DraftKings, D on FanDuel ...), the same on his CPT/MVP row and his FLEX row; never a slot such as CPT or MVP. Null only for an unresolved player. |
↳salary player_pool[].salary | integernullable | — | The salary of this slot in dollars, as the operator prices it: the CPT/MVP row carries the multiplied price (1.5x on DraftKings). Null only when the price is unknown (an unresolved player). |
↳fantasy_points player_pool[].fantasy_points | decimalnullable | — | The fantasy points this slot scores: the CPT/MVP row carries the multiplied points (1.5x). Null when nothing measured them: a contest with no lineup file before our stats hold the game (the points appear once they do), or a player the operator's contest data gave no points for and our stats do not hold. Never a 0 placeholder. |
↳ownership player_pool[].ownership | object | — | Contest field ownership of the player (not of the row's slot): his CPT/MVP row and his FLEX row carry the same values. Every share is null when the contest has no stored lineup (no lineup file yet, or a file with standings only): nothing measured it, and it is never shown as 0. |
↳field_pct player_pool[].ownership.field_pct | decimalnullable | — | Share of the field's lineups that hold the player in any slot, in percent. Null when the contest has no stored lineup. |
↳cash_pct player_pool[].ownership.cash_pct | decimalnullable | — | Share of the cashing lineups that hold the player, in percent. Null unless the contest's lineup file stored it (older version-1 files, when a stored lineup cashed); current files do not store it, so it is null on them. |
↳top1_pct player_pool[].ownership.top1_pct | decimalnullable | — | Share of the top-1% lineups that hold the player, in percent. Null unless the contest's lineup file stored it (older version-1 files, when a stored lineup ranked in the top 1%); current files do not store it, so it is null on them. |
↳cpt_field_pct player_pool[].ownership.cpt_field_pct | decimalnullable | — | Share of the field's lineups that hold the player at CPT/MVP, in percent. On a contest with several multiplied slots, the share that hold him in the slot of the row (null on the UTIL row). Null on a classic contest and when the contest has no stored lineup. |
↳flex_field_pct player_pool[].ownership.flex_field_pct | decimalnullable | — | Share of the field's lineups that hold the player at FLEX, in percent. On a contest with several multiplied slots, the share that hold him in a UTIL seat. Null on a classic contest and when the contest has no stored lineup. |
↳is_unresolved player_pool[].is_unresolved | boolean | — | True when the player matches no row of the slate's player pool and the operator's contest data holds no name for him. The values the data does not hold are then null. |
↳export_id player_pool[].export_id | stringnullable | — | The id the operator's lineup upload file uses for the player in this slot: the DraftKings draftable id, which differs between a player's CPT row and his FLEX row; the FanDuel "<fixture list id>-<player id>" id, the same on both rows. Null when unknown. |
↳is_removed player_pool[].is_removed | booleannullable | — | Present, and true, only on a removed-player seat: the operator took the player off the slate after users drafted him (a trade, a cut), and its contest file still lists his seat with the points its own player table holds for him (0 when the table says 0). The row carries the operator's name and position, our player id (canonical_player_id), those fantasy points, and no salary, team or upload id. The key is absent on every other row. |
↳is_shared_name player_pool[].is_shared_name | booleannullable | — | Present, and true, only on a shared-name seat: the operator's own player pool gives the name to two players of one position, and its contest file names a seat by name and position only, so the seat belongs to neither. The row carries the operator's name and position and the points of its player table (the same whichever player is meant), and no player id of any kind (canonical_player_id is null), salary, team or upload id. The key is absent on every other row. |
lineups | list | — | Entrant lineups with rank, user, points, payout, and seat selections. |
↳rank lineups[].rank | integer | — | Final standing rank. |
↳username lineups[].username | string | — | Contest entrant username. |
↳points lineups[].points | decimal | — | Total lineup fantasy points. |
↳payout_cents lineups[].payout_cents | decimalnullable | — | Payout in cents. Null while the contest is live (contest.live). |
↳slots lineups[].slots | list<L> | — | Selected player IDs matching contest slots. 0 is a seat without a player; while the contest is live, a hidden seat (hidden_slots). |
↳hidden_slots lineups[].hidden_slots | list<S>nullable | — | Present only while the contest is live (contest.live), on a lineup with hidden seats. The slots whose player's game has not started (DraftKings shows them as LOCKED). |
GET/api/v1/dfs/marqueeThe marquee contests of an NFL week or of a range of NBA nights, by operator
Parameters
leaguequerystringrequirednfl or nba.
seasonqueryintegeroptionalNFL only. Season start year (e.g. 2026). Without week, the current week of that season, else week 1.
weekqueryintegeroptionalNFL only. Regular-season week, 1-18. Without season, the current season.
fromquerystringoptionalNBA only. First night (US Eastern, YYYY-MM-DD). Alone, 7 nights from it.
toquerystringoptionalNBA only. Last night (US Eastern, YYYY-MM-DD), at most 13 days after from. Alone, the 7 nights up to it.
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/marquee?league=nfl&season=2026&week=3'Responses
200The marquee contests of an NFL week or of a range of NBA nights, by operatorapplication/jsonshow example ▸
400league is not nfl or nba, week is outside 1-18, a date is not YYYY-MM-DD, to is before from, more than 14 nights, or a parameter of the other league
404No such NFL regular-season week
Response Schema(8 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
league | string | — | The league described. |
today | string | — | Today in US Eastern time (YYYY-MM-DD). |
season | integernullable | — | The NFL season described. Null for NBA. |
week | integernullable | — | The NFL week described. Null for NBA. |
from | string | — | The first day described (US Eastern, YYYY-MM-DD). For NFL the start of the week window. |
to | string | — | The last day described (US Eastern, YYYY-MM-DD), included. |
free_rows | integer | — | Standings entries of a marquee contest that are open to everyone (100). |
marquee | list | — | The marquee contests, by date, DraftKings before FanDuel. |
↳league marquee[].league | string | — | The contest's league. |
↳operator marquee[].operator | string | — | The operator. |
↳occasion marquee[].occasion | string | — | sunday_main (an NFL week's main slate), tnf or mnf (an NFL primetime night), night (an NBA night). |
↳date marquee[].date | string | — | The slate's day (US Eastern, YYYY-MM-DD). |
↳slate_id marquee[].slate_id | bigint | — | Internal slate ID. |
↳contest_id marquee[].contest_id | bigint | — | Internal contest ID (references dfs.contests.id). |
↳name marquee[].name | string | — | Contest name. |
↳entries marquee[].entries | bigint | — | Entries that the operator lists for the contest. |
↳entry_fee_cents marquee[].entry_fee_cents | bigint | — | Entry fee in cents. |
↳prize_pool_cents marquee[].prize_pool_cents | bigint | — | Prize pool in cents. |
↳lock marquee[].lock | stringnullable | — | The contest's start, the lock (ISO 8601, UTC). |
↳status marquee[].status | stringnullable | — | The operator's contest state (Upcoming, Live, Completed). |
↳free marquee[].free | boolean | — | The contest is in a free season (NFL from 2026, NBA from 2026-10-20). |
↳free_rows marquee[].free_rows | integer | — | Standings entries open to everyone once results_open (100), 0 when not free. |
↳results_open marquee[].results_open | boolean | — | The lineup file exists and the contest is free, so its first free_rows entries are open now. |
GET/api/v1/dfs/contests/{contest_id}/ownershipActual player ownership of one contest, one row per player and roster slot
Parameters
contest_idpathbigintrequiredInternal DFS contest ID (references dfs.contests.id).
formatquerystringoptionaldefault json'json' (default) or 'csv' (the same rows and columns).
slotquerystringoptionalRoster slot filter: CPT, MVP or FLEX.
positionquerystringoptionalNatural position filter (QB, RB, WR, TE, K, DST).
min_ownershipquerydecimaloptionalSmallest actual_ownership to return, as a ratio from 0 to 1.
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/contests/37021368/ownership'Responses
200Actual player ownership of one contest, one row per player and roster slotapplication/jsonshow example ▸
400An unknown format or slot, a min_ownership outside 0 to 1, or an operator external contest ID in the path
404Contest not found
Response Schema(4 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
contest | object | — | The contest. |
↳contest_id contest.contest_id | bigint | — | Internal contest ID. |
↳external_id contest.external_id | bigint | — | Operator contest ID. |
↳slate_id contest.slate_id | bigint | — | Internal slate ID. |
↳operator contest.operator | string | — | DraftKings or FanDuel. |
↳name contest.name | string | — | Contest name. |
↳game_type contest.game_type | string | — | CLASSIC, SHOWDOWN or SINGLE_GAME. |
ownership | list | — | One row per player and roster slot, the highest actual_ownership first. |
↳contest_id ownership[].contest_id | bigint | — | The contest that the row comes from. Always the contest in the path. |
↳slate_player_id ownership[].slate_player_id | bigint | — | dfs.slate_players id of the seat row. |
↳operator_player_id ownership[].operator_player_id | stringnullable | — | The operator's player ID (DraftKings or FanDuel). |
↳player_id ownership[].player_id | bigintnullable | — | Our player ID. Null when the player is not resolved. |
↳name ownership[].name | stringnullable | — | Player name. |
↳team ownership[].team | stringnullable | — | Team abbreviation. |
↳position ownership[].position | stringnullable | — | Natural position of the player (for example WR), also on a CPT or MVP row. |
↳slot ownership[].slot | stringnullable | — | Roster slot of the row. Null on a classic contest. |
↳salary ownership[].salary | integernullable | — | Salary of the slot. |
↳lineups ownership[].lineups | integer | — | Lineups that hold the player in this slot. |
↳lineups_used ownership[].lineups_used | integer | — | Lineups that the ownership of this contest was computed from. |
↳entry_count ownership[].entry_count | integernullable | — | Entries that the operator lists for the contest. |
↳actual_ownership ownership[].actual_ownership | decimal | — | lineups / lineups_used, a ratio from 0 to 1 with 4 decimals. |
↳total_ownership ownership[].total_ownership | decimal | — | Ownership of the player in any slot. Equals actual_ownership on a classic contest. |
reason | stringnullable | — | Why the answer holds no rows. Null when it holds rows. |
_metadata | objectnullable | — | The preview notice, sent only when the answer is cut to 5 rows: a caller without a paid plan on a contest that is not a free flagship. Absent otherwise. |
↳required_tier _metadata.required_tier | string | — | The plan that opens the whole table (pro). |
↳message _metadata.message | string | — | What the plan opens, with the pricing link. |
↳total_actual_records _metadata.total_actual_records | bigint | — | The rows of the answer before the cut. |
GET/api/v1/dfs/contests/{contest_id}/projectionsContest-calibrated player projections, payout profile, and ownership
Parameters
contest_idpathbigintrequiredInternal DFS contest ID (references dfs.contests.id).
positionquerystringoptionalRoster position filter (e.g. QB, RB, WR, TE, DST, K).
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 picks one field). Each tag adds one key (one CSV column) named by its table. NFL contests only: an NBA contest answers 400 with this parameter.
projection_idquerybigintoptionalNBA contests only: a version of our NBA engine (main.projections id). Default: its active version. An NFL contest 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/contests/37021368/projections'Responses
200Contest-calibrated player projections, payout profile, and ownershipapplication/jsonshow example ▸
400Invalid contest ID format or an unknown format
404Contest not found, or its slate's 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(10 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. |
contest | object | — | Contest metadata summary. |
↳contest_id contest.contest_id | bigint | — | Internal contest ID. |
↳external_id contest.external_id | bigint | — | Operator external contest ID. |
↳slate_id contest.slate_id | bigint | — | Underlying slate ID. |
↳name contest.name | string | — | Contest name. |
↳operator contest.operator | string | — | Operator name. |
↳game_type contest.game_type | string | — | Game format from the slate setting's game type (the dfs.slates `game_type`, upper case): CLASSIC, SHOWDOWN (DraftKings Showdown Captain Mode), SINGLE_GAME (FanDuel single game, MVP) or TIERS. |
↳entry_fee_dollars contest.entry_fee_dollars | decimal | — | Entry fee in dollars. |
↳total_entries contest.total_entries | bigint | — | Total entries allowed or enrolled. |
↳max_entries_per_user contest.max_entries_per_user | bigint | — | Maximum entries allowed per user. |
↳prize_pool_dollars contest.prize_pool_dollars | decimal | — | Total prize pool in dollars. |
↳top_1_payout_dollars contest.top_1_payout_dollars | decimalnullable | — | Top 1 first place payout in dollars. |
↳cash_places contest.cash_places | bigintnullable | — | Total paid cash places. |
↳state contest.state | stringnullable | — | Slate or contest state. |
↳contest_state contest.contest_state | stringnullable | — | Authoritative contest state (Upcoming, Live, Completed). |
↳archetype contest.archetype | string | — | The contest archetype of the learned ownership model: the stored `contest_archetype` of the contest's STAT_API_LATEST rows, else the same rule. cash (contest type 1 or a cash word such as Double Up, 50/50, H2H in the name), then gpp_single_entry (1 entry per user), gpp_small_field (fee $100 or more, or at most 500 entries), gpp_mme (20 or more entries per user), else baseline. |
contest_profile | objectnullable | — | Contest calibration profile and crowd mixture. Null for a contest that is not on an NFL slate (the NFL crowd model is not computed for another league; NBA ownership comes per contest segment, in each row's `ownership`). |
↳payout_convexity_omega contest_profile.payout_convexity_omega | decimal | — | Payout convexity parameter omega. |
↳choice_temperature_tau contest_profile.choice_temperature_tau | decimal | — | Choice temperature parameter tau. |
↳ceiling_weight_alpha contest_profile.ceiling_weight_alpha | decimal | — | Ceiling weight parameter alpha. |
↳crowd_mixture contest_profile.crowd_mixture | object | — | Crowd mixture breakdown. |
↳whale_mme_pct contest_profile.crowd_mixture.whale_mme_pct | decimal | — | MME whale crowd proportion (0.0 to 1.0). |
↳consensus_sharp_pct contest_profile.crowd_mixture.consensus_sharp_pct | decimal | — | Consensus sharp crowd proportion (0.0 to 1.0). |
↳casual_fish_pct contest_profile.crowd_mixture.casual_fish_pct | decimal | — | Casual fish crowd proportion (0.0 to 1.0). |
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. |
player_stats | list | — | The contest-calibrated player projections as flat rows, one per slate player. Sent with format=flat. format=csv returns these rows as CSV: one column per field, in this order, then one column per `enrich` tag. |
↳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. |
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 | — | Aggregate ownership by position. |
↳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. |
teams | listnullable | — | Team projections and game pace for every team on the contest's slate. Sent with the default format and with format=flat. |
↳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 contest-calibrated player projections as nested rows (the slate projections rows with contest ownership). Sent with the default format. |
↳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 contest, and which stat-api engine made its rows: the `_metadata` of the contest's slate, and for a contest served by STAT_API_LATEST where its contest ownership comes from. Sent last, with the default format and with format=flat. This endpoint takes no `source`: it serves the default, STAT_API_LATEST, and STAT_API on a slate that STAT_API_LATEST has no projections for. |
↳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). |
↳contest_ownership _metadata.contest_ownership | stringnullable | — | Where the contest ownership comes from, sent only when STAT_API_LATEST serves the contest (absent otherwise). `persisted`: the contest ownership rows the engine wrote for this contest. `computed`: calibrated from the slate ownership for this request, and not saved. |
GET/api/v1/dfs/contests/{contest_id}/standingsContest standings with each entrant's entry count
Parameters
contest_idpathbigintrequiredInternal database contest ID or operator external_id.
limitqueryintegeroptionaldefault 100Rows to return. At most 10 without DFS access; 1000 with it.
formatquerystringoptionaldefault jsonOutput format (json or csv). CSV needs DFS access.
from_rowqueryintegeroptionaldefault 1The first row to return (1-based `row`), to page through the whole contest. Without DFS access the rows stop at row 5 (row 100 on a marquee contest), so a page past it is empty.
userquerystringoptionalStart the page at this username's best row (overrides from_row). 404 when the contest has no such user.
rankqueryintegeroptionalStart the page at the first row with this rank or a worse one (overrides from_row). Tied entries share a rank.
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/contests/37021368/standings'Responses
200Contest standings with each entrant's entry countapplication/jsonshow example ▸
400Invalid contest ID; limit or format
401No key, and not a free flagship (key_required): a free account opens every contest. The body names the contest (contest: contest_id, name, operator, date, total_entries, entry_fee_cents, prize_pool_cents; the public list's fields) and holds no standings, users or lineups
402CSV requested without DFS access
404Contest not found, or the loader does not collect lineups for this contest (lineups_not_collected). A contest without a lineup file answers 200 with has_lineups false, except for a caller with a paid plan on a DraftKings contest that has started (202, 404, 410 or 503, see the description)
409The lineup file found belongs to a different operator contest
410DraftKings no longer serves the lineup file of this contest (lineups_file_gone)
503The loader gave up on the lineup file and support is informed (lineups_not_loaded, Retry-After 3600), or the request to load it could not be queued (lineups_request_failed, Retry-After 60)
Response Schema(7 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
contest | object | — | The contest. |
↳contest_id contest.contest_id | bigint | — | Internal contest ID. |
↳external_id contest.external_id | bigint | — | Operator contest ID. |
↳name contest.name | string | — | Contest name. |
↳operator contest.operator | stringnullable | — | Operator name (DraftKings or FanDuel). |
↳sport contest.sport | string | — | Sport code. |
↳game_type contest.game_type | stringnullable | — | Game type (classic or showdown). Null when the contest has no lineup file. |
↳date contest.date | stringnullable | — | Contest date (YYYY-MM-DD). |
↳slate_id contest.slate_id | bigintnullable | — | Internal slate ID. |
↳slate_name contest.slate_name | stringnullable | — | Slate name. |
↳entry_fee_cents contest.entry_fee_cents | bigint | — | Entry fee in cents. |
↳prize_pool_cents contest.prize_pool_cents | bigint | — | Prize pool in cents. |
↳total_entries contest.total_entries | bigint | — | Entries in the contest. |
↳stored_lineups contest.stored_lineups | bigint | — | Lineups stored in the lineup file (below total_entries in a sampled contest). |
↳paid_places contest.paid_places | bigintnullable | — | Paid places. Null when the contest has no lineup file. |
↳is_sampled contest.is_sampled | boolean | — | True when the lineup file holds a sample of the field. |
↳slots contest.slots | list<S> | — | Roster slots in lineup order. |
↳has_lineups contest.has_lineups | boolean | — | False when the contest has no lineup file (the standings are empty). |
↳live contest.live | objectnullable | — | Present only while the lineups come from a live file: a DraftKings contest whose games still run, read at each game start, every minute for the next 30 minutes, then every 15 minutes until its final file is loaded at Completed. The seats of players whose games have not started are hidden, and no player points, payouts or ownership are served. Absent for a final file. Payouts, the field block and stacks are null. |
↳read_at contest.live.read_at | string | — | When the live file was read from DraftKings (UTC, RFC 3339). Ranks and points are as of this time. |
↳kickoff_at contest.live.kickoff_at | string | — | The latest game start of the contest's slate that the live file covers (UTC, RFC 3339). |
field | objectnullable | — | What the field did, the same for every caller (the chalk is common knowledge). Null when the contest has no lineup file, or no stored lineup measured the field's ownership, and while the contest is live (contest.live). |
↳roster_slots field.roster_slots | integer | — | Roster slots per lineup. |
↳pool_size field.pool_size | integer | — | Distinct players in the pool (a showdown player counts once). |
↳players_owned field.players_owned | integer | — | Distinct pool players with a field share above 0 in any slot: the players the field actually used. |
↳avg_points_per_slot field.avg_points_per_slot | decimal | — | C: the field's average points per roster slot = sum over the pool of (field_pct / 100 x fantasy_points), divided by roster_slots. A showdown player adds his flex share x base points and his captain share x captain points. |
↳field_avg_lineup field.field_avg_lineup | decimal | — | C x roster_slots: the field's average lineup points implied by ownership. |
↳chalk field.chalk | list | — | The 3 most-owned pool players, field_pct descending (a tie goes to the lower pool_id). |
↳pool_id field.chalk[].pool_id | bigint | — | The player's ID in this contest's player pool. |
↳name field.chalk[].name | string | — | Player name. |
↳position field.chalk[].position | stringnullable | — | Position. Null when the pool row has no real position. |
↳team field.chalk[].team | string | — | Team abbreviation. |
↳salary field.chalk[].salary | bigintnullable | — | Salary. Null when the operator price is unknown. |
↳fantasy_points field.chalk[].fantasy_points | decimalnullable | — | Fantasy points. Null when nothing measured them. |
↳field_pct field.chalk[].field_pct | decimal | — | Share of the field's lineups with this player in percent. |
standings | list | — | Entries in finishing order. |
↳row standings[].row | integer | — | 1-based position in the standings (unique). |
↳rank standings[].rank | integer | — | Operator finishing rank (ties share a rank). |
↳username standings[].username | string | — | Entrant username. |
↳points standings[].points | decimal | — | Lineup fantasy points. |
↳payout_cents standings[].payout_cents | bigintnullable | — | Payout in cents. Null while the contest is live (contest.live). |
↳user_entries standings[].user_entries | bigintnullable | — | The user's entries in the contest. Null for user_unknown. |
↳user_best_rank standings[].user_best_rank | integernullable | — | The user's best rank in the contest. Null for user_unknown. |
↳open standings[].open | boolean | — | True when this user opens in the user lineups route for this caller. |
↳stack standings[].stack | stringnullable | — | The combo of this row's own lineup: QB, then the QB's teammates as WR, TE, RB (a count in front when more than 1), then BB for the bring-backs, joined by /, as QB/WR/RB/BB or QB/2WR or QB/BB. Null when the lineup has no stack and no bring-back, when a seat's position, team or game is unknown, when the row is not open for this caller, in hide mode, and on every contest that is not a classic NFL contest. |
↳stack_team standings[].stack_team | stringnullable | — | The team (as in the pool, such as DAL) of the QB of this row's own lineup, the team the stack belongs to. Set exactly when stack is set. Null otherwise. |
↳bring_back_team standings[].bring_back_team | stringnullable | — | The team (such as PHI) of the bring-back seats of this row's own lineup: the other team of the QB's game. Set only when stack has a BB part. Null otherwise. |
from_row | integer | — | The row number (1-based) of the first standings row returned. |
returned | integer | — | Rows in this response. |
access | object | — | What this caller may read. |
↳plan access.plan | string | — | "pro" with DFS access; "flagship" on a marquee contest for anyone else (GET /api/v1/dfs/marquee): the first 100 standings rows and every value of the users with an entry in them, no CSV; else "free" (the first 5 standings rows and hide mode). |
↳full access.full | boolean | — | True when every row and value is sent: DFS access only (a marquee contest stops at row 100). |
↳open_rows access.open_rows | integernullable | — | Standings rows whose users open: 5 on the Free plan, 100 on a marquee contest. Null with DFS access. |
↳lineups_per_user access.lineups_per_user | integernullable | — | Always null: no plan caps the lineups of an open user. |
↳exposure_per_user access.exposure_per_user | integernullable | — | Always null: no plan caps the exposure rows of an open user. |
↳locked access.locked | boolean | — | True when the plan withholds this response's exposure, lineup and seat rows. |
↳lineups_total access.lineups_total | integernullable | — | The user's lineups in the contest. Null on the standings route. |
↳exposure_total access.exposure_total | integernullable | — | The user's exposure rows. Null on the standings route and when locked. |
↳hidden_rows access.hidden_rows | integer | — | Exposure rows sent in hide mode (0 with DFS access and on the standings route). |
_metadata | objectnullable | — | Sent only on a capped answer (fewer rows than exist for this caller): the plan that opens the rest. A full answer (DFS access, or a marquee contest of at most 100 entries) has no such key. A marquee contest of more than 100 entries carries it. |
↳required_tier _metadata.required_tier | string | — | pro. |
↳message _metadata.message | string | — | What the plan opens. |
↳total_actual_records _metadata.total_actual_records | bigint | — | The contest's standings rows. |
GET/api/v1/dfs/contests/{contest_id}/users/{username}/lineupsOne entrant's lineups in a contest with exposure and edge against the field
Parameters
contest_idpathbigintrequiredInternal database contest ID or operator external_id.
usernamepathstringrequiredEntrant username exactly as in the standings.
formatquerystringoptionaldefault jsonOutput format (json or csv). CSV needs DFS access.
tablequerystringoptionaldefault lineupsThe table a CSV holds (lineups or exposure).
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/contests/{contest_id}/users/{username}/lineups?format=json&table=lineups'Responses
200One entrant's lineups in a contest with exposure and edge against the fieldapplication/jsonshow example ▸
400Invalid contest ID; format or table
401No key, and not a free flagship (key_required): a free account opens every contest. The body names the contest (contest: contest_id, name, operator, date, total_entries, entry_fee_cents, prize_pool_cents; the public list's fields) and holds no standings, users or lineups
402CSV requested without DFS access
404Contest not found; no lineup data; the user has no entry; or the loader does not collect lineups for this contest (lineups_not_collected: a caller with a paid plan on a DraftKings contest that has started, see the description)
409The lineup file found belongs to a different operator contest
410DraftKings no longer serves the lineup file of this contest (lineups_file_gone)
503The loader gave up on the lineup file and support is informed (lineups_not_loaded, Retry-After 3600), or the request to load it could not be queued (lineups_request_failed, Retry-After 60)
Response Schema(9 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
contest | object | — | The contest. |
↳contest_id contest.contest_id | bigint | — | Internal contest ID. |
↳external_id contest.external_id | bigint | — | Operator contest ID. |
↳name contest.name | string | — | Contest name. |
↳operator contest.operator | stringnullable | — | Operator name (DraftKings or FanDuel). |
↳sport contest.sport | string | — | Sport code. |
↳game_type contest.game_type | stringnullable | — | Game type (classic or showdown). Null when the contest has no lineup file. |
↳date contest.date | stringnullable | — | Contest date (YYYY-MM-DD). |
↳slate_id contest.slate_id | bigintnullable | — | Internal slate ID. |
↳slate_name contest.slate_name | stringnullable | — | Slate name. |
↳entry_fee_cents contest.entry_fee_cents | bigint | — | Entry fee in cents. |
↳prize_pool_cents contest.prize_pool_cents | bigint | — | Prize pool in cents. |
↳total_entries contest.total_entries | bigint | — | Entries in the contest. |
↳stored_lineups contest.stored_lineups | bigint | — | Lineups stored in the lineup file (below total_entries in a sampled contest). |
↳paid_places contest.paid_places | bigintnullable | — | Paid places. Null when the contest has no lineup file. |
↳is_sampled contest.is_sampled | boolean | — | True when the lineup file holds a sample of the field. |
↳slots contest.slots | list<S> | — | Roster slots in lineup order. |
↳has_lineups contest.has_lineups | boolean | — | False when the contest has no lineup file (the standings are empty). |
↳live contest.live | objectnullable | — | Present only while the lineups come from a live file: a DraftKings contest whose games still run, read at each game start, every minute for the next 30 minutes, then every 15 minutes until its final file is loaded at Completed. The seats of players whose games have not started are hidden, and no player points, payouts or ownership are served. Absent for a final file. Payouts, the field block and stacks are null. |
↳read_at contest.live.read_at | string | — | When the live file was read from DraftKings (UTC, RFC 3339). Ranks and points are as of this time. |
↳kickoff_at contest.live.kickoff_at | string | — | The latest game start of the contest's slate that the live file covers (UTC, RFC 3339). |
field | objectnullable | — | What the field did, the same for every caller (the chalk is common knowledge). Null when the contest has no lineup file, or no stored lineup measured the field's ownership, and while the contest is live (contest.live). |
↳roster_slots field.roster_slots | integer | — | Roster slots per lineup. |
↳pool_size field.pool_size | integer | — | Distinct players in the pool (a showdown player counts once). |
↳players_owned field.players_owned | integer | — | Distinct pool players with a field share above 0 in any slot: the players the field actually used. |
↳avg_points_per_slot field.avg_points_per_slot | decimal | — | C: the field's average points per roster slot = sum over the pool of (field_pct / 100 x fantasy_points), divided by roster_slots. A showdown player adds his flex share x base points and his captain share x captain points. |
↳field_avg_lineup field.field_avg_lineup | decimal | — | C x roster_slots: the field's average lineup points implied by ownership. |
↳chalk field.chalk | list | — | The 3 most-owned pool players, field_pct descending (a tie goes to the lower pool_id). |
↳pool_id field.chalk[].pool_id | bigint | — | The player's ID in this contest's player pool. |
↳name field.chalk[].name | string | — | Player name. |
↳position field.chalk[].position | stringnullable | — | Position. Null when the pool row has no real position. |
↳team field.chalk[].team | string | — | Team abbreviation. |
↳salary field.chalk[].salary | bigintnullable | — | Salary. Null when the operator price is unknown. |
↳fantasy_points field.chalk[].fantasy_points | decimalnullable | — | Fantasy points. Null when nothing measured them. |
↳field_pct field.chalk[].field_pct | decimal | — | Share of the field's lineups with this player in percent. |
user | object | — | The entrant. |
↳username user.username | string | — | Entrant username. |
↳entries user.entries | bigint | — | The user's entries in the contest. |
↳best_rank user.best_rank | integer | — | The user's best rank. |
↳best_row user.best_row | integer | — | Standings row of the user's best entry. |
↳total_payout_cents user.total_payout_cents | bigintnullable | — | Payout of all the user's entries in cents. Null when locked, and while the contest is live (contest.live). |
↳cashed user.cashed | bigintnullable | — | The user's entries that won money. Null when locked, and while the contest is live (contest.live). |
↳in_top_100 user.in_top_100 | bigintnullable | — | The user's entries in the first 100 standings rows. Null when locked. |
↳players_used user.players_used | integernullable | — | Distinct players across all the user's lineups. Null when locked. |
↳avg_points user.avg_points | decimalnullable | — | Mean lineup points over all the user's lineups. Null when locked. |
↳edge_total user.edge_total | decimalnullable | — | Sum of edge over every pool player (a player the user never played counts at exposure 0, so a fade counts): about avg_points - field.field_avg_lineup. Null when locked or when the field block is null. |
↳chalk_exposure user.chalk_exposure | list | — | The user's exposure to each field.chalk player, in the same order, including 0% rows (a full fade). Empty when locked or when the field block is null. |
↳pool_id user.chalk_exposure[].pool_id | bigint | — | The chalk player's ID in this contest's player pool. |
↳lineups user.chalk_exposure[].lineups | bigint | — | The user's lineups with this player. |
↳exposure_pct user.chalk_exposure[].exposure_pct | decimal | — | Share of the user's lineups with this player in percent. |
↳field_pct user.chalk_exposure[].field_pct | decimal | — | Share of the field's lineups with this player in percent. |
↳leverage user.chalk_exposure[].leverage | decimal | — | exposure_pct minus field_pct in percentage points (a full fade is -field_pct). |
↳edge user.chalk_exposure[].edge | decimalnullable | — | Points per lineup gained (+) or lost (-) against the field. Null when the player's points are unknown. |
exposure | list | — | One row per player the user played: chalk first (field order), then most-used. Empty when locked. Without DFS access every non-chalk row is hidden (a label, no ID or value). |
↳label exposure[].label | stringnullable | — | P1..Pn on a hidden row, numbered in this response's exposure order (it means nothing outside the response). Null on a clear row. |
↳chalk exposure[].chalk | boolean | — | True on a chalk player's row shown clear without DFS access. False with DFS access. |
↳player_id exposure[].player_id | bigintnullable | — | stat-api player ID. Null on a hidden row. |
↳pool_id exposure[].pool_id | bigintnullable | — | The player's ID in this contest's player pool (the IDs in seats). Null on a hidden row. |
↳name exposure[].name | stringnullable | — | Player name. Null on a hidden row. |
↳position exposure[].position | stringnullable | — | Position (clear on a hidden row too). Null when the pool row has no real position. |
↳team exposure[].team | stringnullable | — | Team abbreviation. Null on a hidden row. |
↳salary exposure[].salary | bigintnullable | — | Salary. Null when the operator price is unknown, and on a hidden row. |
↳fantasy_points exposure[].fantasy_points | decimalnullable | — | Fantasy points. Null when nothing measured them, and on a hidden row. |
↳lineups exposure[].lineups | bigint | — | The user's lineups with this player in any slot. |
↳captain_lineups exposure[].captain_lineups | bigintnullable | — | The user's lineups with this player in the captain or MVP slot. Null without such a slot. |
↳exposure_pct exposure[].exposure_pct | decimal | — | Share of the user's lineups with this player in percent. |
↳field_pct exposure[].field_pct | decimalnullable | — | Share of the field's lineups with this player in percent. Null when nothing measured it, and on a hidden row. |
↳leverage exposure[].leverage | decimalnullable | — | exposure_pct minus field_pct in percentage points. Null when field_pct is null. |
↳edge exposure[].edge | decimalnullable | — | (exposure_pct - field_pct) / 100 x (fantasy_points - C): points per lineup gained (+) or lost (-) against the field. Null when field_pct or fantasy_points is null, and on a hidden row. |
↳edge_band exposure[].edge_band | stringnullable | — | A hidden row's edge as a band, sent only when at least 5 non-chalk pool players at the same position would show the same band at this row's exposure. Else null (and listed in hidden). Null on a clear row. |
↳hidden exposure[].hidden | list<S> | — | The fields this row withholds. Empty on a clear row. |
lineups | list | — | Every lineup of the user in finishing order. Empty when locked. |
↳row lineups[].row | integer | — | Standings row of this lineup. |
↳rank lineups[].rank | integer | — | Finishing rank. |
↳points lineups[].points | decimal | — | Lineup fantasy points. |
↳payout_cents lineups[].payout_cents | bigintnullable | — | Payout in cents. Null while the contest is live (contest.live). |
↳salary_used lineups[].salary_used | bigintnullable | — | Sum of the seats' salaries. Null without DFS access, and when a seat's price is unknown. |
↳total_ownership lineups[].total_ownership | decimalnullable | — | Sum of the seats' field_pct in percent (a captain seat counts its captain share), from the unrounded shares, rounded to 1 decimal. Null in hide mode (Free, off the flagships) and when nothing measured ownership. |
↳stack lineups[].stack | stringnullable | — | The combo of this lineup: QB, then the QB's teammates as WR, TE, RB (a count in front when more than 1), then BB for the bring-backs, joined by /, as QB/WR/RB/BB. The same value as `stack` on the standings row with this `row`, null in the same cases: no stack and no bring-back, a seat whose position, team or game is unknown, hide mode, and every contest that is not a classic NFL contest. The lineups CSV ends with it. |
↳stack_team lineups[].stack_team | stringnullable | — | The team (such as DAL) of the QB of this lineup, the team the stack belongs to. Set exactly when stack is set. Null otherwise. |
↳bring_back_team lineups[].bring_back_team | stringnullable | — | The team (such as PHI) of the bring-back seats of this lineup: the other team of the QB's game. Set only when stack has a BB part. Null otherwise. |
seats | list | — | One row per seat of each lineup (lineup_row joins lineups[].row). Empty when locked. Without DFS access a non-chalk seat carries its exposure row's label, its slot and position, and no ID or value. |
↳lineup_row seats[].lineup_row | integer | — | Standings row of the lineup this seat belongs to (lineups[].row). |
↳slot_index seats[].slot_index | integer | — | 0-based position of the seat in the lineup (the order of contest.slots). |
↳slot seats[].slot | string | — | Roster slot. |
↳label seats[].label | stringnullable | — | The P<n> of the seat's hidden exposure row. Null on a clear seat. |
↳chalk seats[].chalk | boolean | — | True on a chalk player's seat shown clear without DFS access. False with DFS access. |
↳pool_id seats[].pool_id | bigintnullable | — | Player pool ID. Null for an empty seat and a hidden seat. |
↳player_id seats[].player_id | bigintnullable | — | stat-api player ID. Null on a hidden seat. |
↳name seats[].name | stringnullable | — | Player name. Null on a hidden seat. |
↳position seats[].position | stringnullable | — | Position (clear on a hidden seat too). |
↳team seats[].team | stringnullable | — | Team abbreviation. Null on a hidden seat. |
↳salary seats[].salary | bigintnullable | — | The slot's price. Null on a hidden seat. |
↳fantasy_points seats[].fantasy_points | decimalnullable | — | The slot's points. Null on a hidden seat. |
↳field_pct seats[].field_pct | decimalnullable | — | Field ownership for this slot in percent (captain ownership for a captain slot). Null on a hidden seat. |
↳stack_role seats[].stack_role | stringnullable | — | The seat's part in its lineup's stack: stack (the QB, and every teammate of his team except the defense, when he has at least one) or bring_back (a player of the opposing team from the QB's game, with or without a stack). Null on any other seat, on a defense, when the lineup's stack cannot be read in full, in hide mode, and on every contest that is not a classic NFL contest. |
↳hidden seats[].hidden | list<S> | — | The fields this seat withholds. Empty on a clear seat. |
access | object | — | What this caller may read. |
↳plan access.plan | string | — | "pro" with DFS access; "flagship" on a marquee contest for anyone else (GET /api/v1/dfs/marquee): the first 100 standings rows and every value of the users with an entry in them, no CSV; else "free" (the first 5 standings rows and hide mode). |
↳full access.full | boolean | — | True when every row and value is sent: DFS access only (a marquee contest stops at row 100). |
↳open_rows access.open_rows | integernullable | — | Standings rows whose users open: 5 on the Free plan, 100 on a marquee contest. Null with DFS access. |
↳lineups_per_user access.lineups_per_user | integernullable | — | Always null: no plan caps the lineups of an open user. |
↳exposure_per_user access.exposure_per_user | integernullable | — | Always null: no plan caps the exposure rows of an open user. |
↳locked access.locked | boolean | — | True when the plan withholds this response's exposure, lineup and seat rows. |
↳lineups_total access.lineups_total | integernullable | — | The user's lineups in the contest. Null on the standings route. |
↳exposure_total access.exposure_total | integernullable | — | The user's exposure rows. Null on the standings route and when locked. |
↳hidden_rows access.hidden_rows | integer | — | Exposure rows sent in hide mode (0 with DFS access and on the standings route). |
analysis | objectnullable | — | How this user built the lineups, worked out once on the server from the user's lineups and the pool (the page works out none of it). Null in hide mode (Free, off the flagships), when the user is locked, and when the user has no lineup. |
↳lineups analysis.lineups | integer | — | The user's lineups this block counts. |
↳stacks analysis.stacks | objectnullable | — | The stacks, by the same QB-stack rule as `stack`. Null on a contest that is not a classic NFL contest. |
↳qb_plus_1 analysis.stacks.qb_plus_1 | integer | — | Lineups whose QB has exactly 1 teammate (the defense is no teammate). |
↳qb_plus_2 analysis.stacks.qb_plus_2 | integer | — | Lineups whose QB has exactly 2 teammates. |
↳qb_plus_3_or_more analysis.stacks.qb_plus_3_or_more | integer | — | Lineups whose QB has 3 or more teammates. |
↳without_stack analysis.stacks.without_stack | integer | — | Lineups with no QB stack: no teammate of the QB, or a lineup the stack rule cannot read in full (an empty seat, an unknown team or game). The two cannot be told apart. |
↳with_bring_back analysis.stacks.with_bring_back | integer | — | Lineups with a bring-back, a player of the other team of the QB's game, with or without a stack. |
↳distinct_qbs analysis.stacks.distinct_qbs | integer | — | The different QBs over the lineups. |
↳stack_teams analysis.stacks.stack_teams | list | — | QB stacks by the QB's team, most lineups first, then by team. |
↳team analysis.stacks.stack_teams[].team | string | — | The team code. |
↳lineups analysis.stacks.stack_teams[].lineups | integer | — | QB stacks of that team. |
↳bring_back_teams analysis.stacks.bring_back_teams | list | — | Lineups with a bring-back by the bring-back team, most lineups first, then by team. |
↳team analysis.stacks.bring_back_teams[].team | string | — | The team code. |
↳lineups analysis.stacks.bring_back_teams[].lineups | integer | — | Lineups with a bring-back from that team. |
↳dispersion analysis.dispersion | object | — | How far apart the lineups are. The pair numbers are null for a user with 1 lineup and for a user with more than 500 lineups. |
↳most_used_lineups analysis.dispersion.most_used_lineups | integer | — | The most lineups that hold one player. |
↳most_used_pct analysis.dispersion.most_used_pct | decimal | — | That count as a percent of the user's lineups, rounded to 1 decimal. |
↳shared_avg analysis.dispersion.shared_avg | decimalnullable | — | Players two lineups share, averaged over every pair of the user's lineups, rounded to 2 decimals. |
↳shared_max analysis.dispersion.shared_max | integernullable | — | The most players two lineups share. |
↳shared_min analysis.dispersion.shared_min | integernullable | — | The fewest players two lineups share. |
↳closest_twin_avg analysis.dispersion.closest_twin_avg | decimalnullable | — | How many players a lineup differs by from the lineup most like it, averaged over the lineups, rounded to 2 decimals. |
↳closest_twin_min analysis.dispersion.closest_twin_min | integernullable | — | The least number of players any lineup differs by from the lineup most like it. |
↳ownership analysis.ownership | objectnullable | — | The sum of the seats' field ownership per lineup (`lineups[].total_ownership`), in percent, rounded to 1 decimal. Null when no lineup has it. |
↳min analysis.ownership.min | decimal | — | The lowest. |
↳avg analysis.ownership.avg | decimal | — | The average. |
↳max analysis.ownership.max | decimal | — | The highest. |
↳lineups analysis.ownership.lineups | integer | — | The lineups that have the value. |
↳salary analysis.salary | objectnullable | — | The salary used per lineup (`lineups[].salary_used`). Null when no lineup has it. |
↳min analysis.salary.min | decimal | — | The lowest. |
↳avg analysis.salary.avg | decimal | — | The average, rounded to a whole number. |
↳max analysis.salary.max | decimal | — | The highest. |
↳lineups analysis.salary.lineups | integer | — | The lineups that have the value. |
_metadata | objectnullable | — | Sent only on a capped answer (fewer rows than exist for this caller): the plan that opens the rest. A full answer (DFS access, or a marquee contest of at most 100 entries) has no such key. A marquee contest of more than 100 entries carries it. |
↳required_tier _metadata.required_tier | string | — | pro. |
↳message _metadata.message | string | — | What the plan opens. |
↳total_actual_records _metadata.total_actual_records | bigint | — | The user's lineups in the contest. |
contest_payout_shapes
dfs.contest_payout_shapesOne row per contest with a ladder: paid places, cash vs ticket totals, top prize, min-cash, and the ratios contest selection needs. Rake is not here — it needs entries at lock, from contest_snapshots.
GET/api/v1/dfs/contest_payout_shapesList contest_payout_shapes for DFS
Requires one of:
contest_id — requests satisfying none of these return 400.Parameters
contest_idquerybigintoptionalThe shape of one contest.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; 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/contest_payout_shapes?contest_id=37021368'Responses
200contest_payout_shapes rows matching the declared filter set, wrapped in { contest_payout_shapes, 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(11 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
contest_id | bigint | FK to the contest. Also the row id. e.g. 14086 | |
cash_line | decimal | — | paid_places / max_entries. e.g. 0.0085 |
cash_total | integer | — | Total cash prizes in cents (e.g. 10000000 = $100,000.00). e.g. 0 |
min_cash | integer | — | Amount awarded on the last paying tier in cents (e.g. 1000 = $10.00). e.g. 2500 |
min_cash_multiple | decimal | — | min_cash / entry_fee. 2.0 on a double-up. e.g. 2.0000 |
paid_places | integer | — | max(max_position) — the number of paying positions. e.g. 1 |
ticket_total | integer | — | Total ticket face value in cents. e.g. 0 |
tier_count | integer | — | Number of tiers in the ladder. e.g. 1 |
top_prize | integer | — | First place prize in cents (e.g. 2000000 = $20,000.00). e.g. 2500 |
top_prize_share | decimal | — | top_prize / (cash_total + ticket_total). e.g. 1.0000 |
GET/api/v1/dfs/contest_payout_shapes/{id}Get a single contest_payout_shape by id
Parameters
idpathbigintrequiredPrimary key (id) of the contest_payout_shape 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/contest_payout_shapes/37021368'Responses
200Single contest_payout_shape row.application/jsonshow example ▸
404Row not found.
Response Schema(11 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
contest_id | bigint | FK to the contest. Also the row id. e.g. 14086 | |
cash_line | decimal | — | paid_places / max_entries. e.g. 0.0085 |
cash_total | integer | — | Total cash prizes in cents (e.g. 10000000 = $100,000.00). e.g. 0 |
min_cash | integer | — | Amount awarded on the last paying tier in cents (e.g. 1000 = $10.00). e.g. 2500 |
min_cash_multiple | decimal | — | min_cash / entry_fee. 2.0 on a double-up. e.g. 2.0000 |
paid_places | integer | — | max(max_position) — the number of paying positions. e.g. 1 |
ticket_total | integer | — | Total ticket face value in cents. e.g. 0 |
tier_count | integer | — | Number of tiers in the ladder. e.g. 1 |
top_prize | integer | — | First place prize in cents (e.g. 2000000 = $20,000.00). e.g. 2500 |
top_prize_share | decimal | — | top_prize / (cash_total + ticket_total). e.g. 1.0000 |