---
title: "List slates for DFS"
method: GET
path: "/api/v1/dfs/slates"
tags: ["DFS"]
---

# List slates for DFS

`GET /api/v1/dfs/slates`

## Request

- Base URL: `https://api.stat-api.com`
- URL: `https://api.stat-api.com/api/v1/dfs/slates`
- Auth: HTTP bearer

## Query parameters

- `operator_id` integer
- `operator` string
- `date` string, date
- `date__gte` string, date
- `date__lte` string, date
- `date__between` string, date
- `league` string
- `sport` string
- `external_id` integer
- `operator_slate_id` integer
- `status` 'Upcoming' | 'Live' | 'Completed' | 'upcoming' | 'live' | 'completed'
- `limit` integer
- `from_id` integer
- `format` 'json' | 'csv'

## Response `200`

slates rows matching the declared filter set.

- DFSSlatesListResponse
  - `has_more` boolean, required: True when a full page came back, so more rows can exist.
  - `limit` integer, required: Page size used for this response.
  - `next_from_id` integer, nullable, required: Pass this as `from_id` on the next request to page forward. `null` on the terminal page, and on a first page requested without `from_id` (that page uses the default sort): to walk every row, start with `from_id=0`.
  - `slates` DFSSlates[], required
    - `contest_count` integer, required: Number of contests on this slate (rows in dfs.contests). Counts lobby-only contests too, which never have lineups.
    - `date` string, date, required: Calendar day of the slate in US Eastern time (DB-generated from start_time — read-only).
    - `external_id` integer, required: Operator-side slate identifier (e.g., DraftKings contest group ID).
    - `game_count` integer, required: Number of games in the slate pool (distinct games in dfs.slate_games). 0 when the slate has no linked games.
    - `game_type` string, nullable: 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.
    - `id` integer, required: Primary Key
    - `league_id` integer, required: FK to the league this slate belongs to.
    - `lineup_contest_count` integer, required: 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, required: 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.
    - `name` string, nullable: Human-readable slate label (e.g., "Sunday Main", "Showdown: TB vs KC").
    - `operator_id` integer, required: FK to the DFS operator (DraftKings, FanDuel, Yahoo, etc.).
    - `operator_setting_id` string, nullable: 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 some stored values are not numbers (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.
    - `part_of_game` string, nullable: The part of each game that the slate scores, from the scoring rule of its slate setting (dfs.slate_settings.scoring): full, or second_half and fourth_quarter for an in-game slate. Null when the setting holds no scoring rule.
    - `player_count` integer, required: Number of priced players in the slate pool (rows in dfs.slate_players).
    - `slate_setting_id` integer, required: FK to slate_settings — the scoring format and roster constraints for this slate.
    - `start_time` string, date-time, required: Lock time — first scheduled tip/kickoff of any game in the pool.
    - `state` string, required: 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, required: Authoritative slate lifecycle status: Upcoming (pre-lock), Live (in progress), Completed (all games final).

## Other responses

- `400`: No declared filter set was satisfied by the request — see `accepted` in the body for the valid combinations.

---

[API](https://skmtc.dev/stat-api/apis/sports-db-public-api.md) · [All operations](https://skmtc.dev/stat-api/apis/sports-db-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/stat-api/apis/sports-db-public-api/revisions/23b66b957723?raw)
