Skip to main content
GET
cURL
Use this endpoint to read picks as they are released. Automatic selections publish 30 to 45 minutes before their own kickoff, once qualification and final checks are complete, and a day can have up to 15 qualifying picks. One game can contribute up to 2 verified compatible selections. The supported pair combines a team’s full-game moneyline and handicap selections; each selection still qualifies individually. Same-game picks share exposure and need not be independent. Retain each pick_id instead of deduplicating selections by game. Each pick keeps its own entry authorization and expiry. New selections use a neutral presentation order. publication_order gives their order within the date; it does not rank their quality. Selections retain their chosen market, side, and identity through release. An explicitly scheduled selection waits for its returned release_at. Cancelled or already-started games remain unavailable, and missing market data can delay publication. Later additions fill available slots. Historical order and proofs remain unchanged. Withdrawn picks are excluded from current and dated recommendations, the archive, and its statistics, even after market settlement. The public ledger retains their original identities and proof bytes. When no active pick is available, the endpoint returns 404 with a time for your next read; use that time to schedule a request. For past results, use Pick of the Day archive. To verify an unchanged settled pick, use Pick of the Day ledger.

Key response fields

The spec block below has every other field, including holders, thesis, and disclaimer. New execution permission is issued only while the pick remains eligible. An earlier selection alone does not grant entry permission. For a future automated entry, honor the returned authorization and its expiry. New preparation or refresh refuses an older authorization above 0.85; an already issued private snapshot can retain its existing grant until refresh. A missing authorization means skip the automated entry, and the $100 reference depth does not replace a current book check for your order size.

Tennis rankings

When a tennis participant has ranking, read rank with tour to display its ATP or WTA singles ranking. source is api_tennis. observed_at is the UTC retrieval time. Hide the rank after expires_at, including when you display a cached response. API-Tennis supplies no publication date; do not present observed_at as one. This is the latest retrieved ranking, not the player’s ranking at match time. ranking is absent for unranked, ambiguous, doubles, expired, or unavailable participants.

Sporting scores

Read each participant’s score in sports_context.yes_team and sports_context.no_team. For tennis, sets_won gives the match score, and sets carries the available set scores. Once a settled pick has a verified final score, that score remains available after the live feed stops publishing it. Only results verified for the same game are retained; this includes postponed games played on a later date. A settled market does not prove that the game has ended or supply its final score. If no verified final is available, the score remains unavailable. Do not infer it from outcome, the market price, or a different game between the same participants.

Entry ceilings and actual prices

The API ceiling is fixed when the grant is first issued; it does not follow later price changes or reset at publication. The reference ask can therefore predate the published midpoint in backed_price. Existing grants are not rewritten when the allowance changes. For a BUY, check the current executable order book price for your stake before submission and cap the order’s share price at max_entry_price. Apply any stricter client limits too. The auto-buy trader defaults to 3% above backed_price, so a 5-cent API allowance does not promise a 5-cent increase above the published price. The ceiling is not a quote, an order price, or a recorded fill. An actual order can fill at several prices at or below its submitted BUY limit, and its average fill price is known after execution. The API’s modeled return still uses the frozen backed_price, not your account’s fill price; fees are additional.

Pick access

Pro opens the designated free selection and the first 4 nonfree selections in publication order, for 5 daily picks in total. Max opens every available published pick up to 15 and includes all Pro features. A thin day has fewer picks; neither plan guarantees its full daily limit. A Pro response places other unresolved published and scheduled selections in locked_picks. Read the returned access fields instead of inferring access from a slot number. Each descriptor contains only pick_rank and required_tier: "max"; it reveals no game, market, participant, price, link, or identifying time. If only locked ranks have published, the endpoint succeeds with state: "none", picks: [], and pick_count: 0, plus locked_picks and a message to upgrade. This is different from pick_not_released or a proof-warming error. Included resolved rows remain public, and the ledger retains every published commitment. The response schema has separate full and none branches. Full picks retain their existing selection fields and required nullable supersedes_pick_id. The empty entitlement branch omits selection IDs and game identity, and returns supersedes_pick_id: null. The website uses a different schedule projection: an unauthorized website slot can appear as a redacted descriptor with required_tier and no clocks. Do not parse the website response as the public API schedule.

Recorded lead wallet

A full newly certified pick can include lead_backer, the recorded lead wallet’s identity, position, and directional category history. Legacy picks omit it and retain their recorded evidence. An omitted object also means the recorded lead facts are unavailable; do not invent a wallet or zero-valued record. On newly certified picks, display_holders lists the lead first, then any verified supporters, then the other graded wallets that held the backed side at publication, ordered by shares. Only the lead and supporters are verified: the other rows are gross holdings on the backed side and may also hold the other side. The bounded S/A holders projection, holder_count, and the wallet counts cover only the certified wallets. backed_sharp_usd, when available, sums their recorded position values; gross flow and consensus fields are omitted, and lead_backer replaces the optional legacy qualifying_expert display. Show the event record as profitable_event_count out of directional_event_count, with category beside it. Multiple market positions in one event contribute one combined event result. Keep the profit and ROI with that record; a live wallet win rate uses a different sample and must not label this recorded history. An older server response can omit profitable_event_count. Treat a missing count as unavailable, not zero. Label both clocks when you render these facts. Positions can change afterward, and the wallet’s history is not this pick’s probability of winning.

When a pick releases

The day follows the America/New_York calendar. The daily release window runs from midnight to 23:30 US Eastern time. Automatic selections publish after qualification and final checks instead of waiting until 30 minutes before kickoff. An explicitly scheduled selection keeps its returned release_at; do not calculate it from kickoff. The chosen market and side remain fixed after selection. Actual publication can trail release_at while the record is prepared or provider facts are unavailable. Cancelled, closed, or invalid markets can prevent release. A day with no qualifying selections has no published picks. Until the first pick of the day is published, the route returns 404 with error.code not_found and error.reason pick_not_released. Branch on the reason, because error.code is a frozen contract. The 404 is a schedule, not an outage, and on a skipped day it lasts the whole day.
  1. Read Retry-After (seconds) or error.retry_at (an RFC3339 instant). Both recommend the next moment to read; earlier publication remains possible.
  2. Hand that instant to a cron job, a queue, or a timer, and end the request.
  3. Do not sleep a worker on it and do not poll. The next selection may not be ready yet.
New Pick of the Day email, Discord, and inbox notifications link to https://0xinsider.com/pick-of-the-day/picks/{pick_id}. This page opens the selection identified by pick_id, even when another selection is released later. A replacement has its own ID and page; the earlier ID continues to identify the earlier selection. Opening the page keeps the selection’s Free, Pro, or Max access requirement. Earlier emails and messages keep their original URLs, and dated pick links continue to work.

Example

What it does not return

  • A prior day’s pick. A settled game never appears as today’s, so an automated client never acts on a finished market. Past picks and the running record are on Pick of the Day archive.
  • Game identity or clocks for an unauthorized unresolved rank. A locked descriptor is not a game you should enrich through another endpoint.
  • Extra picks to fill a daily target. A day with fewer qualifying markets returns fewer picks, and a skipped day returns none.
  • A price you can trade at. backed_price is the order book midpoint frozen at publication, and every pick carries a disclaimer.
  • A fair price or an expected value. entry_authorization.max_entry_price bounds how far the price may drift before an automated entry stops, and nothing more. The auto-buy guide shows how one client uses it.
  • Proof that the pick was fixed before the game. That proof is the hash on Pick of the Day ledger.

Caching

Save the response’s ETag and send it in If-None-Match on your next request. If today’s pick set has not changed, the server returns 304 Not Modified with no body.

Authorizations

Authorization
string
header
required

Legacy default or named integration API key, or OAuth 2.1 access token, in the Authorization header as Bearer oxi_sk_live_... or Bearer oxi_at_.... Default keys retain full access; integration keys are limited to their approved read, webhooks, export and usage scopes and expire within 90 days. All credentials share the owner's account limits. Data calls require an active Pro subscription and return live data. A 401 carries WWW-Authenticate: Bearer resource_metadata="https://api.0xinsider.com/.well-known/oauth-protected-resource" (RFC 6750 section 3, RFC 9728).

Headers

X-Query-Validation
enum<string>

Opt into strict query-name validation. The default is compatible: unknown names are ignored and reported in X-Query-Ignored. With strict, an unknown name returns 400 bad_request with error.reason unknown_query_parameter before the handler runs, including when its percent escape is incomplete.

Available options:
strict
If-None-Match
string

Conditional GET validator from a previous ETag. Matching values return 304 Not Modified with an empty body.

Response

Today's entitled Pick of the Day slate, or an identity-free locked response when no entitled picks are published.

object
string
required
Allowed value: "pick_of_the_day"
data
object
required
meta
object
required