This page lists CollabKit limits and benchmark targets for the latest version.
Rate Limits for APIs
When rate limits are exceeded, APIs may return 429 Too Many Requests.
| Limit | Value |
|---|
| General REST API | 600 requests/minute per account, burst 120 requests/10 seconds |
| Create user | 120 requests/minute per account, burst 30 requests/10 seconds per room |
| Create room | 60 requests/minute per account |
| List endpoints | 300 requests/minute per account |
| Storage upload | 20 uploads/minute per user, 100 uploads/minute per room |
| Storage delete | 60 deletes/minute per user |
| Storage list files | 60 requests/minute per user |
| Webhook/workflow CRUD | 60 requests/minute per account |
| Auth/login routes | 10 requests/minute per IP |
| List users page size | 100 users per page |
CollabKit Store Limits
| Limit | Value |
|---|
| Stores per room | 10 |
| Writes to store | 1 write per 250ms |
| Store size | TBD |
Each named store counts toward the per-room store limit. Store entries, document shape, and payload-size limits are TBD.
| Limit | Value |
|---|
| Top-level comments per room | 1,000 |
| Comment payload size | TBD |
Replies are limited to one level of nesting. A top-level comment can have replies, but replies cannot have nested replies.
File Storage Limits
| Limit | Value |
|---|
| File size | 1 MB per file |
| Per-room storage quota | 5 GB |
| Files per room | 1,000 |
| Upload rate | 20 uploads/minute per user, 100 uploads/minute per room |
| Delete rate | 60 deletes/minute per user |
| List files rate | 60 requests/minute per user |
Files are scoped to rooms. Storage rate limits are enforced per Worker isolate for now.
Room Limits
Users can join a room with two roles: editor | viewer.
| Scenario | Limit or target |
|---|
| Maximum users in one room | 1,000 users with up to 200 active editors |
| Maximum users in an all-editor room | 500 active users, all editors |
| Concurrent joins and time SLA | 1.5sec (P50), 3sec (P95) |
- Editors:
- Allowed to mutate stores, files, add comments and more.
- Use for users who actively mutate room state, stores, comments, storage, broadcasts, or CRDT documents.
- Viewers:
- Allowed to subscribe to all the changes in a room, including presence, stores, comments, files and more.
- Use for users who need real-time updates but do not need to write collaborative state
Webhook/Workflow Delivery SLAs
| System | SLA |
|---|
| WebSocket event delivery | 5-30 seconds after the event |
| Analytics availability | 30 seconds after the event |
WebSocket SLAs describe when connected clients should receive room events after the server processes the event. Analytics SLAs describe when event data should be available for querying or display.