---
title: "Get today's Pick of the Day"
method: GET
path: "/api/v1/pick-of-the-day"
tags: ["Pick of the Day"]
---

# Get today's Pick of the Day

`GET /api/v1/pick-of-the-day`

One sourced sharp-money call a day (Insider-tier). Returns the published pick for the CURRENT product day: the backed side, the pre-game odds and $100 return, the proven smart-money holders on that side, the grade and category edge, and the thesis. The price is snapshotted before kickoff so it does not drift. Returns 404 when today has no published pick yet -- it never serves a prior day's finished pick as today's, so an automated consumer never acts on a settled game (a prior pick stays available through the archive endpoint).

## Headers

- `If-None-Match` string

## Response `200`

Today's Pick of the Day

- object
  - `object` 'pick_of_the_day', required
  - `data` PickOfTheDay, required
    - `state` 'full', required — Always 'full' for an authenticated Insider key.
    - `pick_date` string, date, required — The pick's local publication date (YYYY-MM-DD).
    - `matchup` string, required — Human-readable matchup (e.g. "Portugal vs. Uzbekistan").
    - `category` string, required — Market category (e.g. "Soccer").
    - `platform` string, required — Provider platform (e.g. "polymarket").
    - `release_at` string, date-time, required — The pick's nominal daily release slot (fixed 19:00 Europe/Berlin -- CEST/CET). The actual publish instant can trail it by minutes to hours when no candidate qualified at the slot and the selector kept retrying (retries stop when the day's kickoff-eligibility window closes at 21:00 US/Eastern).
    - `is_locked` boolean, required — True only before the pick's daily release slot (a pre-release embargo flag); effectively always false on a served, already-published pick. To detect that the backed game has kicked off, use `game_started`.
    - `game_started` boolean — True once the backed game's kickoff has passed (kickoff <= now). When true the snapshotted pre-game price is no longer actionable. Absent for a legacy pick with no stored kickoff (treat as not-started).
    - `outcome` 'pending' | 'win' | 'loss' | 'void', required — Settlement outcome of the backed side; 'pending' until the market resolves.
    - `pick_outcome_label` string, required — The raw backed-outcome label (e.g. "Portugal").
    - `token_id` string, nullable — The Polymarket CLOB token id (ERC1155 asset id, decimal string) for the backed outcome; null when unavailable (e.g. Kalshi markets, unsynced markets).
    - `position` string, required — The backed side phrased as a bet (e.g. "Portugal to win").
    - `side_summary` string, required — One-line summary of which side smart money is backing.
    - `smart_wallet_count` integer, required — Number of proven smart-money wallets on the backed side.
    - `top_grade` string, nullable — Highest trader grade among the backed-side holders (S, A, B, C, D, F).
    - `category_edge_pct` number, nullable — Category win-rate edge as a fraction: the backed-side cohort's win rate in this category minus the non-market-maker category baseline (e.g. 0.09 = +9 points). Present only when statistically credible; null/absent otherwise (and for legacy rows). Paired with category_edge_sample.
    - `category_edge_sample` integer, nullable — Pooled count of resolved markets behind category_edge_pct (the headline's n). Present if and only if category_edge_pct is present.
    - `smart_usd` number, nullable — Recency-weighted graded-flow magnitude in USD; omitted when <= 0.
    - `backed_price` number, nullable — Pre-game snapshot probability (0..1) for the backed side.
    - `return_per_100` number, nullable — Gross return on a $100 stake at the snapshotted price (100 / backed_price).
    - `sharp_pct` number, nullable — Backed-side smart-money dollar consensus as a fraction 0..1: the share of the sharp dollars on the backed side. A conviction signal, NOT a probability or expected-value claim. Frozen at generation.
    - `market_pct` number, nullable — Market-implied probability of the backed side as a fraction 0..1 (equals backed_price), re-exposed alongside sharp_pct for the WHY breakdown.
    - `consensus_edge_pct` number, nullable — Consensus edge = sharp_pct - market_pct, the conviction-vs-price gap (how much more of the smart money sits on this side than the price implies). This is NOT an expected-value or guaranteed edge. Null when either input is null.
    - `traders` integer, nullable — Count of proven smart-money wallets on the backed side (equals smart_wallet_count).
    - `backed_sharp_usd` number, nullable — Raw backed-side smart-money USD frozen at generation (the 'Sharp $'), NOT the recency-weighted smart_usd which decays.
    - `holders` PickHolder[], nullable — Proven smart-money holders on the backed side.
      - `address` string, required
      - `name` string, nullable
      - `grade` string, nullable — All-time trader grade (S, A, B, C, D, F).
      - `shares` number, required
    - `holder_count` integer, nullable — True total of proven holders on the backed side (may exceed the holders array length).
    - `editorial_note` string, nullable — Optional editorial note attached to the pick.
    - `thesis` string, required — The reasoning behind the pick.
    - `market_url` string, nullable — Canonical web market URL.
    - `event_slug` string, nullable — The canonical /event game-page slug (one neutral page per game), null when the game has no neutral event page.
    - `sports_context` PickSportsContext — Provider-first sports context for a Pick of the Day market: team crests, league branding, and live score. Team logos and league logo are provider-owned (Polymarket /teams crests for clubs, country flags for national teams and tennis players); no local derivation.
      - `league_name` string, nullable — League or competition display name (e.g. "Premier League").
      - `league_logo` string, nullable — League logo URL (provider-owned).
      - `yes_team` PickSportsTeam — A single sports team or competitor in a Pick of the Day market's sports context. Every field is provider-owned and nullable.
        - `label` string, nullable — Team display label as it appears on the market outcome (e.g. "Portugal").
        - `short_label` string, nullable — Abbreviated team label (e.g. "POR").
        - `full_name` string, nullable — Full team or competitor name (e.g. "Portugal national football team").
        - `provider_id` integer, nullable — Provider team identifier (Polymarket /teams id).
        - `logo` string, nullable — Team crest or flag URL (provider-owned: Polymarket /teams crest for clubs, country flag for national teams and tennis players).
        - `color` string, nullable — Team brand color as a hex string (provider-owned).
        - `record` string, nullable — Win-loss record as a display string (e.g. "12-4").
        - `score` string, nullable — Live or final score as a display string when the game is in play or settled.
      - `no_team` PickSportsTeam — A single sports team or competitor in a Pick of the Day market's sports context. Every field is provider-owned and nullable.
        - `label` string, nullable — Team display label as it appears on the market outcome (e.g. "Portugal").
        - `short_label` string, nullable — Abbreviated team label (e.g. "POR").
        - `full_name` string, nullable — Full team or competitor name (e.g. "Portugal national football team").
        - `provider_id` integer, nullable — Provider team identifier (Polymarket /teams id).
        - `logo` string, nullable — Team crest or flag URL (provider-owned: Polymarket /teams crest for clubs, country flag for national teams and tennis players).
        - `color` string, nullable — Team brand color as a hex string (provider-owned).
        - `record` string, nullable — Win-loss record as a display string (e.g. "12-4").
        - `score` string, nullable — Live or final score as a display string when the game is in play or settled.
      - `game_id` integer, nullable — Provider game identifier (Polymarket Gamma gameId); omitted when null.
      - `event_matchup` boolean, required — Always present. True when the two teams are the parent-event match identity for a teamless binary leg (e.g. a draw, totals, or prop market), not the market's own outcomes.
      - `event_subject_team` PickSportsTeam — A single sports team or competitor in a Pick of the Day market's sports context. Every field is provider-owned and nullable.
        - `label` string, nullable — Team display label as it appears on the market outcome (e.g. "Portugal").
        - `short_label` string, nullable — Abbreviated team label (e.g. "POR").
        - `full_name` string, nullable — Full team or competitor name (e.g. "Portugal national football team").
        - `provider_id` integer, nullable — Provider team identifier (Polymarket /teams id).
        - `logo` string, nullable — Team crest or flag URL (provider-owned: Polymarket /teams crest for clubs, country flag for national teams and tennis players).
        - `color` string, nullable — Team brand color as a hex string (provider-owned).
        - `record` string, nullable — Win-loss record as a display string (e.g. "12-4").
        - `score` string, nullable — Live or final score as a display string when the game is in play or settled.
    - `disclaimer` string, required — Risk disclaimer shown with every pick.
  - `meta` ResponseMeta, required
    - `request_id` string, required — Unique request ID (req_ prefix).
    - `cached` boolean, required
    - `cache_age_s` integer, nullable — Cache age in seconds, null if not cached.

## Other responses

- `304` — Not Modified. Returned when If-None-Match matches the current Pick of the Day payload.
- `401` — Missing or invalid API key
- `402` — Active Insider subscription required
- `403` — Account access denied
- `404` — Resource not found
- `408` — Request exceeded the server's 30-second transport timeout. The timeout response has an empty body because it is generated before handler-level JSON error shaping.
- `423` — Account is locked
- `429` — Rate limit exceeded (100 req/min; batch endpoints also reserve 100 batch item units/min before execution)
- `503` — Redis-backed authenticated rate limiter unavailable; retry after the per-process outage cooldown

## Changes

- **2026-07-05** `846e733b796d` — 1 info
  - added the optional property `data/game_started` to the response with the `200` status
- **2026-07-04** `b9a0a1fb0742` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/0xinsider/apis/0xinsider-api/changes/api/v1/pick-of-the-day/get.md)

---

[API](https://skmtc.dev/0xinsider/apis/0xinsider-api.md) · [All operations](https://skmtc.dev/0xinsider/apis/0xinsider-api/llms.txt) · [OpenAPI document](https://skmtc.dev/0xinsider/apis/0xinsider-api/revisions/137fa0fd3297?raw)
