Skip to content

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.

CategoryApplies toPer minutePer hour
Readall read tools (list_*, get_*, whoami, search_*)601,000
Writetools that change data (add_*, create_*, update_*, delete_*, finalize_*, resolve_*)10200
Per IPall requests from one IP address1203,000

Limits are keyed to your user account, so OAuth connections and API keys for the same user share the same budget.

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.

  • Use get_stats for 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.