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:

PlanCredits/MonthRequests/MinutePublic API AccessPrice
Free1,00010All features$0
Starter150,00060All features$29/mo
Pro4,000,000200All features$149/mo
Business12,000,0001,000All features$299/mo
EnterpriseUnlimitedUnlimitedAll featuresCustom

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.

EndpointCredits per request
GET /v1/odds6
GET /v1/player-props8
GET /v1/events/:eventId/odds3
GET /v1/events/:eventId/player-props4
GET /v1/history/games4
GET /v1/trends/systems/:systemId/bets4
Every other data endpoint1
  • Every response carries x-credits-cost, what that call cost, and on plans with a monthly limit x-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 429 response.

MoneyLine AI Credit Bands

ScopeNaturalHybridStructured
Small (top 5)202717
Medium (top 12)476040
Large (top 25)9311373

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.

HeaderDescription
Retry-AfterReturned 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.

429 — Rate limit exceeded
{
  "success": false,
  "data": null,
  "meta": {
    "requestId": "ml_req_ab12cd34ef56"
  },
  "error": {
    "message": "Rate limit exceeded. 60 requests/minute allowed on Starter tier.",
    "statusCode": 429
  }
}