Limits and rate limits
Request rates, payload sizes and per-workspace maximums, with the headers that tell you where you stand.
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: 18Going over gives 429 RATE_LIMITED with Retry-After in seconds. Wait that long and
retry — see retrying safely.
If you are importing a lot, use bulk writes or import 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
View this page as Markdown — handy for copying into an editor or an AI assistant.