> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.hellodata.ai/llms.txt.

# Rate Limits

To ensure fair usage and maintain the performance and reliability of our API, we have implemented a rate-limiting mechanism.
This section provides an overview of the rate limits in place and how they affect API requests.

### Rate Limit Policy

Our API rate limiter is designed to limit the number of requests that a client can make to our API within a specified time window. This is achieved through the following policy:

* **Time Window**: The rate limit is applied on a rolling window of 1 minute.
* **Request Limit**: Each client is allowed up to 500 requests per minute.
* **Header Information**: We use the [IETF standard](https://datatracker.ietf.org/doc/html/draft-ietf-httpapi-ratelimit-headers-08) for rate limit headers. These headers provide information about the current rate limit status, such as the remaining requests and reset time.
* The rate limit is applied based on API keys derived from the request.

### Rate Limit Headers

When you make requests to our API, you will receive the following headers, indicating your current rate limit status:

* **RateLimit-Policy**: Describes the rate limit policy, including the quota and time window.
  * Example: `"default";q=500;w=60` (500 requests per 60 seconds)
* **RateLimit**: Provides the current status of the rate limit, including remaining requests and time to reset.
  * Example: `"default";r=499;t=59` (499 requests remaining, 59 seconds until reset)

### Handling Rate Limit Responses

If you exceed the allowed number of requests within the time window, the API will respond with a 429 Too Many Requests status code. When this occurs, you should:

* **Wait for Reset**: Check the `t` parameter in the `RateLimit` header to determine how long to wait before making more requests.
* **Implement Backoff Strategy**: Implement a backoff strategy in your application to gracefully handle rate limit responses and retry requests after the reset time.

For copy/paste examples in Python and TypeScript, see [Respecting Rate Limits](/docs/respecting-rate-limits).