DFS slate player projections, distributions, and betting props
Returns the player projections of a DFS slate: fantasy point components and counting stats, simulated quantile distributions (p05 through p95), tournament ownership projections with volatility bounds, Vegas betting prop anchors, and play profile upside/safety metrics.
One route for every league: the slate names its league (slate.league), and you never pass it. NFL and NBA slates are projected, for DraftKings Classic and Showdown and FanDuel Classic. Each player's projection is scored with the slate's own scoring rules, and on a Showdown or single-game slate the captain (CPT, MVP) multiplier is already applied: each seat is its own row. An NBA row carries the shared identity and points fields and the fields marked "NBA only" (minutes, usage rate, the stat line, double-double and triple-double chances, chance_5x and chance_6x); it never carries an NFL-only field. NBA ownership is projected per contest segment, so an NBA slate row has ownership: null; read it on /dfs/contests/{contest_id}/projections. Our NBA projections start with the regular season: a game's first projection appears on game day, once its betting line and roster are in; it updates whenever the line or a player's status changes, and it locks at tip. chance_Nx is the share of the seat's points distribution at or above N x salary / 1000, read from the 99 percentiles of the seat's points and interpolated linearly inside the 1-point step that holds the threshold; outside p01..p99 it answers the bound 0.99 or 0.01 with chance_Nx_bound.
The player rows come in one of three formats. The default (no format) sends them nested, in projections. format=flat sends them flat, in player_stats. format=csv returns the flat rows as CSV (text/csv): one column per player_stats field, then one column per enrich tag. enrich joins related data onto each player row, the same tags as on /dfs/slate_players.
projection_status says whether the slate's format has projections. In-game formats (DraftKings In-Game Showdown, FanDuel 2nd-half and 4th-quarter single game) have none by decision: they answer 200 with projection_status: none_by_design and empty arrays. A slate with no player pool answers 200 with projection_status: no_player_pool and empty arrays. An NBA slate without a projection yet answers 200 with not_projected_yet, a past NBA slate whose games tipped before our engine projected them 200 with not_projected, and a slate of a league our engines do not project (MLB, NHL, golf) 200 with league_not_projected. Any other NFL slate whose format has no projection source answers 404.
Request
- Base URL: https://api.stat-api.com
- URL: https://api.stat-api.com/api/v1/dfs/slates/{slate_id}/projections
- Auth: HTTP bearer
Path parameters
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.
Query parameters
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.
Roster position filter (e.g. QB, RB, WR, TE, DST, K, or comma-separated list).
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.
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.
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.
NBA slates only: a version of our NBA engine (main.projections id). Default: its active version. An NFL slate answers 400 with this parameter.
Response
DFS slate player projections, distributions, and betting props