Skip to content
DEEP PICK DEVELOPERS

One ledger.
Built to travel.

Reliable, read-only access to the canonical DEEP record. Pregame entries are sealed, then reveal automatically when the event starts.

Public preview No key required Read only
quickstart
curl https://deep-pick.ai/api/public/v1/picks
200 · deep-pick.public-picks.v1
Source
The DEEP Ledger
Order
Oldest first
Page
100 default · 250 max
Cache
ETag + Last-Modified
Canonical by design.The page and API use one App-owned publication source. Battle contest picks never enter this feed.Inspect the ledger
THE SMALLEST USEFUL API

Two endpoints. No synchronization guesswork.

Import the full record once. Then consume only lifecycle changes.

GET/api/public/v1/picks

Historical and current picks

Cursor-paginated, oldest-first snapshots with stable DEEP numbers and each pick’s current grade.

  • Stable pick ID and DEEP number
  • Sealed pregame identity, sport, time, and unit tier
  • Market, selection, and odds after event start
  • Publish/grade times and proof links
Request 5 picks
GET/api/public/v1/events

Incremental change stream

An append-only cursor stream for publish, grade, void, and legitimate correction events.

  • Visibility-aware pick revision on every event
  • Idempotent upsert by pick.id
  • Durable checkpoint for the next poll
Request 5 events
INTEGRATION SYNC RECIPE

Easy for a script. Explicit enough for an agent.

Never manufacture a cursor and never infer an update from page order. Treat cursors as opaque, and use the complete pick embedded in each event as the latest revision.

Pregame means sealedNon-featured selections and odds stay hidden until event start. The original record then reveals without rewriting.
Corrections stay visibleA legitimate correction emits a new event for the same stable pick ID—never a duplicate bet.
Failure is explicitIf canonical verification fails, the API returns a problem response instead of stale or invented picks.
// 1. Import history once, oldest first.
GET /api/public/v1/picks?limit=250

// 2. Follow next_cursor while has_more is true.
GET /api/public/v1/picks?limit=250&cursor=OPAQUE_CURSOR

// 3. Poll changes. Upsert event.pick by event.pick.id.
GET /api/public/v1/events?cursor=CHECKPOINT_CURSOR

// 4. Drain next_cursor, then persist checkpoint_cursor.
STABLE V1 SHAPE

Only the fields a tracker needs.

No private analysis, model prompts, internal IDs, or Battle tape.

{
  "id": "00000000-0000-4000-8000-000000000001",
  "deep_number": 1,
  "visibility": "revealed",
  "sport": "mlb",
  "event": {
    "name": "Example Away at Example Home",
    "starts_at": "2026-08-23T20:10:00Z"
  },
  "market": {
    "type": "moneyline",
    "period": "first_5_innings",
    "line": null
  },
  "selection": "Example Home F5 ML",
  "odds": { "american": -115 },
  "units_risked": 1,
  "published_at": "2026-08-23T19:14:10Z",
  "graded_at": "2026-08-23T22:42:00Z",
  "status": "won",
  "result": { "grade": "W", "net_units": 0.87 },
  "links": {
    "official_x": null,
    "proof": "https://deep-pick.ai/proof/…"
  },
  "revision": {
    "updated_at": "2026-08-23T22:42:00Z",
    "sha256": "…"
  }
}
Poll responsibly

Responses cache at the edge for 15 seconds. Poll every 15 seconds or slower; public-preview fair use is 60 requests per minute per client.

Public now, evolvable later

V1 requires no API key. Stable routes and schemas allow managed access later without changing your data model.

Conditional requests

Send If-None-Match or If-Modified-Since. A 304 means your local copy is current.

READY TO INTEGRATE?

Start with the ledger. Stay current with events.

Download the contract Message @deep_pick
    Public Picks API | Deep Pick Developers