Reference
rate_limited
Too many requests in the current window. The limit is per workspace, and some endpoints add a per-bot limit on top.
What it means
Too many requests in the current window. The limit is per workspace, and some endpoints add a per-bot limit on top.
Retry with backoff
Transient. Retry with exponential backoff and jitter, not a fixed interval.
What causes it
- A burst of calls from a loop with no pacing.
- A backfill run at full speed against an endpoint sized for interactive use.
- Many visitors hitting one bot at once, where the bot's own per-minute limit applies.
How to fix it
- Honour the `Retry-After` response header. It is sent on every 429 and is the exact number of seconds to wait.
- Back off exponentially with jitter. Fixed-interval retries from many clients re-synchronise into the same spike.
- For bulk work, spread it — the API is not billed per request, so there is nothing to gain by going faster than the limit.
What the response looks like
{
"error": {
"code": "rate_limited",
"message": "Too many requests in the current window. The limit is per workspace, and some endpoints add a per-bot limit on top",
"request_id": "7cb7f7862a82425d8e4c3fb8a497dfe6"
},
"type": "https://integrable.cloud/docs/errors/rate_limited",
"title": "Rate Limited",
"status": 429,
"detail": "Too many requests in the current window. The limit is per workspace, and some endpoints add a per-bot limit on top",
"instance": "/api/bots/01a0652b-3713-7ea1-a6c9-2e895389ec34"
}Branch on error.code, not on the message — the code is stable, the sentence is not. Log request_id either way.
Still stuck
Quote the request_id from the response — hello@integrable.cloud. It is what lets us find the exact request. The full list of codes is at Error codes, and the conventions every endpoint shares are in Retries, versioning and limits.
Something here wrong or missing? Tell us — the documentation and the API are maintained by the same person, so a correction is a fix rather than a ticket.