Make your first Lumify Sports Intelligence API call in under 5 minutes.
Lumify is an agent-ready sports intelligence API. It returns structured schedules, live scores, odds, betting splits, and AI-generated bet intelligence (confidence scores, signal breakdowns, and narratives) across multiple sports.
- Sign up at lumify.ai/register
- Verify your email address
- Your Free Tier account includes 1,000 credits that never expire — no credit card required
- Log in and open the API Keys dashboard
- Click Create key
- Copy the key immediately — it is shown only once
Keys use the format lmfy-xxxxxx.yyyyyyyy… and are passed as a Bearer token on every request.
All /v1/* endpoints require the Authorization: Bearer header and return JSON.
curl "https://lumify.ai/v1/events?sport=mlb&status=scheduled" \
-H "Authorization: Bearer YOUR_API_KEY"Response:
{
"events": [
{
"id": 9199,
"name": "Atlanta Braves @ San Diego Padres",
"sport": "mlb",
"league": "mlb",
"status": "scheduled",
"starts_at": "2026-06-23 23:40:00",
"venue": { "id": 42, "name": "Petco Park", "city": "San Diego" }
}
],
"total": 1,
"next_after_id": null
}curl "https://lumify.ai/v1/events/9199/intelligence" \
-H "Authorization: Bearer YOUR_API_KEY"Response (abbreviated):
{
"event_id": 9199,
"available": true,
"has_recommend": true,
"analyst_take": "Sharp money has moved toward San Diego through the morning...",
"bets": [
{
"bet_type": "ML_P1",
"player_name": "San Diego Padres",
"tier": "moderate",
"confidence_score": 0.611,
"rationale": ["Strong Starting Pitching Edge (20/25)", "Deep Research supports this bet (+3.1pp)"],
"attribution": ["pitching_edge", "deep_research"]
}
]
}
bets[]has two shapes — branch, don't assume. The example above is the points model, returned for MLB, tennis, NFL, NCAAF, FIFA World Cup soccer, and club soccer leagues other than MLS. MLS returns the probability model instead: each bet carries a calibratedprobability, a vig-freefair_price, and the components behind them (p_market,p_model,blend_w,edge,sufficiency,drivers) — and noconfidence_score,coverage,signals, orvalidator.Detect the shape by checking which of
probability/confidence_scoreis present. Full per-field definitions for both shapes: API reference.
| Endpoint | Purpose |
|---|---|
GET /v1/sports |
Supported sports, leagues, and current seasons |
GET /v1/events |
Paginated, filterable event list |
GET /v1/events/{id} |
Full event detail (optionally ?include_odds=true, ?include_intelligence=true) |
GET /v1/events/{id}/score |
Lightweight live-score snapshot |
GET /v1/events/{id}/odds |
Current moneyline, spread, and total lines |
GET /v1/events/{id}/odds/history |
Line movement history |
GET /v1/events/{id}/splits |
Public betting splits (bets % vs handle %) — MLB, NBA, NHL, NFL only; not tennis/soccer/NCAAF |
GET /v1/events/{id}/stats |
Raw team/match stats — form, H2H, rates, standings (Data layer; soccer only) |
GET /v1/events/{id}/intelligence |
Per-bet analysis — two shapes: probability/fair price (MLS) or confidence score/signals (all other sports) |
GET /v1/players |
Player/team lookup |
GET /v1/players/{id} |
Player or team profile |
GET /v1/players/{id}/events |
Player/team schedule and results |
- Each API call costs 1 credit. Compound calls add credits:
include_odds=trueadds +1 credit for a single book (default Pinnacle) or +2 credits forbookmaker=all/ a comma-separated list;include_intelligence=trueadds +1 credit. Standalone multi-bookmaker odds (bookmaker=allor a list) also cost 2 credits. - Failed requests (
4xx/5xx) do not consume credits. - Rate limits are enforced per API key on a sliding 60-second window. Every response
includes
X-RateLimit-*headers so you can throttle proactively. Exceeding the limit returns429 Too Many Requestswith aretry_aftervalue.
- API Reference — full endpoint documentation with curl, Python, and JavaScript examples
- Pricing — plans and credit allowances
- FAQ — data coverage, billing, and integration questions
| Issue | Solution |
|---|---|
401 Unauthorized |
Check the key is correct, active, and passed as Authorization: Bearer lmfy-… |
402 Payment Required |
Credits exhausted or daily free-tier cap hit — switch on error.code (insufficient_credits, daily_credit_cap_exceeded) and follow upgrade_url / topup_url. daily_credit_cap_exceeded includes resets_at (rolling 24h window) |
429 Too Many Requests |
You exceeded your plan's rate limit — back off and retry after the window resets |
available: false on intelligence/odds |
The pipeline has not computed data for this event yet — poll again shortly |
Need help? Contact support@lumify.ai