Rate limits and quotas
Hourly rate limits that protect the service, monthly plan quotas, and how to see where you stand.
Two kinds of limit apply. Rate limits are sliding one-hour windows per organization that protect the service; exceeding one returns 429 rate_limited with a Retry-After header, and the Python client retries automatically after that delay. Quotas are plan allowances; exceeding one returns 403 quota_exceeded and does not resolve by waiting a minute.
| Rate limit | Per hour | Counts |
|---|---|---|
Models | 40 | POST /v1/models and POST …/versions |
Predictions | 600 | POST /v1/predictions, …/batch (one hit per batch) and …/predict |
Explanations | 120 | POST /v1/explanations |
Analyses | 30 | POST /v1/analyses |
Tensor uploads | 20,000 | PUT …/structure/tensors/{key}; a large model is thousands of tensors |
API keys | 20 | POST /v1/api-keys |
Sign-in / sign-up | 20 / 5 per IP | Login and signup; verification emails 5 per IP and 3 per address |
Quotas on the free plan: 10 models, 5 API keys, and per calendar month 5,000 logged predictions, 500 explanations and 20 analyses. Counts are taken from stored rows, so deleting a model frees its slot and its logged predictions, and re-running a notebook that replaces its models does not add up. Paid plans raise every allowance; the pricing page has the tiers. Your organization's current limits and this month's usage are in quotas on GET /v1/organization.
An owner or admin can cap the organization below its plan with settings.quotas on PATCH /v1/organization, for example to stop a runaway job; raising a limit above the plan is a plan change.
{
"error": {
"type": "rate_limit_error",
"code": "rate_limited",
"message": "Too many explanations. Try again later.",
"details": {"limit": 120, "window_s": 3600}
}
}{
"error": {
"type": "permission_error",
"code": "quota_exceeded",
"param": "explanations_per_month",
"message": "The free plan allows 500 explanations this month. Upgrade or wait for the next cycle.",
"details": {"used": 500, "limit": 500, "plan": "free"}
}
}{
"plan": "free",
"limits": {
"models": 10,
"api_keys": 5,
"predictions_per_month": 5000,
"explanations_per_month": 500,
"analyses_per_month": 20
},
"usage": {
"models": 4,
"api_keys": 2,
"predictions_per_month": 1560,
"explanations_per_month": 27,
"analyses_per_month": 6
}
}