Skip to content
DEEP PICK DEVELOPERS

One ledger.
Built to travel.

Reliable, read-only access to every official DEEP pick as it publishes and grades—the same canonical record shown on our public ledger.

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
  • Market, period, line, odds, and units
  • 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.

  • Full normalized pick on every event
  • Idempotent upsert by pick.id
  • Durable checkpoint for the next poll
Request 5 events
PARTNER 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.

Sealed fields stay sealedPick identity, selection, odds, units, and publish time do not rewrite when a grade appends.
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,
  "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 let us add gateway keys or partner plans 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