Rate limits
Rate limits apply per user over sliding one-minute and one-hour windows, with a separate limit per IP address. Chat assistants stay well under these limits in normal use — they mainly matter when you build your own integration.
| Category | Applies to | Per minute | Per hour |
|---|---|---|---|
| Read | all read tools (list_*, get_*, whoami, search_*) | 60 | 1,000 |
| Write | tools that change data (add_*, create_*, update_*, delete_*, finalize_*, resolve_*) | 10 | 200 |
| Per IP | all requests from one IP address | 120 | 3,000 |
Limits are keyed to your user account, so OAuth connections and API keys for the same user share the same budget.
When you hit a limit
Section titled “When you hit a limit”The server responds with HTTP 429, a Retry-After header (seconds to wait), and a JSON-RPC error whose data includes retryAfterMs:
{ "jsonrpc": "2.0", "id": 1, "error": { "code": -32000, "message": "Rate limit exceeded", "data": { "retryAfterMs": 23000, "retryAfterSeconds": 23 } }}Wait at least as long as Retry-After before retrying. For sustained workloads such as a bulk history sync, pacing read requests at about one per second keeps you safely inside the read limit.
Tips for integrations
Section titled “Tips for integrations”- Use
get_statsfor counts instead of paging through lists — one request instead of dozens. - Request up to 100 items per page (
limit: 100) to minimize the number of calls. - Back off on any 429 rather than retrying immediately; immediate retries only extend the wait.