POSTERIOR · DEVELOPERS DESK
API OPEN
Builder API · v1

Build on the MLB desk. Keep the receipts.

Bring Posterior's supported probabilities, immutable decisions, market states, public evidence, and player context into a research product, internal dashboard, agent, or bot—with one versioned, bearer-protected contract.

10 production operations100 requests/minute per active keyOpenAPI public to inspect
Subscribe

A clear path to a production key.

Builder is an explicit machine-access add-on to Posterior Pro. There is no application queue and no hidden key entitlement: checkout preserves your Builder intent from start to finish.

Pro
$29/mo

USD per month · base subscription

+ Builder API
+$99/mo

USD per month · step 2 add-on

Total
$128/mo

USD per month · before applicable tax

Builder is two explicit subscriptions: activate Pro first, then return automatically to approve the +$99 USD/month API add-on. Combined list price: $128 USD/month before applicable tax.

API sandbox

Inspect the contract before a key exists.

Inspect the public schema and delayed evidence before a key exists, then compare them with representative bearer-protected request shapes. Production endpoints require active Pro plus the Builder add-on.

GET · public schema
/api/v1/openapi.json

Public OpenAPI 3.1 contract for the complete v1 operation catalog.

No key is required for the OpenAPI schema or delayed public CSV. Production v1 operations use POSTERIOR_KEY; API keys are one-time reveal secrets, so store them in an environment variable.

Sandbox request
GET /api/v1/openapi.json
Accept: application/json
Sandbox response
{
  "openapi": "3.1.0",
  "info": { "title": "Posterior API", "version": "v1" },
  "paths": { "/api/v1/picks/today": { "get": { ... } } }
}
What unlocks

What a Builder key actually gives you.

The API is designed for products that need model context and auditability—not a black-box tip feed. Every capability below is in the published v1 contract today.

GET /picks/today · /decisions/today

Live slate + locked decision board

Current eligible picks, the immutable at-lock board, ranked Top 25, and explicit BET / WAIT / PASS reasons. Use the current slate for execution context and the lock archive for receipts.

GET /markets

Full market explorer

Normalized cached quotes and market states across posted lines, with model, calibration, freshness, rollout, and official-eligibility status. It never spends odds-provider credits.

GET /player/{id} · /accuracy · /calibration

Player intelligence + proof

Player posterior and trajectory, recent prediction history, accuracy snapshots, and predicted-versus-actual calibration buckets for your own tables and charts.

GET /parlays · POST /parlays/builder · widgets

Parlay and presentation primitives

Curated parlay tiers, constrained theoretical cross-game builder results, and non-actionable win-probability JSON or SVG-card widgets for product surfaces.

Deliberate boundaries: no sportsbook execution, no API key in a query string, no resale or bulk republication, and no fabricated executable price when a quote or joint model is unavailable.

Selected endpoints · v1
MethodPathCache
GET
/api/v1/picks/today

Tonight's STRONG/LEAN slate + v0 NRFI + pitcher-K predictions, with signal breakdown.

30s cache
GET
/api/v1/player/{id}

Player memory: current posterior, true-talent trajectory, recent prediction ledger, and survival diagnostics.

1m cache
GET
/api/v1/accuracy

Live Brier score, win-rate by tier, model EV at close. Same numbers the public dashboard renders.

2m cache
GET
/api/v1/calibration

Calibration buckets — predicted-vs-actual rates per probability bin. Plot it however you want.

5m cache

The public OpenAPI 3.1 contract at /api/v1/openapi.json is the complete operation catalog. The examples above are four representative bearer-protected endpoints, not the entire API.

Quickstart

Issue a key at /mlb/account, then pipe the secret into a Bearer header. The same request, three idioms:

curl
$ curl -H "Authorization: Bearer $POSTERIOR_KEY" \    https://posterior.pro/api/v1/picks/today
typescript
const res = await fetch(
  "https://posterior.pro/api/v1/picks/today",
  { headers: { Authorization: `Bearer ${process.env.POSTERIOR_KEY}` } }
);
const { picks, ext_markets } = await res.json();

for (const pick of picks) {
  console.log(
    pick.decision.action,
    pick.decision.fair_price.label,
    pick.decision.best_line.label
  );
}
python
import os, httpx
r = httpx.get(
    "https://posterior.pro/api/v1/picks/today",
    headers={"Authorization": f"Bearer {os.environ['POSTERIOR_KEY']}"},
)
slate = r.json()

Response shape (truncated):

json
{
  "api_version": "v1",
  "generated_at": "2026-05-26T17:42:11.103Z",
  "game_date_et": "2026-05-26",
  "picks": [
    {
      "prediction_id": "pred_01HXJ6V…",
      "batter_name": "Aaron Judge",
      "team_name": "New York Yankees",
      "market": "1plus_hits",
      "p_predicted": 0.7124,
      "sharp_consensus_prob": 0.6680,
      "sharp_book_american_odds": -110,
      "sharp_source_book": "FanDuel",
      "tier": "STRONG",
      "signals": {
        "park_adj": 1.04,
        "pitcher_adj": 0.96,
        "lineup_confirmed": true,
        "form_adj": 1.06,
        "weather_adj": 0.98
      },
      "decision": {
        "action": "BET",
        "is_actionable": true,
        "reason": "Qualified edge with a captured playable line.",
        "fair_price": { "american_odds": -248, "label": "-248 fair" },
        "best_line": {
          "bookmaker": "FanDuel",
          "american_odds": -110,
          "label": "FanDuel -110",
          "captured": true
        },
        "market_trust": {
          "label": "Core",
          "note": "Highest-trust season-ledger family."
        },
        "context": {
          "badges": ["Lineup confirmed", "Recent form +6%"],
          "lineup_confirmed": true,
          "form_adj": 1.06,
          "weather_adj": 0.98,
          "game_state": "PRE"
        },
        "proof": [
          "Model 71.2%",
          "Sharp 66.8%",
          "Edge +4.4pp",
          "STRONG tier"
        ]
      }
    }
  ],
  "ext_markets": { "moneylines": [ ... ], "nrfi": [ ... ], "strikeouts": [ ... ] }
}
AI-native

Wire Posterior into an agent, Discord bot, notebook, or internal dashboard with ordinary HTTPS fetches. Your tool asks what Posterior says about tonight's slate; the API returns model probabilities with the calibration receipt attached.

Note: Packaged SDKs and agent integrations are not advertised as live until their packages, manifests, and install paths are published. For launch, the supported contract is the REST v1 surface and OpenAPI schema.
What you get

Builder exposes supported, versioned machine contracts rather than promising that every website field exists in every endpoint. Responses preserve the same evidence and uncertainty boundaries used by the product; coverage is defined by the published OpenAPI schema.

Public OpenAPI, the delayed resolved CSV, and the public record can be inspected without a Builder key. Production operations require active Pro plus the Builder add-on; standard activation does not require a manual application. The current contract also includes bearer-protected, non-actionable win-probability JSON and SVG-card widget operations. The calibration receipt at /mlb/accuracy is the load-bearing public claim on both sides. Subscriber and API exports may not be resold, scraped, mirrored, or bulk-republished without written permission; see the terms.

Stay current

Optional changelog list — one email per major endpoint release. Not required to subscribe; the existing API works today without it.

Developers — Posterior API