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

# Rate limits

> API rate limits and how to handle a 429 response.

| Scope | Limit |
| - | - |
| All requests from one integration | 180 per minute (3 per second on average) |
| `POST /v1/data_sources/{id}/query` from one integration | About 3 per second |

All integrations in a team also share a team-wide limit.

These limits can change.

## The 429 response

Going over a limit returns 429 `rate_limited`. The `Retry-After` header holds the number of seconds to wait, as an integer.

```http theme={null}
HTTP/1.1 429 Too Many Requests
Retry-After: 2
Content-Type: application/json
```

```json theme={null}
{
  "object": "error",
  "status": 429,
  "code": "rate_limited",
  "message": "You have been rate limited. Please try again in a few minutes.",
  "request_id": "33333333-3333-4333-8333-333333333333",
  "additional_data": {
    "retry_after": "2"
  }
}
```

## Handle rate limits

* Wait for `Retry-After`, then send the request again.
* When reading a large database, use a large `page_size` and pick only the properties you need with `filter_properties`.
* A server that reads back on each webhook event should queue events and process them within the limit. A burst of changes produces a burst of events.
* Creating more integrations doesn't raise the limit the team shares.

## Server errors

If the service that tracks rate limits can't be reached, the response is 503 `service_unavailable`. Send the request again shortly.


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