Rate limits and quotas

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 limitPer hourCounts
Models40POST /v1/models and POST …/versions
Predictions600POST /v1/predictions, …/batch (one hit per batch) and …/predict
Explanations120POST /v1/explanations
Analyses30POST /v1/analyses
Tensor uploads20,000PUT …/structure/tensors/{key}; a large model is thousands of tensors
API keys20POST /v1/api-keys
Sign-in / sign-up20 / 5 per IPLogin 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.

429 Too Many RequestsRetry-After: 1480
{
  "error": {
    "type": "rate_limit_error",
    "code": "rate_limited",
    "message": "Too many explanations. Try again later.",
    "details": {"limit": 120, "window_s": 3600}
  }
}
403 ForbiddenResponse
{
  "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"}
  }
}
GET /v1/organizationthe quotas field
{
  "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
  }
}