Limits
These are the enforced caps. Length is Unicode code points after newline folding and trim, not UTF-16 String.length. There is no overage invoice and no storage add-on.
| Limit | Value |
|---|---|
| Body | 10,000 code points, or the published bodyMax when that is lower |
| Mentions per comment | 20 |
| Page size | Default 50, maximum 100 |
| Hosted meter | 1 GiB (1,073,741,824 bytes) of bodies plus mention user ids, per workspace and environment |
| Author token | Default 300 seconds, clamp 60–86400 |
| operationId | 80 characters |
| Author id and resource ids | 200 characters. Author name 120. Empty state 200. |
| Publishable / secret / OAuth | 120 / 60 / 60 requests per 60 seconds per key or token id |
| Content writes | 30 per minute per workspace and author (create, reply, edit) |
Delete, resolve, reopen, mark-read, export, and lists use the key limit only. They are not inside the 30 writes per minute bucket. The in-process limiter is per replica, so several processes multiply the effective cap.
The meter counts UTF-8 bytes of comment bodies plus UTF-8 bytes of mention userId strings. It does not meter ids, timestamps, display names, read markers, or thread status. Test and live each have their own 1 GiB row. At the cap, create, reply, and an edit that grows the meter return 403 quota_exceeded: Hosted Comments storage for this environment is at its 1 GiB cap. Reads, export, deletion, resolve, reopen, and mark-read still work. An edit that does not grow the meter succeeds.
Empty or whitespace-only text is validation_error. A configured bodyMax above 10000 is rejected. See configuration.
Related: Environments · Sessions · Troubleshooting