Developer API
Pull today's Power & Premium Projections and your graded history as clean JSON over a Bearer-authenticated REST endpoint. Build your own dashboards, alerts, and models on top of the EdgeDesk engine.
Requires an active Quant Desk plan
The Developer API is included with Quant Desk ($149/mo) and its annual plan. Keys issued to any lower plan cannot pull projections — the endpoint returns 403 until you upgrade.
Authenticate with a Bearer key
Every request must include your personal key in the Authorization header. Keys are prefixed es_live_ and are issued from Dashboard → API Access. Treat it like a password — anyone with your key can pull your plan's projections. Rotate it any time from the same panel.
Authorization: Bearer es_live_xxxxxxxxxxxxxxxxGet projections
Returns today's slate for the sports and products your plan covers, or your recently graded history. Canonical numeric fields include their units in the name: confidence is 0–100 percent, model and market probabilities are 0–1 decimals, and edge is expressed in probability percentage points. The old confidence, edge, and modelProbability aliases remain temporarily for compatibility and are deprecated.
Machine-readable contract: /api/v1/openapi
| Param | Values | Description |
|---|---|---|
| status | today | graded | today (default) returns the current plan-gated slate. graded returns recently settled projections with results and CLV. |
| sport | mlb, nba, wnba, nhl, soccer, ncaab, ncaaw … or all | Filter to one sport (lowercase). Defaults to all. |
| product | premium | power | all | Filter to a projection product line. Defaults to all. |
| limit | 1–100 | Max rows returned. Defaults to 50, capped at 100. |
| include_locked | true | false | On status=today, also return a locked[] array of projections above your plan (metadata only, no values). |
Copy-paste curl
Pull today's Premium MLB projections. Swap the key for your own and adjust the query params.
curl -H "Authorization: Bearer es_live_xxxxxxxxxxxxxxxx" \
"https://edgeslatesports.com/api/v1/picks?status=today&sport=mlb&product=premium"JSON response shape
Every response is { status, meta, data }. meta carries the slate day, your resolved plan, the applied filters, a row count, and a compliance disclaimer. data is an array of projections.
status=today — live slate:
{
"status": "ok",
"meta": {
"schemaVersion": "edgeslate.developer-api.v1",
"units": {
"confidencePercent": "percent (0-100)",
"modelProbabilityDecimal": "decimal probability (0-1)",
"marketProbabilityDecimal": "decimal probability (0-1)",
"edgeProbabilityPoints": "percentage-point difference"
},
"day": "2026-07-04",
"status": "today",
"plan": "all_access_monthly",
"sport": "mlb",
"count": 2,
"lockedCount": 0,
"generatedAt": "2026-07-04T15:00:00.000Z",
"disclaimer": "Projections are for research and informational purposes only. EdgeSlate is analytics software, not a sportsbook, and does not accept wagers."
},
"data": [
{
"id": "mlb-2026-07-04-nyy-bos-ml",
"day": "2026-07-04",
"sport": "mlb",
"league": "MLB",
"matchup": "New York Yankees vs Boston Red Sox",
"startTime": "2026-07-04T23:05:00Z",
"projection": "Yankees Moneyline",
"market": "Moneyline",
"side": "home",
"team": "New York Yankees",
"opponent": "Boston Red Sox",
"confidencePercent": 64,
"edgeProbabilityPoints": 4.2,
"modelProbabilityDecimal": 0.61,
"marketProbabilityDecimal": 0.568,
"priceAmerican": -135,
"marketLine": null,
"product": "premium",
"starRating": 4,
"confidence": 0.64,
"edge": 4.2,
"modelProbability": 0.61,
"locked": false
}
]
}status=graded — settled history adds result, finalScore, units, closingPriceAmerican, and clvProbabilityPoints:
{
"status": "ok",
"meta": { "schemaVersion": "edgeslate.developer-api.v1", "status": "graded", "plan": "all_access_monthly", "sport": "mlb", "count": 1, "disclaimer": "…" },
"data": [
{
"id": "mlb-2026-07-02-lad-sf-ml",
"day": "2026-07-02",
"sport": "mlb",
"matchup": "Los Angeles Dodgers vs San Francisco Giants",
"projection": "Dodgers Moneyline",
"market": "Moneyline",
"priceAmerican": -160,
"confidencePercent": 67,
"edgeProbabilityPoints": 3.1,
"modelProbabilityDecimal": 0.67,
"marketProbabilityDecimal": 0.639,
"product": "power",
"result": "win",
"finalScore": "5-2",
"units": 1.0,
"closingPriceAmerican": -172,
"clvProbabilityPoints": 1.4,
"gradedAt": "2026-07-03T04:12:00Z"
}
]
}Limits and error codes
Requests are limited to 60 per minute per key. Every response returns X-RateLimit-Limit and X-RateLimit-Remaining from the shared counter, plus X-RateLimit-Reset. Over the limit you get a 429 with a Retry-After header. Errors are shaped { status: "error", error: { code, message } }.
| Status | Code | Meaning |
|---|---|---|
| 401 | missing_api_key / invalid_api_key | No es_live_ key, or the key is not recognized. |
| 403 | quant_desk_required | Valid key, but the owner has no active Quant Desk entitlement. Upgrade to enable. |
| 429 | rate_limited | Over 60 req/min. Honor the Retry-After header. |
| 200 | degraded / no_publication | Always 200 with an empty data: [] when the slate is empty or upstream is briefly unavailable — never a hard 500. |
Ready to build on the engine?
The Developer API ships with Quant Desk. Upgrade, mint your key from the dashboard, and start pulling projections in minutes.