Rate Limiting

API rate limits by plan tier, response headers, and handling exceeded limits.

Rate Limits by Plan

API requests are rate-limited per user to ensure fair usage and platform stability.

PlanRequests/minuteSynthesis/minuteStreaming/minute
Trial301010
Pro1201030
Growth3001060

Response Headers

Every API response includes rate-limit headers:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets

Usage-Based Limits

In addition to request rate limits, certain operations have usage-based limits tied to your subscription plan:

ResourceTrialProGrowth
Research sources10100500
Agent runs (credits)10100500
Documents550200
Syntheses per day320100
API calls per day1005,00025,000

When Limits Are Exceeded

Rate Limit Exceeded (HTTP 429)

When you exceed the per-minute rate limit, the API returns a 429 Too Many Requests response:

{
  "code": "RATE_LIMIT_EXCEEDED",
  "message": "Rate limit exceeded. Retry after 12 seconds.",
  "details": {
    "retry_after": 12
  }
}

Best practice: Implement exponential backoff. Wait for the duration indicated by the X-RateLimit-Reset header before retrying.

Usage Limit Exceeded (HTTP 402)

When you exceed a usage-based limit (e.g., max research sources), the API returns a 402 Payment Required response:

{
  "code": "USAGE_LIMIT_EXCEEDED",
  "message": "File upload limit reached for your plan.",
  "details": {
    "usage_type": "file_upload",
    "current": 10,
    "limit": 10,
    "plan": "trial",
    "upgrade_required": true
  }
}

Resolution: Upgrade your plan or purchase a compute boost pack via the billing API.

Was this helpful?