Rate limits
Read and write budgets per key, person and app, and how to back off with Retry-After.
Limits protect your organization and everyone else's. They are counted per minute, separately for reads and writes.
| Caller | Reads | Writes |
|---|---|---|
| A person's AI client (per connection) | 300 / minute | 60 / minute |
| A person, across all their connections | 600 / minute | |
| An API key | its own budget per key | its own budget per key |
Writes include anything that reaches people, can't be undone, or confirms a review.
When you hit a limit you get 429 rate_limited with a Retry-After header in seconds. Wait that long, then retry
with the same Idempotency-Key. Don't retry in a tight loop: repeated refusals still count.
Staying under
- Page with
cursorandlimitinstead of re-reading everything. - Read
signals.readorpipeline.activityfor what changed, rather than polling every candidate. - Spread scheduled jobs across the minute.