---
title: Limits and rate limits
description: Request rates, payload sizes and per-workspace maximums, with the headers that tell you where you stand.
group: Reference
order: 2
keywords: [rate limit, api limits, quotas, payload size, 429, throttling]
---

# Limits and rate limits

Limits exist so one runaway script cannot slow the service down for everyone. The
numbers below are the defaults; a self-hosted deployment can change them.

## Rate limits

Counted per minute.

| Who is calling                 | Requests per minute                   |
| ------------------------------ | ------------------------------------- |
| An API key                     | 1,200                                 |
| A signed-in person             | 600                                   |
| Anonymous (public collections) | 60 per IP address                     |
| Sign-in and sign-up endpoints  | 10 per IP address                     |
| Failed sign-in attempts        | 30 per IP address, then blocked early |

Every response tells you where you stand:

```http
RateLimit-Limit: 1200
RateLimit-Remaining: 1198
RateLimit-Reset: 18
```

Going over gives `429 RATE_LIMITED` with `Retry-After` in seconds. Wait that long and
retry — see [retrying safely](/docs/errors#retrying-safely).

If you are importing a lot, use [bulk writes or import](/docs/records#many-at-once)
rather than thousands of single calls. One bulk call of 500 counts as one request.

## Sizes

|                       |                       |
| --------------------- | --------------------- |
| One record's `data`   | 256 KB                |
| A record's `metadata` | 16 KB                 |
| JSON nesting depth    | 32 levels             |
| A schema              | 64 KB, 32 levels      |
| One uploaded file     | 10 MB                 |
| Records per import    | 10,000 records, 10 MB |

Going over gives `413 PAYLOAD_TOO_LARGE`.

## Per workspace

|                        |           |
| ---------------------- | --------- |
| Collections            | 200       |
| Workspaces per account | 20        |
| Members per workspace  | 100       |
| API keys               | 50 active |
| Service accounts       | 25        |
| Webhooks               | 20        |
| Indexes per collection | 5         |
| Members per collection | 100       |

Reaching one of these gives `409 LIMIT_EXCEEDED`.

## Queries

|                          |                                        |
| ------------------------ | -------------------------------------- |
| Page size                | 50 by default, 200 maximum             |
| Records per bulk call    | 500                                    |
| Filter length            | 2,000 characters                       |
| Conditions per filter    | 20                                     |
| Filter nesting           | 5 levels                               |
| Values in one `in [...]` | 50                                     |
| Field path depth         | 8 segments                             |
| `select` fields          | 25                                     |
| Search text              | 100 characters, across up to 10 fields |

## How long things are kept

|                       |                                              |
| --------------------- | -------------------------------------------- |
| Webhook delivery logs | 30 days                                      |
| Idempotency keys      | 24 hours                                     |
| Record history        | Kept with the record                         |
| Audit log             | Kept, including after a workspace is deleted |

## Next steps

- [Errors](/docs/errors) — what to do when you hit one of these.
- [Records](/docs/records) — bulk writes.
