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

# Rate limiting

> Understand request limits and how to handle throttling

The Alta API enforces rate limits to ensure fair usage and service stability.

## Default limits

| Scope                                                   | Limit            | Window                  |
| ------------------------------------------------------- | ---------------- | ----------------------- |
| All v1 endpoints                                        | **100 requests** | Per minute, per account |
| Add prospects to campaign (`/campaigns/{id}/prospects`) | **10 requests**  | Per minute, per account |

Rate limits are applied per **account**, not per API token. All tokens belonging to the same account share the same quota.

## Rate limit headers

When you approach or exceed the rate limit, the API returns standard rate limit headers:

| Header                | Description                                        |
| --------------------- | -------------------------------------------------- |
| `RateLimit-Limit`     | Maximum requests allowed in the window             |
| `RateLimit-Remaining` | Remaining requests in the current window           |
| `RateLimit-Reset`     | Seconds until the rate limit window resets         |
| `RateLimit-Policy`    | The rate limit policy in effect                    |
| `Retry-After`         | Seconds to wait before retrying (on 429 responses) |

## Handling rate limits

When you exceed the limit, the API returns a `429 Too Many Requests` response:

```json theme={null}
{
  "error": "TooManyRequests",
  "message": "Rate limit exceeded. Please retry after 60 seconds."
}
```

Best practices for handling rate limits:

* **Implement exponential backoff** - wait and retry with increasing delays
* **Respect `Retry-After`** - wait at least the indicated number of seconds
* **Batch where possible** - use bulk endpoints to reduce the number of requests
* **Cache responses** - avoid re-fetching data that hasn't changed
