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, and scoring rules per operator / league / game-type combination. A small reference table that many slates point at.
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(10 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. |
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_EMLATE_SWAPSHOW_DOWNFULL_ROSTERSHOW_DOWN_CAPTAIN_MODENON_LATE_SWAPSTARTING_5SINGLE_GAME_BOOSTSINGLE_GAME_V3WEEKENDSHOW_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. 0 |
name | string | — | Ruleset name (e.g. "Classic", "Showdown Captain Mode", "Single Game"). e.g. Single Game 1.0 |
settings | jsonb | — | Full ruleset as JSON: salary cap, roster slots, and the per-stat scoring rules (e.g. DK NBA: 1.25/rebound, 1.5/assist, double-double bonuses, CPT 1.5x). With this plus per-game box scores you can recompute any lineup's fantasy points exactly. e.g. {"containsDuplicatePlayers":false,"lateSwap":false,"maxPlay… |
↳scoring settings.scoring | objectnullable | — | Per-stat fantasy point scoring settings by position group. |
↳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. |
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(10 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. |
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_EMLATE_SWAPSHOW_DOWNFULL_ROSTERSHOW_DOWN_CAPTAIN_MODENON_LATE_SWAPSTARTING_5SINGLE_GAME_BOOSTSINGLE_GAME_V3WEEKENDSHOW_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. 0 |
name | string | — | Ruleset name (e.g. "Classic", "Showdown Captain Mode", "Single Game"). e.g. Single Game 1.0 |
settings | jsonb | — | Full ruleset as JSON: salary cap, roster slots, and the per-stat scoring rules (e.g. DK NBA: 1.25/rebound, 1.5/assist, double-double bonuses, CPT 1.5x). With this plus per-game box scores you can recompute any lineup's fantasy points exactly. e.g. {"containsDuplicatePlayers":false,"lateSwap":false,"maxPlay… |
↳scoring settings.scoring | objectnullable | — | Per-stat fantasy point scoring settings by position group. |
↳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. |
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-09-20&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(17 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 rotoql stores values like 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. — (all-null in sample) |
slate_setting_id | bigint | FK to slate_settings — the scoring format and roster constraints for this slate. e.g. 33 | |
contest_count | integer | — | Number of contests on this slate (rows in dfs.contests). Counts lobby-only contests too, which never have lineups. |
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. |
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. |
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. |
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 |
player_count | integer | — | Number of priced players in the slate pool (rows in dfs.slate_players). |
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. |
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/290871'Responses
200Single slate row.application/jsonshow example ▸
404Row not found.
Response Schema(17 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 rotoql stores values like 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. — (all-null in sample) |
slate_setting_id | bigint | FK to slate_settings — the scoring format and roster constraints for this slate. e.g. 33 | |
contest_count | integer | — | Number of contests on this slate (rows in dfs.contests). Counts lobby-only contests too, which never have lineups. |
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. |
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. |
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. |
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 |
player_count | integer | — | Number of priced players in the slate pool (rows in dfs.slate_players). |
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. |
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}/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.
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/290871/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. |
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). |
source | objectnullable | — | Projection source metadata. Null when projection_status is none_by_design or no_player_pool. |
↳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. |
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. Every field is sent on every row; 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. |
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. |
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). Every field is sent on every row; a value the projection does not have is null. |
↳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. |
↳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). |
↳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). |
↳ownership projections[].ownership | object | — | Monte Carlo tournament crowd ownership projections and volatility. |
↳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). |
↳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`). |
↳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_LATEST has no projections for this slate, so STAT_API (engine 2.1) served it. |
↳note _metadata.note | stringnullable | — | The same facts in one sentence. Null when the requested source is not deprecated and did not fall back. |
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=290871'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/914703'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=290871'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(16 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 |
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/40583793'Responses
200Single slate_player row.application/jsonshow example ▸
404Row not found.
Response Schema(16 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 |
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 slate's operator scoring format with home/away point totals, per-category point columns, and headline raw stats per side. Per-side category detail lives on team_stats. NFL today.
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=290871'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. 78.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. 119.7400 |
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. 59 |
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. 3.0000 |
total_field_goal_fpts | decimalnullable | — | — e.g. 10.0000 |
total_field_goal_missed_fpts | decimalnullable | — | — e.g. 0.0000 |
total_fpts | decimalnullable | — | — e.g. 201.1600 |
total_fumble_lost_fpts | decimalnullable | — | — e.g. 0.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/914703'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. 78.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. 119.7400 |
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. 59 |
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. 3.0000 |
total_field_goal_fpts | decimalnullable | — | — e.g. 10.0000 |
total_field_goal_missed_fpts | decimalnullable | — | — e.g. 0.0000 |
total_fpts | decimalnullable | — | — e.g. 201.1600 |
total_fumble_lost_fpts | decimalnullable | — | — e.g. 0.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 slate's operator scoring format — total points, the per-category point columns, and the raw stats behind them. NFL today; other leagues follow as their fantasy engines land.
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=290871'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.0000 |
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/40583793'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.0000 |
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 slate's operator scoring format — total points, per-category point columns, player count, and the team's raw box-score line. DST is included in the team total. NFL today.
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=290871'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. 0.0000 |
extra_pts_made | integernullable | — | — e.g. 2 |
fantasy_pts | decimalnullable | — | — e.g. 95.9800 |
field_goal_fpts | decimalnullable | — | — e.g. 0.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. 30 |
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/1829406'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. 0.0000 |
extra_pts_made | integernullable | — | — e.g. 2 |
fantasy_pts | decimalnullable | — | — e.g. 95.9800 |
field_goal_fpts | decimalnullable | — | — e.g. 0.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. 30 |
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 lineups are loaded), pending, unavailable, none. Values: available, pending, unavailable, none.
has_lineupsquerystringoptionalFilter contests by whether their lineups are loaded. true returns the contests with lineups_status = available. false returns every other contest (lineups_status pending, unavailable or none). Values: true, false.
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=290871'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. e.g. Completed |
contest_type | integer | — | Contest structure code (0 = Tournament / GPP, 1 = Cash game / 50-50 / Double-up). 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. |
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. — (all-null in sample) |
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. 50 |
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. |
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. |
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/7644488'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. e.g. Completed |
contest_type | integer | — | Contest structure code (0 = Tournament / GPP, 1 = Cash game / 50-50 / Double-up). 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. |
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. — (all-null in sample) |
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. 50 |
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. |
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. |
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/7644488/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
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. |
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 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. |
↳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 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. |
↳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. 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. 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. |
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 | decimal | — | Payout in cents. |
↳slots lineups[].slots | list<L> | — | Selected player IDs matching contest slots. |
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.
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/7644488/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. |
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 (classic, showdown). |
↳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). |
contest_profile | object | — | Contest calibration profile and crowd mixture. |
↳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). |
source | objectnullable | — | Projection source metadata. Null when projection_status is none_by_design or no_player_pool. |
↳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. |
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. |
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. |
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. |
↳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). |
↳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). |
↳ownership projections[].ownership | object | — | Monte Carlo tournament crowd ownership projections and volatility. |
↳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). |
↳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`). |
↳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_LATEST has no projections for this slate, so STAT_API (engine 2.1) served it. |
↳note _metadata.note | stringnullable | — | The same facts in one sentence. Null when the requested source is not deprecated and did not fall back. |
↳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 on the week's flagship); 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 10, 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/7644488/standings'Responses
200Contest standings with each entrant's entry countapplication/jsonshow example ▸
400Invalid contest ID; limit or format
401No key and not the week's 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 (a contest without a lineup file answers 200 with has_lineups false)
409The lineup file found belongs to a different operator contest
Response Schema(6 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). |
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. |
↳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 | bigint | — | Payout in cents. |
↳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. |
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 the week's free flagship contest for anyone else (every row and value, no CSV); else "free" (the first 10 standings rows and hide mode). |
↳full access.full | boolean | — | True when every row and value is sent: DFS access, or the week's flagship. |
↳open_rows access.open_rows | integernullable | — | Standings rows whose users open on the Free plan (10). Null with DFS access and on the flagship. |
↳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). |
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 the week's 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; or the user has no entry
409The lineup file found belongs to a different operator contest
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). |
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. |
↳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. |
↳cashed user.cashed | bigintnullable | — | The user's entries that won money. Null when locked. |
↳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 | bigint | — | Payout in cents. |
↳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 flagship) and when nothing measured ownership. |
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. |
↳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 the week's free flagship contest for anyone else (every row and value, no CSV); else "free" (the first 10 standings rows and hide mode). |
↳full access.full | boolean | — | True when every row and value is sent: DFS access, or the week's flagship. |
↳open_rows access.open_rows | integernullable | — | Standings rows whose users open on the Free plan (10). Null with DFS access and on the flagship. |
↳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). |
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=7644488'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. 15822 | |
cash_line | decimal | — | paid_places / max_entries. e.g. 0.2200 |
cash_total | integer | — | Total cash prizes in cents (e.g. 10000000 = $100,000.00). e.g. 6000000 |
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. 1.6667 |
paid_places | integer | — | max(max_position) — the number of paying positions. e.g. 32 |
ticket_total | integer | — | Total ticket face value in cents. e.g. 0 |
tier_count | integer | — | Number of tiers in the ladder. e.g. 18 |
top_prize | integer | — | First place prize in cents (e.g. 2000000 = $20,000.00). e.g. 1000000 |
top_prize_share | decimal | — | top_prize / (cash_total + ticket_total). e.g. 0.3333 |
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/7644488'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. 15822 | |
cash_line | decimal | — | paid_places / max_entries. e.g. 0.2200 |
cash_total | integer | — | Total cash prizes in cents (e.g. 10000000 = $100,000.00). e.g. 6000000 |
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. 1.6667 |
paid_places | integer | — | max(max_position) — the number of paying positions. e.g. 32 |
ticket_total | integer | — | Total ticket face value in cents. e.g. 0 |
tier_count | integer | — | Number of tiers in the ladder. e.g. 18 |
top_prize | integer | — | First place prize in cents (e.g. 2000000 = $20,000.00). e.g. 1000000 |
top_prize_share | decimal | — | top_prize / (cash_total + ticket_total). e.g. 0.3333 |