Rate Limits & Credits
Every API key is subject to rate limits and credit allowances based on the plan it belongs to. Credits are tracked at the account level (not per key) and reset at the start of each billing cycle. All plans can use every public endpoint, so plans differ by usage capacity rather than feature access.
Limits by Plan
The table below outlines the credit allowances and rate limits for each plan:
| Plan | Credits/Month | Requests/Minute | Public API Access | Price |
|---|---|---|---|---|
| Free | 1,000 | 10 | All features | $0 |
| Starter | 150,000 | 60 | All features | $29/mo |
| Pro | 4,000,000 | 200 | All features | $149/mo |
| Business | 12,000,000 | 1,000 | All features | $299/mo |
| Enterprise | Unlimited | Unlimited | All features | Custom |
How Credits Work
Data requests cost 1 credit each, except odds, player props and the per-game history routes. MoneyLine AI requests use fixed credit bands based on request scope and output format. Credits are tracked at the account level, so all API keys under your account share the same credit pool and the same monthly allowance.
| Endpoint | Credits per request |
|---|---|
GET /v1/odds | 6 |
GET /v1/player-props | 8 |
GET /v1/events/:eventId/odds | 3 |
GET /v1/events/:eventId/player-props | 4 |
GET /v1/history/games | 4 |
GET /v1/trends/systems/:systemId/bets | 4 |
| Every other data endpoint | 1 |
- Every response carries
x-credits-cost, what that call cost, and on plans with a monthly limitx-credits-remaining. - MoneyLine AI consumes a fixed band per request, with retrieval and generation usage reported in the response metadata.
- Business tier supports overage billing at $0.00015 per credit beyond the 12M monthly allowance.
- Auto-upgrade is on by default: when you pass your plan's credits, your saved card is charged for the next plan and the request goes through. Turn it off in the dashboard to stop at your limit instead.
- If auto-upgrade is disabled and you exceed your limit, the API returns a
429response.
MoneyLine AI Credit Bands
| Scope | Natural | Hybrid | Structured |
|---|---|---|---|
| Small (top 5) | 20 | 27 | 17 |
| Medium (top 12) | 47 | 60 | 40 |
| Large (top 25) | 93 | 113 | 73 |
AI responses include meta.creditUsage with the total charge plus retrieval and generation shares for transparency.
429 Headers
The API does not currently emit per-request rate-limit status headers such as X-RateLimit-Remaining. When you exceed the per-minute rate limit, the server returns a Retry-After header with the number of seconds to wait before retrying.
| Header | Description |
|---|---|
| Retry-After | Returned on 429 rate-limit responses. Currently set to 60 seconds. |
Exceeding the Limit
If you exceed your per-minute rate limit or your monthly credit allowance (with auto-upgrade disabled), the API will return a 429 Too Many Requests response. For per-minute throttling, wait for the window to reset before retrying and honor the Retry-After header.
{
"success": false,
"data": null,
"meta": {
"requestId": "ml_req_ab12cd34ef56"
},
"error": {
"message": "Rate limit exceeded. 60 requests/minute allowed on Starter tier.",
"statusCode": 429
}
}