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

# Rate limits

> How many requests a key may make, and how to handle a 429.

| Limit | Value |
| - | - |
| Requests per key | 120 a minute |
| Write requests per key (prompt endpoints) | 20 a minute, within the 120 |
| Failed authentication per address | 30 a minute |
| Request body | 256 KB |

A request over a limit gets:

```http theme={"system"}
HTTP/1.1 429 Too Many Requests
Retry-After: 60

{ "error": { "code": "rate_limited", "message": "Rate limit exceeded…" }, "request_id": "…" }
```

Wait for the number of seconds in `Retry-After`, then retry. Every authenticated response carries `X-RateLimit-Limit: 120` and `X-RateLimit-Policy: 120;w=60`. The limiter does not report a remaining count, so pace yourself rather than counting down to zero.

## Staying well inside the limits

* **Ask for less, less often.** Data changes once a day, when the daily scan lands. Most integrations need one pull a day.
* **Use `group_by` instead of looping.** One visibility request grouped by `platform` and `date` replaces dozens of single-day calls.
* **Page with the cursor** rather than re-requesting with bigger ranges.
* **Back off exponentially** on `429` and `5xx`.

Need more? Email [hello@rankraft.ai](mailto:hello@rankraft.ai) with what you are building.


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