429 Too Many Requests response.
Rate limits by plan
Rate limits are applied per organization, per endpoint. Limits are expressed in requests per minute (RPM):| Plan | Requests per minute |
|---|---|
| Developer (free) | 10 |
| Hobbyist | 25 |
| Start-Up | 100 |
| Enterprise | 250 |
Rate-limited endpoints
The following endpoints enforce rate limits:| Endpoint | Method |
|---|---|
/browsers | POST |
POST /browser-pools, PUT /browser-pools/:id, POST /invocations) have rate limiting infrastructure in place and may be enforced in the future.
Response headers
When a rate-limited endpoint is called, the API includes these headers in the response:| Header | Description | Example |
|---|---|---|
X-RateLimit-Limit | Maximum number of requests allowed (burst capacity) | 100 |
X-RateLimit-Remaining | Number of requests remaining in the current window | 47 |
| Header | Description | Example |
|---|---|---|
Retry-After | Seconds to wait before retrying | 3 |
How Retry-After is calculated
Kernel uses a token bucket algorithm for rate limiting. Each organization gets a bucket with capacity equal to the RPM limit. The bucket refills at a steady rate (capacity / 60 tokens per second). TheRetry-After value is the number of seconds until enough tokens have refilled to allow the request, with a minimum of 1 second.
Example rate-limited response
Handling rate limits
When you receive a429 response:
- Read the
Retry-Afterheader to determine how long to wait - Wait for the specified number of seconds
- Retry the request
X-RateLimit-Remaining header to proactively throttle requests before hitting the limit.
If you need higher rate limits, contact us about the Enterprise plan or request a custom override.