# Rate limits (/guides/rate-limits)



The Acme API rate limits requests per API key and HTTP method using a token bucket: the bucket
holds your burst allowance and refills continuously at the sustained rate. Short bursts above the
sustained rate are fine until the bucket is empty.

| Method | Mode          | Burst        | Sustained rate     |
| ------ | ------------- | ------------ | ------------------ |
| GET    | LIVE          | 100 requests | 10 requests/second |
| GET    | TEST          | 50 requests  | 5 requests/second  |
| POST   | LIVE and TEST | 100 requests | 25 requests/second |

## When you exceed a limit [#when-you-exceed-a-limit]

The request is rejected with HTTP `429` and a `Retry-After` header (in seconds):

```json
{
  "errorCode": "RATE_LIMIT_EXCEEDED",
  "errorMessage": "Rate limit exceeded. Please try again later."
}
```

## Handling 429s [#handling-429s]

* Wait for the `Retry-After` interval before retrying instead of retrying immediately; the bucket
  refills within a second.
* A rate-limited request is never cached by [idempotency](/guides/idempotency), so retry it with
  the same `Idempotency-Key`.
* If your integration needs more sustained throughput, please contact Acme; limits can be raised
  per API key.
