DFS Data Dictionary
Rows in this schema point at an underlying sporting event through a polymorphic (league_code, competition_id) pair, resolved through the main.competitions view — competition_id is a team-sport games.id or a golf.tournaments.id.
Main
dfs.slate_settings10 fields· 1 refsendpoints →
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.
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| league_id | bigint | — | 2 | — |
| operator_id | bigint | → main.operators | 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 | — | 0 | Contest structure code (0 = Tournament / GPP, 1 = Cash game / Double-up). |
| game_style | stringnullable | — | CLASSIC | Operator game style label. Values CLASSICSINGLE_GAMEPICK_EMLATE_SWAPSHOW_DOWNFULL_ROSTERSHOW_DOWN_CAPTAIN_MODENON_LATE_SWAPSTARTING_5SINGLE_GAME_BOOSTSINGLE_GAME_V3WEEKENDSHOW_DOWN_CAPTAIN_MODE_SUPERFLEXFINAL_ROUND_ONLYSINGLE_GAME_DEPRECATEDSINGLE_GAME_V2-DEPRECATEDSINGLE_GAME_V2 |
| game_type | integer | — | 0 | Contest format code (0 = Classic full-slate, 1 = Showdown / Single Game, 2 = Tiers). |
| name | string | — | Single Game 1.0 | Ruleset name (e.g. "Classic", "Showdown Captain Mode", "Single Game"). |
| settings | jsonb | — | [object Object] | 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. |
| valid_from | datenullable | — | — | First slate day (US Eastern) this version of the format applies to. |
dfs.slates17 fields· 2 refsendpoints →
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.
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| external_id | bigint | — | 16775 | Operator-side slate identifier (e.g., DraftKings contest group ID). |
| league_id | bigint | — | 2 | FK to the league this slate belongs to. |
| operator_id | bigint | → main.operators | 2 | FK to the DFS operator (DraftKings, FanDuel, Yahoo, etc.). |
| 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. |
| slate_setting_id | bigint | → dfs.slate_settings | 33 | FK to slate_settings — the scoring format and roster constraints for this slate. |
| contest_count | integer | — | — | Number of contests on this slate (rows in dfs.contests). Counts lobby-only contests too, which never have lineups. |
| date | date | — | 2026-02-24 | Calendar day of the slate in US Eastern time (DB-generated from start_time — read-only). |
| 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 | — | false | 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 | — | Main | Human-readable slate label (e.g., "Sunday Main", "Showdown: TB vs KC"). |
| player_count | integer | — | — | Number of priced players in the slate pool (rows in dfs.slate_players). |
| start_time | timestamptz | — | 2026-02-25T00:00:00.000Z | Lock time — first scheduled tip/kickoff of any game in the pool. |
| 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 | — | Completed | Authoritative slate lifecycle status: Upcoming (pre-lock), Live (in progress), Completed (all games final). |
dfs.slate_games6 fields· 1 refsendpoints →
Many-to-many bridge between a DFS slate and the sport games included in its pool.
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| external_id | stringnullable | — | 59159 | Operator-side game identifier. |
| game_id | bigint | — | 2392 | Polymorphic reference to {nfl,nba,mlb}.games based on league_id |
| league_id | bigint | — | 2 | League key disambiguating the polymorphic game_id (nfl/nba/mlb/nhl). |
| slate_id | bigint | → dfs.slates | 758 | FK to dfs.slates. |
| data | jsonbnullable | — | [object Object] | Operator-provided game metadata (teams, matchup type, and start time). |
dfs.slate_players16 fields· 2 refsendpoints →
Player pool for a DFS slate — one row per (slate, player, roster slot). Carries operator salary, positions, and any operator-side metadata.
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| export_id | stringnullable | — | 108443-158854 | Operator player ID used for CSV export/import |
| external_id | stringnullable | — | 145319 | Operator player identifier in this slate. |
| league_id | bigint | — | 2 | League key disambiguating player_id. |
| player_id | bigint | — | 23 | Polymorphic FK to {nfl,nba,mlb,nhl}.players based on league_id. |
| slate_game_id | bigint | → dfs.slate_games | 193 | FK to dfs.slate_games — the specific slate-game this player is rostered to. |
| slate_id | bigint | → dfs.slates | 247 | FK to dfs.slates. |
| team_id | bigintnullable | — | 17 | Polymorphic FK to {league}.teams. Null for golfers and other player-only sports. |
| avg_points | floatnullable | — | 14.4 | Average fantasy points from operator |
| display_name | stringnullable | — | Jarred Vanderbilt | Full display name from operator |
| first_name | stringnullable | — | Jalen | Player first name from operator |
| injury_details | stringnullable | — | — | Injury body part/details |
| injury_status | stringnullable | — | o | 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 | — | Williams | Player last name from operator |
| position | string | — | C | 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 | — | 6000 | Operator-assigned DFS salary (whole dollars; e.g., 8400 = $8,400). |
Stats
dfs.game_stats50 fields· 1 refsendpoints →
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.
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| away_team_id | bigint | — | 19 | — |
| game_id | bigint | — | 42549 | — |
| home_team_id | bigint | — | 16 | — |
| league_id | bigint | — | 1 | — |
| operator_id | bigint | — | 2 | — |
| slate_id | bigint | → dfs.slates | 124482 | — |
| away_fpts | decimalnullable | — | 78.7600 | — |
| away_passing_yds | integernullable | — | 194 | — |
| away_pts | integernullable | — | 17 | — |
| away_rushing_yds | integernullable | — | 106 | — |
| away_total_yds | integernullable | — | 396 | — |
| away_turnovers | integernullable | — | 1 | — |
| home_fpts | decimalnullable | — | 119.7400 | — |
| home_passing_yds | integernullable | — | 275 | — |
| home_pts | integernullable | — | 17 | — |
| home_rushing_yds | integernullable | — | 96 | — |
| home_total_yds | integernullable | — | 367 | — |
| home_turnovers | integernullable | — | 1 | — |
| player_count | integernullable | — | 59 | — |
| scoring_format | stringnullable | — | classic | Operator scoring format code (classic, showdown, single_game); null when the format has no fantasy scoring. Values classicsingle_gameshowdown |
| slate_date | date | — | 2021-11-21 | — |
| total_blocked_kick_fpts | decimalnullable | — | 0.0000 | — |
| total_defense_interception_fpts | decimalnullable | — | 2.0000 | — |
| total_defensive_td_fpts | decimalnullable | — | 0.0000 | — |
| total_extra_point_fpts | decimalnullable | — | 3.0000 | — |
| total_field_goal_fpts | decimalnullable | — | 10.0000 | — |
| total_field_goal_missed_fpts | decimalnullable | — | 0.0000 | — |
| total_fpts | decimalnullable | — | 201.1600 | — |
| total_fumble_lost_fpts | decimalnullable | — | 0.0000 | — |
| total_fumble_recovery_fpts | decimalnullable | — | 2.0000 | — |
| total_interception_fpts | decimalnullable | — | -1.0000 | — |
| total_passing_2pt_conversion_fpts | decimalnullable | — | 0.0000 | — |
| total_passing_bonus_fpts | decimalnullable | — | 0.0000 | — |
| total_passing_td_fpts | decimalnullable | — | 12.0000 | — |
| total_passing_yds_fpts | decimalnullable | — | 19.5600 | — |
| total_pts_allowed_fpts | decimalnullable | — | 0.0000 | — |
| total_receiving_2pt_conversion_fpts | decimalnullable | — | 0.0000 | — |
| total_receiving_bonus_fpts | decimalnullable | — | 0.0000 | — |
| total_receiving_td_fpts | decimalnullable | — | 18.0000 | — |
| total_receiving_yds_fpts | decimalnullable | — | 48.9000 | — |
| total_reception_fpts | decimalnullable | — | 21.5000 | — |
| total_return_td_fpts | decimalnullable | — | 0.0000 | — |
| total_return_yds_fpts | decimalnullable | — | 0.0000 | — |
| total_rushing_2pt_conversion_fpts | decimalnullable | — | 0.0000 | — |
| total_rushing_bonus_fpts | decimalnullable | — | 0.0000 | — |
| total_rushing_td_fpts | decimalnullable | — | 6.0000 | — |
| total_rushing_yds_fpts | decimalnullable | — | 20.8000 | — |
| total_sack_fpts | decimalnullable | — | 4.0000 | — |
| total_safety_fpts | decimalnullable | — | 0.0000 | — |
dfs.player_stats74 fields· 1 refsendpoints →
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.
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| game_id | bigintnullable | — | 42306 | — |
| league_id | bigint | — | 1 | — |
| operator_id | bigint | — | 2 | — |
| player_id | bigint | — | 1183 | — |
| slate_id | bigint | → dfs.slates | 124469 | — |
| team_id | bigintnullable | — | 28 | — |
| blocked_kick_fpts | decimalnullable | — | 0.0000 | — |
| blocked_kicks | integernullable | — | 0 | — |
| defense_interception_fpts | decimalnullable | — | 0.0000 | — |
| defensive_interceptions | integernullable | — | 0 | — |
| defensive_sacks | floatnullable | — | 0.0000 | Numeric — half-sacks exist. Player value for humans, team value for DST rows. |
| defensive_td_fpts | decimalnullable | — | 0.0000 | — |
| defensive_tds | integernullable | — | 0 | — |
| extra_point_fpts | decimalnullable | — | 0.0000 | — |
| extra_pts_made | integernullable | — | 0 | — |
| fantasy_pts | decimalnullable | — | 0.0000 | — |
| field_goal_fpts | decimalnullable | — | 0.0000 | — |
| field_goal_missed_fpts | decimalnullable | — | 0.0000 | — |
| field_goals_attempted | integernullable | — | 0 | — |
| field_goals_made | integernullable | — | 0 | — |
| field_goals_made_0_19 | integernullable | — | 0 | — |
| field_goals_made_20_29 | integernullable | — | 0 | — |
| field_goals_made_30_39 | integernullable | — | 0 | — |
| field_goals_made_40_49 | integernullable | — | 0 | — |
| field_goals_made_50_plus | integernullable | — | 0 | — |
| fumble_lost_fpts | decimalnullable | — | 0.0000 | — |
| fumble_recovery_fpts | decimalnullable | — | 0.0000 | — |
| fumbles_recovered | integernullable | — | 0 | — |
| interception_fpts | decimalnullable | — | 0.0000 | — |
| interception_return_tds | integernullable | — | 0 | — |
| interceptions_thrown | integernullable | — | 0 | — |
| kick_return_tds | integernullable | — | 0 | — |
| kick_return_yds | integernullable | — | 0 | — |
| passing_2pt_conversion_fpts | decimalnullable | — | 0.0000 | — |
| passing_2pt_conversions | integernullable | — | 0 | — |
| passing_bonus_fpts | decimalnullable | — | 0.0000 | — |
| passing_td_fpts | decimalnullable | — | 0.0000 | — |
| passing_tds | integernullable | — | 0 | — |
| passing_yds | integernullable | — | 0 | — |
| passing_yds_fpts | decimalnullable | — | 0.0000 | — |
| position | string | — | WR | — Values WRRBTEMVPQBCPTDKDST |
| pts_allowed_def | integernullable | — | 16 | — |
| pts_allowed_dst | integernullable | — | 16 | — |
| pts_allowed_fpts | decimalnullable | — | 0.0000 | — |
| punt_return_tds | integernullable | — | 0 | — |
| punt_return_yds | integernullable | — | 0 | — |
| receiving_2pt_conversion_fpts | decimalnullable | — | 0.0000 | — |
| receiving_2pt_conversions | integernullable | — | 0 | — |
| receiving_bonus_fpts | decimalnullable | — | 0.0000 | — |
| receiving_fumbles_lost | integernullable | — | 0 | — |
| receiving_td_fpts | decimalnullable | — | 0.0000 | — |
| receiving_tds | integernullable | — | 0 | — |
| receiving_yds | integernullable | — | 0 | — |
| receiving_yds_fpts | decimalnullable | — | 0.0000 | — |
| reception_fpts | decimalnullable | — | 0.0000 | — |
| receptions | integernullable | — | 0 | — |
| return_td_fpts | decimalnullable | — | 0.0000 | — |
| return_yds_fpts | decimalnullable | — | 0.0000 | — |
| rushing_2pt_conversion_fpts | decimalnullable | — | 0.0000 | — |
| rushing_2pt_conversions | integernullable | — | 0 | — |
| rushing_bonus_fpts | decimalnullable | — | 0.0000 | — |
| rushing_fumbles_lost | integernullable | — | 0 | — |
| rushing_td_fpts | decimalnullable | — | 0.0000 | — |
| rushing_tds | integernullable | — | 0 | — |
| rushing_yds | integernullable | — | 0 | — |
| rushing_yds_fpts | decimalnullable | — | 0.0000 | — |
| sack_fpts | decimalnullable | — | 0.0000 | — |
| sack_fumbles_lost | integernullable | — | 0 | — |
| safeties | integernullable | — | 0 | — |
| safety_fpts | decimalnullable | — | 0.0000 | — |
| salary | integer | — | 6000 | — |
| scoring_format | stringnullable | — | classic | Operator scoring format code (classic, showdown, single_game); null when the format has no fantasy scoring. Values classicsingle_gameshowdown |
| slate_date | date | — | 2021-08-21 | — |
dfs.team_stats61 fields· 1 refsendpoints →
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.
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| game_id | bigint | — | 42549 | — |
| league_id | bigint | — | 1 | — |
| operator_id | bigint | — | 2 | — |
| opponent_team_id | bigint | — | 19 | — |
| slate_id | bigint | → dfs.slates | 124482 | — |
| team_id | bigint | — | 19 | — |
| blocked_kick_fpts | decimalnullable | — | 0.0000 | — |
| blocked_kicks | integernullable | — | 0 | — |
| defense_interception_fpts | decimalnullable | — | 0.0000 | — |
| defensive_interceptions | integernullable | — | 0 | — |
| defensive_sacks | integernullable | — | 2 | — |
| defensive_td_fpts | decimalnullable | — | 0.0000 | — |
| defensive_tds | integernullable | — | 0 | — |
| extra_point_fpts | decimalnullable | — | 0.0000 | — |
| extra_pts_made | integernullable | — | 2 | — |
| fantasy_pts | decimalnullable | — | 95.9800 | — |
| field_goal_fpts | decimalnullable | — | 0.0000 | — |
| field_goal_missed_fpts | decimalnullable | — | 0.0000 | — |
| field_goals_attempted | integernullable | — | 2 | — |
| field_goals_made | integernullable | — | 1 | — |
| first_downs | integernullable | — | 21 | — |
| fumble_lost_fpts | decimalnullable | — | 0.0000 | — |
| fumble_recovery_fpts | decimalnullable | — | 0.0000 | — |
| fumbles_lost | integernullable | — | 0 | — |
| fumbles_recovered | integernullable | — | 0 | — |
| interception_fpts | decimalnullable | — | 0.0000 | — |
| interceptions_thrown | integernullable | — | 0 | — |
| is_home | boolean | — | true | — Values truefalse |
| kick_return_tds | integernullable | — | 0 | — |
| passing_2pt_conversion_fpts | decimalnullable | — | 0.0000 | — |
| passing_bonus_fpts | decimalnullable | — | 0.0000 | — |
| passing_td_fpts | decimalnullable | — | 4.0000 | — |
| passing_yds | integernullable | — | 215 | — |
| passing_yds_fpts | decimalnullable | — | 8.6000 | — |
| player_count | integernullable | — | 30 | — |
| pts | integernullable | — | 17 | — |
| pts_allowed_def | integernullable | — | 17 | — |
| pts_allowed_dst | integernullable | — | 17 | — |
| pts_allowed_fpts | decimalnullable | — | 1.0000 | — |
| punt_return_tds | integernullable | — | 0 | — |
| receiving_2pt_conversion_fpts | decimalnullable | — | 0.0000 | — |
| receiving_bonus_fpts | decimalnullable | — | 0.0000 | — |
| receiving_td_fpts | decimalnullable | — | 6.0000 | — |
| receiving_yds | integernullable | — | 215 | — |
| receiving_yds_fpts | decimalnullable | — | 21.5000 | — |
| reception_fpts | decimalnullable | — | 11.5000 | — |
| return_td_fpts | decimalnullable | — | 0.0000 | — |
| return_yds_fpts | decimalnullable | — | 0.0000 | — |
| rushing_2pt_conversion_fpts | decimalnullable | — | 0.0000 | — |
| rushing_bonus_fpts | decimalnullable | — | 0.0000 | — |
| rushing_td_fpts | decimalnullable | — | 0.0000 | — |
| rushing_yds | integernullable | — | 103 | — |
| rushing_yds_fpts | decimalnullable | — | 10.3000 | — |
| sack_fpts | decimalnullable | — | 2.0000 | — |
| safeties | integernullable | — | 0 | — |
| safety_fpts | decimalnullable | — | 0.0000 | — |
| scoring_format | stringnullable | — | classic | Operator scoring format code (classic, showdown, single_game); null when the format has no fantasy scoring. Values classicsingle_gameshowdown |
| slate_date | date | — | 2021-11-21 | — |
| total_yds | integernullable | — | 396 | — |
| turnovers | integernullable | — | 1 | — |
Contests
dfs.contest_users4 fields· 1 refsendpoints →
A contest entrant — one operator-side user who submitted at least one lineup. Identified by the operator's user id, not a statview account.
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| external_id | string | — | younghoe | Operator user ID |
| operator_id | bigint | → main.operators | 1 | — |
| name | stringnullable | — | younghoe | — |
dfs.contests27 fields· 2 refsendpoints →
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.
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| external_id | bigint | — | 188369206 | Operator contest id, numeric. FanDuel: the tail of its composite id. |
| game_type_id | integernullable | — | 70 | Operator game type: DraftKings gameTypeId (1 Classic, 96 Showdown Captain, …). |
| operator_external_id | stringnullable | — | 188369206 | The operator id exactly as served. FanDuel: "{fixtureListId}-{contestId}", which the API needs back verbatim. DraftKings: same as external_id. |
| operator_id | bigint | → main.operators | 1 | FK to the operator. Denormalized from slates: 5,160 slate external_ids are shared between DraftKings and FanDuel, so every operator filter was a two-hop join. |
| slate_id | bigint | → dfs.slates | 32347 | FK to the slate this contest runs on. |
| attributes | jsonbnullable | — | [object Object] | The operator's raw flag set, kept whole: IsStarred, IsWinnerTakeAll, Multiplier, IsBeginner, IsCasual, IsPrivate, League, … |
| contest_state | stringnullable | — | Completed | Latest observed state: Upcoming, Live, Completed, Cancelled. DraftKings cs / contestState. |
| contest_type | integer | — | 0 | Contest structure code (0 = Tournament / GPP, 1 = Cash game / 50-50 / Double-up). |
| entry_count | integer | — | 0 | Latest observed entries. The history is in contest_snapshots. |
| entry_fee | integer | — | 100 | Entry fee in cents (e.g. 500 = $5.00, 2000 = $20.00). 0 for free contests. |
| first_seen_at | timestamptznullable | — | — | First lobby observation. |
| 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 | — | true | 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. |
| max_entries | integer | — | 100 | Maximum total entries the contest accepts. Latest observed. |
| max_entries_per_user | integer | — | 1 | Maximum lineups a single entrant may submit. |
| name | string | — | 50/50 Contest ($1 - Top 50% Win) | Operator-facing contest name (e.g. "$5 NBA Mini-MAX"). |
| paid_places | integernullable | — | 50 | Number of paying positions. FanDuel serves it in the lobby (prizes.count); DraftKings derives it from the ladder. |
| payout_type | integernullable | — | 1 | DraftKings pt. 1 on all paid contests; 2 marked the two $0 promo contests. |
| 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 | — | 2500 | Total prize pool in cents (e.g. 10000000 = $100,000.00). On qualifiers, includes ticket face value. |
| qualifier | boolean | — | false | 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. |
| start_time | timestamptznullable | — | 2026-03-03T00:00:00.000Z | The contest's own lock time. A late-swap contest locks later than its slate. |
| 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. |
dfs.contest_payout_shapes11 fields· 1 refsendpoints →
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.
| Field | Type | References | Example | Description |
|---|---|---|---|---|
| idkey | bigint | — | — | Primary Key |
| contest_id | bigint | → dfs.contests | 15822 | FK to the contest. Also the row id. |
| cash_line | decimal | — | 0.2200 | paid_places / max_entries. |
| cash_total | integer | — | 6000000 | Total cash prizes in cents (e.g. 10000000 = $100,000.00). |
| min_cash | integer | — | 2500 | Amount awarded on the last paying tier in cents (e.g. 1000 = $10.00). |
| min_cash_multiple | decimal | — | 1.6667 | min_cash / entry_fee. 2.0 on a double-up. |
| paid_places | integer | — | 32 | max(max_position) — the number of paying positions. |
| ticket_total | integer | — | 0 | Total ticket face value in cents. |
| tier_count | integer | — | 18 | Number of tiers in the ladder. |
| top_prize | integer | — | 1000000 | First place prize in cents (e.g. 2000000 = $20,000.00). |
| top_prize_share | decimal | — | 0.3333 | top_prize / (cash_total + ticket_total). |