Getting started
Rate limits
Every workspace has three separate limits: monthly call budget, requests-per-second, and concurrent requests. Each ticks independently.
Limits by plan
| Plan | Calls / mo | Rate | Concurrent |
|---|---|---|---|
| Free | 5,000 | 10 req/s | 5 |
| Developer | 50,000 | 100 req/s | 50 |
| Pro | 500,000 | 1,000 req/s | 500 |
| Enterprise | Custom | Custom | 1,000+ |
Response headers
Every response includes usage state:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1712339400
X-Concurrent-Limit: 50
X-Concurrent-Active: 12When you hit a limit
Exceeded requests return HTTP 429 with a Retry-After header (seconds). We recommend exponential backoff starting at the suggested retry value.
HTTP/1.1 429 Too Many Requests
Retry-After: 3
Content-Type: application/json
{
"error": "rate_limited",
"message": "100 req/s ceiling hit; retry in 3s",
"retry_after_ms": 3000
}Concurrency vs. rate
Rate limits count request starts. Concurrency counts in-flight browsers. A long crawl consumes concurrency for its whole duration but only one rate slot at launch.