DFS

Projected captain and FLEX ownership by contest, the biggest prize pool first (lobby), and by contest group

How the learned per-contest ownership of STAT_API_LATEST changes from contest to contest on one slate.

The lobby (Frank 2026-10-01): contests lists every contest of the slate with learned rows, the biggest prize pool first (then the largest max_entries, then the lowest id). The tool opens on the biggest pool (default_contest) and compares each value with the biggest cash game (default_compare, the same order among cash contests). contest holds the values of ?contest= (default: default_contest), compare those of ?compare= (default: default_compare), and across the values of contests side by side, in lobby order: with DFS access the 5 biggest GPP contests and the 5 biggest cash games (the page's three filters), without it the free contests. An id that is not a contest of the slate answers 400.

The groups stay. The slate's contests fall into groups by kind (cash vs GPP as the operator labels them: contest_type 1 is cash, every other type GPP; the model's name rule only for a contest without a type), by entry type inside GPP (single_entry: 1 entry per user, else multi_entry) and by size tier of max_entries (2, 3-100, 101-1k, 1k-10k, 10k-100k, 100k+). Qualifiers and cancelled contests are left out, and so is a contest without learned rows. Each group shows the stored values of ONE real contest, its representative: a paid contest first (entry fee above 0), then the largest field (max_entries), then the most entries, then the largest prize pool, then the lowest id. Empty groups are not sent.

Captain (DraftKings CPT, FanDuel MVP) and FLEX are separate projections: a player's captain row holds his captain share and his FLEX row the rest. Each player shows, per group, both values, their total, the captain rate (captain / total) and his captain and FLEX ranks in the group, plus the spread of each slot across the groups. Per slot: salary, projected points and points per $1,000 from the slate's STAT_API_LATEST projections.

Only persisted learned rows are served (stats.ownership_model set, _metadata.contest_ownership = persisted), never STAT_API (2.1) and never a read-time calibration. A slate without them answers 200 with empty contests, groups and players and a reason.

Access (Frank 2026-10-01, about 22:30Z: "top 5 largest contest types on the left, they only have access to top 10 ownership of players for single game formats"; Frank 2026-10-02: "add in the biggest 5 contests for both all | cash | gpp - there should be 10 for both DK and FD"; then "make it 5 records throughout the entire system"): with DFS access (Pro or the DFS add-on) every contest, every player, the groups and the CSV. Without it (no key, the trial key, a Free key) the free contests only: the 5 biggest prize pools of the slate, of any kind (fewer on a slate with fewer). contests lists only them, groups is empty, each player's by_group is empty and his spreads are null. contest or compare on another contest of the slate answers 200 with locked true, no player and no position total. On a pre-game single-game slate (DraftKings Showdown, FanDuel single game; never an in-game format) such a caller sees the featured players: the 5 players with the highest total ownership in any free contest (access.plan = featured). On any other slate the first 5 players (access.plan = preview). Every list of such an answer holds at most 5 records, the record cap of every non-paid read, and the route asks for no exemption from that cap (no x-preview-exempt). A gated answer names the plan in _metadata (required_tier, message, total_actual_records) and in the x-required-plan and x-preview-rows headers. Position totals always cover every player of an open contest.

get/api/v1/dfs/slates/{slate_id}/contest-ownership

Request

  • Base URL: https://api.stat-api.com
  • URL: https://api.stat-api.com/api/v1/dfs/slates/{slate_id}/contest-ownership
  • Auth: HTTP bearer

Path parameters

slate_idinteger required

Internal STAT-API slate ID (references dfs.slates.id).

Query parameters

contestinteger

The contest to show in contest (dfs.contests id of a contest of the slate with learned rows). Default default_contest, the biggest prize pool. Without DFS access a contest that is not free answers locked. An id that is not a contest of the slate answers 400.

compareinteger

The contest to show in compare (dfs.contests id of a contest of the slate with learned rows). Default default_compare, the biggest cash game. Without DFS access a contest that is not free answers locked. An id that is not a contest of the slate answers 400.

formatstring

'json' (default) or 'csv' (DFS access only, 402 otherwise).

csvstring

With format=csv: 'groups' (default, one row per player and group) or 'contests' (one row per contest and player, every contest in lobby order). Without format=csv it answers 400.

Response

Projected captain and FLEX ownership by contest, the biggest prize pool first (lobby), and by contest group

as_ofstring nullable

The newest write time of the served rows (ISO 8601, UTC). Null when no rows are served.

default_compareinteger nullable

The contest each value compares with (Frank 2026-10-01): the biggest cash game (contest_type 1), by prize pool, then max_entries, then id. Null when the slate has no cash contest.

default_contestinteger nullable

The contest the tool opens on (Frank 2026-10-01): the biggest prize pool, the first of contests. Null without a contest.

default_groupstring nullable

The group key the tool opened first before the lobby (Frank 2026-10-01, the largest GPP): the GPP group whose representative contest comes first by the representative order (paid, then the largest max_entries, then entries, prize pool, id). Null without a GPP group.

modelstring nullable

The learned model label of the served rows (stats.ownership_model, e.g. single_hgb@19d12bd6d309). Null when no rows are served.

reasonstring nullable

Why contests and groups are empty (an in-game format, no STAT_API_LATEST source for the format, no learned rows yet, or a slate of another league than NFL, which this board does not serve). Null when contests are served.

source'STAT_API_LATEST' required

The projection source of every value (always STAT_API_LATEST).

Changes

No recorded changes to this operation across all 2 revisions of this API.