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

# List contests for DFS

`GET /api/v1/dfs/contests`

## Request

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

## Query parameters

- `slate_id` integer
- `operator_slate_id` integer
- `operator_id` integer
- `operator` string
- `status` 'Upcoming' | 'Live' | 'Completed' | 'upcoming' | 'live' | 'completed'
- `slate_status` 'Upcoming' | 'Live' | 'Completed' | 'upcoming' | 'live' | 'completed'
- `lineups_status` 'available' | 'pending' | 'unavailable' | 'none'
- `has_lineups` 'true' | 'false'
- `partial_lineups_count` integer
- `partial_lineups_count__lte` integer
- `limit` integer
- `from_id` integer
- `format` 'json' | 'csv'

## Response `200`

contests rows matching the declared filter set.

- DFSContestsListResponse
  - `contests` DFSContests[], required
    - `attributes` object, nullable: The operator's raw flag set, kept whole: IsStarred, IsWinnerTakeAll, Multiplier, IsBeginner, IsCasual, IsPrivate, League, …
      - `Is FiftyFifty` string, nullable: Operator flag for 50/50 format (spaced key).
      - `Is Starred` string, nullable: Operator flag for starred/featured contest (spaced key).
      - `IsDoubleUp` string, nullable: Whether contest is a double-up format.
      - `IsFiftyfifty` string, nullable: Whether contest is a 50/50 format.
      - `IsGuaranteed` string, nullable: Whether contest prize pool is guaranteed.
      - `IsGuranteed` string, nullable: Operator flag for guaranteed prize pool (raw key spelling).
      - `IsPrivate` string, nullable: Private contest restriction.
      - `IsQualifier` string, nullable: Whether contest awards tickets/qualifier seats.
      - `IsStarred` string, nullable: Whether contest is starred/featured in lobby.
      - `IsWinnerTakeAll` string, nullable: Winner-take-all payout format.
      - `League` string, nullable: Contest league code.
      - `Multiplier` string, nullable: Contest payout multiplier flag.
      - `contest_state_detail` string, nullable: Detailed contest state or lifecycle detail.
      - `hybrid_sampling` object, nullable: Hybrid sampling simulation configuration.
      - `lineup_capsule_uri` object: URI pointer to compressed contest lineup capsule.
        - `fill_pct` number, double, nullable: Current percentage of entries filled.
        - `minutes_to_lock` number, double, nullable: Minutes remaining until contest lock.
        - `projected_final_entries` integer, nullable: Projected final entry count at lock.
        - `projected_overlay_cents` integer, nullable: Projected operator overlay in integer cents.
        - `velocity_per_min` number, double, nullable: Entry velocity rate per minute.
      - `live_telemetry` object, nullable: Live contest telemetry and pacing payload.
      - `was_resized` boolean, nullable: Whether contest entry limit was adjusted or resized.
    - `contest_state` string, nullable: Latest observed state: Upcoming, Live, Completed, Cancelled. DraftKings cs / contestState.
    - `contest_type` integer, required: Contest structure code (0 = Tournament / GPP, 1 = Cash game / 50-50 / Double-up / head-to-head, 2 = League: a small public operator contest, e.g. a FanDuel 3-player league).
    - `entry_count` integer, required: Latest observed entries. The history is in contest_snapshots.
    - `entry_fee` integer, required: Entry fee in cents (e.g. 500 = $5.00, 2000 = $20.00). 0 for free contests.
    - `external_id` integer, required: Operator contest id, numeric. FanDuel: the tail of its composite id.
    - `first_seen_at` string, date-time, nullable: First lobby observation.
    - `game_count` integer, required: 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.
    - `game_type_id` integer, nullable: Operator game type: DraftKings gameTypeId (1 Classic, 96 Showdown Captain, …).
    - `guaranteed` boolean, required: Whether the prize pool is guaranteed regardless of entries filled.
    - `id` integer, required: Primary Key
    - `last_seen_at` string, date-time, nullable: Last lobby observation. A contest absent from the lobby after this is cancelled or locked.
    - `lineups_status` string, required: Lineup file status: available (the lineups are loaded), pending (capture queued), unavailable (the capture gave up), none. Set by a database trigger from the lineup file pointer on every write (docs/migrations/scripts/2026-09-27-dfs-contests-lineups-status.sql). Filter lineups_status=available for the contests with lineups.
    - `max_entries` integer, required: Maximum total entries the contest accepts. Latest observed.
    - `max_entries_per_user` integer, required: Maximum lineups a single entrant may submit.
    - `name` string, required: Operator-facing contest name (e.g. "$5 NBA Mini-MAX").
    - `operator_external_id` string, nullable: The operator id exactly as served. FanDuel: "{fixtureListId}-{contestId}", which the API needs back verbatim. DraftKings: same as external_id.
    - `operator_id` integer, required: 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.
    - `paid_places` integer, nullable: Number of paying positions. FanDuel serves it in the lobby (prizes.count); DraftKings derives it from the ladder.
    - `partial_lineups_count` integer, nullable: How many stored lineups of the contest's lineup file hold some of their seats but not all. 0 = every stored lineup holds every seat. null = no lineup file, or a new file not counted yet (counted within the hour). A historical file captured while the slate was running misses the players of the late games in many lineups. The same number as the x-partial-lineups header of the download. Filter partial_lineups_count=0 for the contests whose stored lineups are all complete. Written hourly (apps/loader/src/dfs/scripts/contest-partial-lineups.ts; migration docs/migrations/scripts/2026-10-15-dfs-contests-partial-lineups-count.sql).
    - `payout_type` integer, nullable: DraftKings pt. 1 on all paid contests; 2 marked the two $0 promo contests.
    - `player_count` integer, required: 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, required: Total prize pool in cents (e.g. 10000000 = $100,000.00). On qualifiers, includes ticket face value.
    - `qualifier` boolean, required: Satellite or qualifier — pays tickets or seats, not (only) cash. Excluded from field-size statistics.
    - `slate_id` integer, required: FK to the slate this contest runs on.
    - `slate_status` string, nullable: Authoritative lifecycle status of the parent slate (Upcoming, Live, Completed), joined from dfs.slates.
    - `start_time` string, date-time, nullable: The contest's own lock time. A late-swap contest locks later than its slate.
    - `state` string, required: 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` string, nullable: Authoritative lifecycle status of the parent slate (Upcoming, Live, Completed), joined from dfs.slates.
  - `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`.

## 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/601ff9eaca3f?raw)
