Rate Limits
Chesly applies per-user rate limits to keep the platform fast for everyone. All of your tokens share a single per-user budget, so a runaway script on one machine can affect requests from another.
Default limits
- 1,000 requests per minute per user across all API tokens combined.
- Send-message endpoints have a stricter cap of 60 sends per minute to match what bridges accept upstream.
- AI summary endpoints are limited to 10 per minute (these run on GPU and are the most expensive).
Response headers
Every response includes the current limit state so you don't have to guess:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 994
X-RateLimit-Reset: 1715000000X-RateLimit-Reset is a Unix timestamp (seconds since the epoch) at which the window will reset and your remaining count returns to the full limit.
Hitting the limit
When you exceed the limit, the API returns 429 Too Many Requests:
HTTP/1.1 429 Too Many Requests
Retry-After: 23
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1715000023
{
"error": "rate_limited",
"message": "Rate limit exceeded. Retry after 23 seconds."
}Backoff strategy
- Read
Retry-Afteron a 429 — it's the minimum number of seconds to wait. - Use exponential backoff with jitter when you don't have a Retry-After (e.g. on transient 5xx).
- Watch
X-RateLimit-Remainingproactively — if it's dropping fast, slow down before you hit zero.
Per-token rate limits are coming. Today every token shares the per-user budget, so you can't isolate a misbehaving script. We'll ship per-token quotas as a follow-up.