STAT-API

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_settingsdfs.slate_settings
The 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_settings
Requires one of: operator_id or operator — requests satisfying none of these return 400.
Parameters
operator_idquerybigintoptional
Filter by operator: by numeric id (1 DraftKings, 2 FanDuel, 3 Yahoo).
operatorquerystringoptional
Filter by operator: by name (draftkings, fanduel) or numeric id (1, 2).
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return 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/json
Response Schema(10 fields)show schema ▸
FieldTypeReferencesDescription
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}
Parameters
idpathbigintrequired
Primary 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 ▸
FieldTypeReferencesDescription
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.
slatesdfs.slates
DFS 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/slates
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_idquerybigintoptional
Filter to all slates for a single DFS operator: by numeric id (1 DraftKings, 2 FanDuel, 3 Yahoo).
operatorquerystringoptional
Filter to all slates for a single DFS operator: draftkings, fanduel, yahoo (or numeric operator id).
datequerydateoptional
Slate 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=.
leaguequerystringoptional
League — code (NFL, NBA, MLB, NHL, GOLF; case-insensitive) or numeric league id. Resolves via main.leagues.
sportquerystringoptional
Sport/league code (NFL, NBA, MLB, NHL, GOLF; case-insensitive). Resolves via main.leagues.
external_idquerybigintoptional
Operator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId).
operator_slate_idquerybigintoptional
Operator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId). Resolves to slate id.
statusquerystringoptional
Filter by slate lifecycle status: Upcoming, Live, Completed (case-insensitive). Values: Upcoming, Live, Completed, upcoming, live, completed.
limitqueryintegeroptionaldefault 100
Page size. Defaults to 100; max 5000.
from_idquerybigintoptional
Return 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/json
Response Schema(17 fields)show schema ▸
FieldTypeReferencesDescription
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
bigintFK 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
bigintFK 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}
Parameters
idpathbigintrequired
Primary 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 ▸
FieldTypeReferencesDescription
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
bigintFK 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
bigintFK 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}/projections
Parameters
slate_idpathbigintrequired
Internal 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_LATEST
Projection 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.
positionquerystringoptional
Roster position filter (e.g. QB, RB, WR, TE, DST, K, or comma-separated list).
formatquerystringoptionaldefault json
Row 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.
enrichquerystringoptional
Comma-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 pre
Time 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 ▸
FieldTypeReferencesDescription
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/seasons
Parameters
sportquerystringoptional
Sport code (nfl, nba, mlb, nhl, golf). Defaults to nfl.
league_idquerybigintoptional
Numeric 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 ▸
FieldTypeReferencesDescription
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_gamesdfs.slate_games
Many-to-many bridge between a DFS slate and the sport games included in its pool.
GET/api/v1/dfs/slate_games
Requires one of: slate_id or operator_slate_id — requests satisfying none of these return 400.
Parameters
slate_idquerybigintoptional
Filter to the games in a single slate pool.
operator_slate_idquerybigintoptional
Operator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId). Resolves to slate_id.
operator_idquerystringoptional
Disambiguate slate by operator: 1 DraftKings, 2 FanDuel, 3 Yahoo.
operatorquerystringoptional
Disambiguate slate by operator: draftkings, fanduel, yahoo (or numeric operator id).
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return 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/json
Response Schema(6 fields)show schema ▸
FieldTypeReferencesDescription
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
bigintFK 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}
Parameters
idpathbigintrequired
Primary 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 ▸
FieldTypeReferencesDescription
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
bigintFK 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_playersdfs.slate_players
Player 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_players
Requires one of: slate_id or operator_slate_id — requests satisfying none of these return 400.
Parameters
slate_idquerybigintoptional
Filter to the player pool of a single slate.
operator_slate_idquerybigintoptional
Operator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId). Resolves to slate_id.
operator_idquerystringoptional
Disambiguate slate by operator: 1 DraftKings, 2 FanDuel, 3 Yahoo.
operatorquerystringoptional
Disambiguate slate by operator: draftkings, fanduel, yahoo (or numeric operator id).
positionquerystringoptional
Filter by roster position (e.g. QB, RB, WR, TE, DST, K).
team_idquerybigintoptional
Filter by team ID.
modequerystringoptionaldefault pre
Time 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 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return 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/json
Response Schema(16 fields)show schema ▸
FieldTypeReferencesDescription
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
bigintFK to dfs.slate_games — the specific slate-game this player is rostered to.
e.g. 193
slate_id
bigintFK 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}
Parameters
idpathbigintrequired
Primary key (id) of the slate_player row.
modequerystringoptionaldefault pre
Time 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 ▸
FieldTypeReferencesDescription
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
bigintFK to dfs.slate_games — the specific slate-game this player is rostered to.
e.g. 193
slate_id
bigintFK 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_statsdfs.game_stats
One 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_stats
Requires one of: slate_id or game_id or slate_date or operator_slate_id — requests satisfying none of these return 400.
Parameters
slate_idquerybigintoptional
Filter to one slate — every game in its pool.
operator_slate_idquerybigintoptional
Operator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId). Resolves to slate_id.
game_idquerybigintoptional
Filter to one game across slates.
slate_datequerydateoptional
Slate calendar day (YYYY-MM-DD, US Eastern). Range operators support backtesting windows. Range syntax: slate_date__gte=, slate_date__lte=, slate_date__between=.
scoring_formatquerystringoptional
Scoring format code (classic, showdown, single_game).
operator_idquerybigintoptional
Filter by operator: by numeric id (1 = DraftKings, 2 = FanDuel) or name (draftkings, fanduel).
operatorquerystringoptional
Filter by operator: draftkings, fanduel, yahoo (or numeric operator id).
league_idquerybigintoptional
Filter by league (1 = NFL).
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return 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/json
Response Schema(50 fields)show schema ▸
FieldTypeReferencesDescription
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}
Parameters
idpathbigintrequired
Primary 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 ▸
FieldTypeReferencesDescription
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_statsdfs.player_stats
One 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_stats
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_idquerybigintoptional
Filter to one slate — every player in that slate's pool.
operator_slate_idquerybigintoptional
Operator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId). Resolves to slate_id.
player_idquerybigintoptional
Filter to a single player across slates.
game_idquerybigintoptional
Filter to the players whose slate rows resolve to one game.
slate_datequerydateoptional
Slate calendar day (YYYY-MM-DD, US Eastern). Range operators support backtesting windows. Range syntax: slate_date__gte=, slate_date__lte=, slate_date__between=.
team_idquerybigintoptional
Filter by the player's team.
scoring_formatquerystringoptional
Scoring format code (classic, showdown, single_game) — e.g. exclude showdown duplicates from a player log.
positionquerystringoptional
Roster position as listed in the slate pool (QB, RB, WR, TE, DST).
operator_idquerybigintoptional
Filter by operator: by numeric id (1 = DraftKings, 2 = FanDuel) or name (draftkings, fanduel).
operatorquerystringoptional
Filter by operator: draftkings, fanduel, yahoo (or numeric operator id).
league_idquerybigintoptional
Filter by league (1 = NFL).
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return 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/json
Response Schema(74 fields)show schema ▸
FieldTypeReferencesDescription
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}
Parameters
idpathbigintrequired
Primary 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 ▸
FieldTypeReferencesDescription
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_statsdfs.team_stats
One 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_stats
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_idquerybigintoptional
Filter to one slate — both teams of every game in it.
operator_slate_idquerybigintoptional
Operator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId). Resolves to slate_id.
game_idquerybigintoptional
Filter to one game's two team rows across slates.
slate_datequerydateoptional
Slate calendar day (YYYY-MM-DD, US Eastern). Range operators support backtesting windows. Range syntax: slate_date__gte=, slate_date__lte=, slate_date__between=.
team_idquerybigintoptional
Filter to one team across slates.
scoring_formatquerystringoptional
Scoring format code (classic, showdown, single_game).
operator_idquerybigintoptional
Filter by operator: by numeric id (1 = DraftKings, 2 = FanDuel) or name (draftkings, fanduel).
operatorquerystringoptional
Filter by operator: draftkings, fanduel, yahoo (or numeric operator id).
league_idquerybigintoptional
Filter by league (1 = NFL).
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return 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/json
Response Schema(61 fields)show schema ▸
FieldTypeReferencesDescription
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}
Parameters
idpathbigintrequired
Primary 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 ▸
FieldTypeReferencesDescription
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_usersdfs.contest_users
A 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_users
Requires one of: operator_id or operator — requests satisfying none of these return 400.
Parameters
operator_idquerybigintoptional
Filter to all contest entrants for a single DFS operator: by numeric id (1 DraftKings, 2 FanDuel, 3 Yahoo).
operatorquerystringoptional
Filter to all contest entrants for a single DFS operator: draftkings, fanduel, yahoo (or numeric operator id).
namequerystringoptional
Filter by entrant username (exact match).
limitqueryintegeroptionaldefault 100
Page size. Defaults to 100; max 5000.
from_idquerybigintoptional
Return 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/json
Response Schema(4 fields)show schema ▸
FieldTypeReferencesDescription
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}
Parameters
idpathbigintrequired
Primary 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 ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
external_id
string—Operator user ID
e.g. younghoe
operator_id
bigint—
e.g. 1
name
stringnullable——
e.g. younghoe
contestsdfs.contests
A 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/contests
Requires one of: slate_id or operator_slate_id — requests satisfying none of these return 400.
Parameters
slate_idquerybigintoptional
Filter to all contests run on a single slate.
operator_slate_idquerybigintoptional
Operator-side slate identifier (DraftKings contest group ID, FanDuel fixtureListId). Resolves to slate_id.
operator_idquerybigintoptional
Filter to one operator: by numeric id (1 DraftKings, 2 FanDuel, 3 Yahoo) or name (draftkings, fanduel).
operatorquerystringoptional
Filter to one operator: draftkings, fanduel, yahoo (or numeric operator id).
statusquerystringoptional
Filter contests by parent slate status: Upcoming, Live, Completed (case-insensitive). Values: Upcoming, Live, Completed, upcoming, live, completed.
slate_statusquerystringoptional
Filter contests by parent slate status: Upcoming, Live, Completed (case-insensitive). Values: Upcoming, Live, Completed, upcoming, live, completed.
lineups_statusquerystringoptional
Filter by lineup file status: available (the lineups are loaded), pending, unavailable, none. Values: available, pending, unavailable, none.
has_lineupsquerystringoptional
Filter 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 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return 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/json
Response Schema(27 fields)show schema ▸
FieldTypeReferencesDescription
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
bigintFK 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
bigintFK 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}
Parameters
idpathbigintrequired
Primary 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 ▸
FieldTypeReferencesDescription
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
bigintFK 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
bigintFK 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}/download
Parameters
contest_idpathbigintrequired
Internal database contest ID or operator external_id.
formatquerystringoptionaldefault json
Output format (csv or json).
enrichquerystringoptional
Declarative 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_onlyquerybooleanoptional
When 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 ▸
FieldTypeReferencesDescription
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}/projections
Parameters
contest_idpathbigintrequired
Internal DFS contest ID (references dfs.contests.id).
positionquerystringoptional
Roster position filter (e.g. QB, RB, WR, TE, DST, K).
formatquerystringoptionaldefault json
Row 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.
enrichquerystringoptional
Comma-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 ▸
FieldTypeReferencesDescription
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}/standings
Parameters
contest_idpathbigintrequired
Internal database contest ID or operator external_id.
limitqueryintegeroptionaldefault 100
Rows to return. At most 10 without DFS access (1000 on the week's flagship); 1000 with it.
formatquerystringoptionaldefault json
Output format (json or csv). CSV needs DFS access.
from_rowqueryintegeroptionaldefault 1
The 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.
userquerystringoptional
Start the page at this username's best row (overrides from_row). 404 when the contest has no such user.
rankqueryintegeroptional
Start 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 ▸
FieldTypeReferencesDescription
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}/lineups
Parameters
contest_idpathbigintrequired
Internal database contest ID or operator external_id.
usernamepathstringrequired
Entrant username exactly as in the standings.
formatquerystringoptionaldefault json
Output format (json or csv). CSV needs DFS access.
tablequerystringoptionaldefault lineups
The 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 ▸
FieldTypeReferencesDescription
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_shapesdfs.contest_payout_shapes
One 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_shapes
Requires one of: contest_id — requests satisfying none of these return 400.
Parameters
contest_idquerybigintoptional
The shape of one contest.
limitqueryintegeroptionaldefault 50
Page size. Defaults to 50; max 5000.
from_idquerybigintoptional
Return 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/json
Response Schema(11 fields)show schema ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
contest_id
bigintFK 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}
Parameters
idpathbigintrequired
Primary 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 ▸
FieldTypeReferencesDescription
idkey
bigint—Primary Key
contest_id
bigintFK 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