# Rate limits

## The limit

Each API key is limited to **60 requests per 60-second window**. The window opens with the first request and resets 60 seconds later. The limit applies per key, not per organization. Every authenticated request counts, including ones that fail with a `4xx`; a request rejected with `401` doesn't.

A request over the limit receives `429 Too Many Requests` and is not executed:

```json
{
  "retry_after": "2026-10-14T09:31:00.482913+00:00",
  "error": "Too Many Requests",
  "details": "Rate limit exceeded (61 requests in window)",
  "status": 429
}
```

`retry_after` is when the next window opens. The response also carries a standard `Retry-After` header with the number of seconds to wait.

## Staying within the limit

- **Large pages** - when listing, use `limit=500`. One page of 500 costs the same as one page of 50.
- **Sync only what's new** - lists are sorted newest first (`created_at` descending). On each run, page from offset 0 and stop at the first record whose `created_at` is older than your previous run. There is no `updated_since` filter yet, so changes to existing records can't be fetched incrementally: re-read the records you track with `GET /{resource}/{id}`.
- **A queue on your side** - if you create many records at once (an import, say), send them from a queue at up to one request per second.
- **One key per integration** - so load from one system can't block another, and revoking a single integration is easy.
- **Handle 429** - wait for the `Retry-After` seconds, then retry.

```js
async function bantaFetch(url, init, attempt = 0) {
  const res = await fetch(url, init)
  if (res.status !== 429 || attempt >= 3) return res
  const seconds = Number(res.headers.get('Retry-After'))
  const waitMs = seconds > 0 ? seconds * 1000 + 250 : 2 ** attempt * 1000
  await new Promise((r) => setTimeout(r, waitMs))
  return bantaFetch(url, init, attempt + 1)
}
```

If your integration consistently needs a higher rate, contact us at [support@banta.co.il](mailto:support@banta.co.il).

---

Part of the banta API documentation. Full index: https://docs.banta.co.il/llms.txt
