Rate limits
To keep Tirver fast for everyone, the API limits how often each key can call it.
The limits
- Each key can make 120 requests per minute, counted over a sliding window. REST and MCP requests made with the same key share this limit.
POST /api/v1/askand the MCPasktool are also limited to 10 per minute per key, on top of the 120.- A request body can be up to 256 KB. A larger one gets
413with the codepayload_too_large.
Limits are counted in memory by each server instance, so they are best effort rather than an exact global quota. Plan for the numbers above and rely on the response headers.
Headers
Every authenticated response carries these headers.
| Header | Meaning |
|---|---|
X-RateLimit-Limit |
The limit that applies. |
X-RateLimit-Remaining |
Requests left in the current window. |
X-RateLimit-Reset |
Seconds until the oldest request in the window leaves it. |
When you go over
The API answers 429 Too Many Requests with the code rate_limited and a Retry-After header that gives the number of seconds to wait. A 429 can also mean the AI agent is busy.
HTTP/1.1 429 Too Many Requests
Retry-After: 12
Content-Type: application/json
{ "error": { "code": "rate_limited", "message": "Too many requests. Try again in 12 seconds.", "request_id": "req_3f9c0a1b22d4e5f6" } }
Wait that long, then retry the same request. Keep waiting longer after repeated 429 responses.
Good habits
- Always honour
Retry-After. It is more precise than any guess. - Back off. Double the wait after each failure, and add a little random jitter so many workers do not retry at the same moment.
- Page with
limit=100. Fewer, larger requests use less of your allowance. See pagination. - Do not poll. If you check for new conversations every second, check every minute instead.
- Cache what rarely changes, such as articles and customer details.
See errors for a retry helper you can copy.