> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hyperdash.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Rate limits

> Request rate, burst, and concurrency limits, and how to back off.

Each workspace has a request rate (requests per second), a burst allowance, and a cap on concurrent requests, set by its [plan](https://docs.hyperdash.com/data-api/plans.md). Agent keys also carry a lower rate limit of their own.

| Plan | Requests per second | Burst | Concurrent requests |
| - | - | - | - |
| Starter | 25 | 50 | 4 |
| Growth | 100 | 200 | 16 |
| Scale | 200 | 400 | 32 |
| Enterprise | From 200 | From 400 | From 32 |
| Test keys | 5 | 10 | 2 |

The rate works as a token bucket: the bucket holds up to the burst size and refills at the request rate. Data responses carry the policy:

```
ratelimit-policy: 50;w=2
```

## When you are limited

Requests over the limit return `429` with a `Retry-After` header in whole seconds, and `retry_after_s` in the body:

```
HTTP/1.1 429 Too Many Requests
Content-Type: application/problem+json
Retry-After: 1

{
  "type": "https://data.hyperdash.com/errors/rate_limited",
  "title": "Too many requests",
  "status": 429,
  "code": "rate_limited",
  "detail": "Too many concurrent requests for this workspace",
  "retry_after_s": 1,
  "request_id": "019a3c4e-7b2d-7f10-9c4a-2e6d1b8f0a53"
}
```

Other limits that return `429`:

* `extraction_limit`: a [bulk extraction budget](https://docs.hyperdash.com/data-api/plans.md#bulk-extraction-limits) is used up.
* `jobs_limit`: more than 2 active async jobs, or more than 100 jobs in a day.

Throttled requests are free.

## Backing off

Wait for `Retry-After`, then double the wait on each further `429`, adding random jitter, up to 30 seconds. `503 upstream_busy` and most `503 unavailable` responses also carry `Retry-After`; retry them the same way.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.