DFS GraphQL 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.
Every GraphQL type, relation, argument, and field — generated from the served schema, so it can never disagree with the API. Each column is documented inline; relations and foreign keys link straight to the type they resolve to. Root fields take the same filters as REST; requests are metered by rows resolved, nested lists included.
Main
DFSSlateSettingsFields (10)
idBigIntkeyPrimary Key
2league_idBigInt2nameStringSingle Game 1.0game_typeInt0contest_typeInt0game_styleStringnullableCLASSICValues: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_V2settingsJSONFull 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.
[object Object]created_atStringupdated_atStringRelations (3)
The main.operators row referenced by operator_id; null when unlinked.
dfs.slate_projection_sources rows whose slate_setting_id references this row.
dfs.slates rows whose slate_setting_id references this row.
Arguments (2)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.
DFSSlatesoperator_id + date.Fields (11)
idBigIntkeyPrimary Key
FK to the DFS operator (DraftKings, FanDuel, Yahoo, etc.).
2league_idBigIntFK to the league this slate belongs to.
2FK to slate_settings — the scoring format and roster constraints for this slate.
33external_idBigIntOperator-side slate identifier (e.g., DraftKings contest group ID).
16775nameStringnullableHuman-readable slate label (e.g., "Sunday Main", "Showdown: TB vs KC").
MainmainBooleanWhether 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.
falseValues:falsetruestart_timeStringLock time — first scheduled tip/kickoff of any game in the pool.
2026-02-25T00:00:00.000Zcreated_atStringupdated_atStringdateStringCalendar day of the slate in US Eastern time (DB-generated from start_time — read-only).
2026-02-24Relations (5)
The main.operators row referenced by operator_id; null when unlinked.
The dfs.slate_settings row referenced by slate_setting_id; null when unlinked.
dfs.contests rows whose slate_id references this row.
dfs.slate_games rows whose slate_id references this row.
dfs.slate_players rows whose slate_id references this row.
Arguments (5)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.operator_idIntFilter to all slates for a single DFS operator: 1 DraftKings, 2 FanDuel, 3 Yahoo.dateStringSlate calendar date in US Eastern time (YYYY-MM-DD), derived from start_time.leagueStringLeague — code (NFL, NBA, MLB, NHL, GOLF; case-insensitive) or numeric league id. Resolves via main.leagues.
DFSSlateGamesslate_id.Fields (8)
idBigIntkeyPrimary Key
league_idBigIntLeague key disambiguating the polymorphic game_id (nfl/nba/mlb/nhl).
2game_idBigIntPolymorphic reference to {nfl,nba,mlb}.games based on league_id
2392external_idStringnullableOperator-side game identifier.
59159dataJSONnullableOperator-provided game-level metadata (e.g., totals/spreads at slate snapshot).
[object Object]created_atStringupdated_atStringRelations (2)
The dfs.slates row referenced by slate_id; null when unlinked.
dfs.slate_players rows whose slate_game_id references this row.
Arguments (3)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.slate_idIntFilter to the games in a single slate pool.
DFSSlatePlayersslate_id.Fields (19)
idBigIntkeyPrimary Key
league_idBigIntLeague key disambiguating player_id.
2player_idBigIntPolymorphic FK to {nfl,nba,mlb,nhl}.players based on league_id.
258FK to dfs.slate_games — the specific slate-game this player is rostered to.
82875team_idBigIntnullablePolymorphic FK to {league}.teams. Null for golfers and other player-only sports.
17salaryIntOperator-assigned DFS salary (whole dollars; e.g., 8400 = $8,400).
3000positionStringPrimary position label per operator (e.g., RB, WR, PG, SP).
CValues:CCPTPGSF/PFSG/SFPFPG/SGSGSFPF/CMVPSF/SGSG/PGPF/SFC/PFPG/SFroster_positionStringexternal_idStringnullableOperator player identifier in this slate.
739960first_nameStringnullablePlayer first name from operator
Jalenlast_nameStringnullablePlayer last name from operator
Williamsdisplay_nameStringnullableFull display name from operator
Rudy Gobertavg_pointsFloatnullableAverage fantasy points from operator
16.8injury_statusStringnullableInjury 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.
oValues:oqdpinjury_detailsStringnullableInjury body part/details
export_idStringnullableOperator player ID used for CSV export/import
121901-12341created_atStringupdated_atStringRelations (4)
The dfs.slate_games row referenced by slate_game_id; null when unlinked.
The dfs.slates row referenced by slate_id; null when unlinked.
contest_user_lineup_player_entries[DFSContestUserLineupPlayerEntries!]!→ DFSContestUserLineupPlayerEntriesdfs.contest_user_lineup_player_entries rows whose slate_player_id references this row.
dfs.slate_player_projections rows whose slate_player_id references this row.
Arguments (3)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.slate_idIntFilter to the player pool of a single slate.
Stats
DFSSlateProjectionSourcesFields (9)
idBigIntkeyPrimary Key
FK to dfs.slate_settings — which slate format this source provides projections for.
6nameStringDisplay name of the projection source.
perfectValues:perfectNBA SOTA projectionsdescriptionStringnullableFree-text description of the source methodology.
Actual fantasy scores (perfect hindsight)Values:Actual fantasy scores (perfect hindsight)State-of-the-art NBA player projectionssource_typeIntSource-type enum (0=manual upload, 1=consensus, 2=model, etc.).
0enabledBooleanFalse hides this source from lineup-builder dropdowns.
truedisplay_orderIntSort order for UI display.
999created_atStringupdated_atStringRelations (2)
The dfs.slate_settings row referenced by slate_setting_id; null when unlinked.
dfs.slate_player_projections rows whose slate_projection_source_id references this row.
Arguments (2)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.
DFSSlatePlayerProjectionsslate_player_id.Fields (10)
idBigIntkeyPrimary Key
FK to dfs.slate_players — which slate-player this projection covers.
FK to dfs.slate_projection_sources — which provider produced this projection.
projectionFloatMedian (P50) projected fantasy points.
floorFloatnullable15th percentile projection (conservative)
ceilingFloatnullable85th percentile projection (upside)
std_devFloatnullableStandard deviation for simulation/distribution
statsJSONnullableComponent stat projections by sport. NFL example: {"pass_yds": 275.5, "pass_tds": 1.5, "pass_ints": 0.5, "rush_yds": 22.5, "rush_tds": 0.3, "rec": 4.5, "rec_yds": 45.0, "rec_tds": 0.4}
created_atStringupdated_atStringRelations (2)
The dfs.slate_players row referenced by slate_player_id; null when unlinked.
The dfs.slate_projection_sources row referenced by slate_projection_source_id; null when unlinked.
Arguments (3)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.slate_player_idIntFilter to all source projections for a single slate-player.
Contests
DFSContestUsersoperator_id.Fields (6)
idBigIntkeyPrimary Key
1external_idStringOperator user ID
younghoenameStringnullableyounghoecreated_atStringupdated_atStringRelations (2)
The main.operators row referenced by operator_id; null when unlinked.
dfs.contest_user_lineups rows whose contest_user_id references this row.
Arguments (3)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.operator_idIntFilter to all contest entrants for a single DFS operator: 1 DraftKings, 2 FanDuel, 3 Yahoo.
DFSContestsslate_id.Fields (13)
idBigIntkeyPrimary Key
external_idBigIntOperator contest ID
188369206nameStringOperator-facing contest name (e.g. "$5 NBA Mini-MAX").
50/50 Contest ($1 - Top 50% Win)contest_typeInt0=GPP, 1=Cash
0entry_feeIntEntry fee in cents
100prize_poolIntTotal prize pool in cents
2500max_entriesIntMaximum total entries the contest accepts.
100entry_countIntEntries submitted at load time.
0max_entries_per_userIntMaximum lineups a single entrant may submit.
1guaranteedBooleanWhether the prize pool is guaranteed regardless of entries filled.
trueValues:truefalsecreated_atStringupdated_atStringRelations (2)
The dfs.slates row referenced by slate_id; null when unlinked.
dfs.contest_user_lineups rows whose contest_id references this row.
Arguments (3)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.slate_idIntFilter to all contests run on a single slate.
DFSContestUserLineupscontest_id | contest_user_id.Fields (9)
idBigIntkeyPrimary Key
6049631891external_idBigIntOperator entry ID
923999940921217253rankIntnullable694pointsFloatnullableTotal fantasy points scored
307.7500winningsIntnullablePrize won in cents
0created_atStringupdated_atStringRelations (3)
The dfs.contests row referenced by contest_id; null when unlinked.
The dfs.contest_users row referenced by contest_user_id; null when unlinked.
contest_user_lineup_player_entries[DFSContestUserLineupPlayerEntries!]!→ DFSContestUserLineupPlayerEntriesdfs.contest_user_lineup_player_entries rows whose contest_user_lineup_id references this row.
Arguments (4)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.contest_idIntFilter to every lineup submitted to a single contest.contest_user_idIntFilter to every lineup an entrant submitted.
DFSContestUserLineupPlayerEntriescontest_user_lineup_id.Fields (8)
idBigIntkeyPrimary Key
FK to the submitted lineup this roster slot belongs to.
3115111References slate_player (player_id, salary, position)
3127084roster_positionStringPosition slot the player occupies in the lineup — "QB", "FLEX", "DST". Resolved for you; display_order on the same row gives the order slots appear in a lineup.
103display_orderIntnullableAdded alongside roster_position when it is resolved.
pointsFloatcreated_atStringupdated_atStringRelations (2)
The dfs.contest_user_lineups row referenced by contest_user_lineup_id; null when unlinked.
The dfs.slate_players row referenced by slate_player_id; null when unlinked.
Arguments (3)
firstIntPage size; clamped to the table's REST default/max limits.afterBigIntKeyset cursor — returns rows with id > after, ordered by id ascending.contest_user_lineup_idIntFilter to the player roster of a single submitted lineup.