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

# Rate limits

> Request limits for the Perform.AI Public API and how to handle throttling.

The Perform.AI API allows **40 requests per second per account**, with a burst allowance of 40. The limit is shared across all endpoints — it is not 40 per endpoint — so if several of your systems call the API with the same credentials, they draw from the same budget.

Exceeding the limit returns HTTP `429`:

```json theme={null}
{
  "api_response": 429,
  "message": "Throttled"
}
```

Accounts also have an overall request quota. Exhausting it returns HTTP `403` with the message `Quota exceeded` — if you encounter this in normal operation, contact your account team.

## Handling throttling

* **Back off and retry.** On a `429`, wait before retrying — exponential backoff with jitter is the standard approach. The request was rejected before processing, so retrying is always safe.
* **Spread bulk jobs.** Batch imports and nightly syncs should be paced below the limit rather than fired as fast as possible; a steady 30 requests per second finishes almost as fast as bursts and leaves headroom for your real-time traffic.
* **Budget across systems.** If a webshop, a warehouse system, and a reporting job share one account, allocate each a share of the 40 requests per second — the gateway won't arbitrate between them.
* **Prefer webhooks to polling.** Most polling exists to detect shipment changes; [webhooks](/guides/webhooks) push those changes to you and free your rate budget for writes.
