Two fixed-window limits apply to every authenticated request:
| Window | Counted per | Default limit |
|---|---|---|
| 1 minute | API key | 120 requests |
| 1 day | Company — all its keys together | 100,000 requests |
The limits are counted per key and per company, never per IP address. The windows are fixed, not sliding: a window's count starts over when it ends. The values above are the defaults, which an installation can change, so drive your behaviour from the response headers rather than from this table.
When a window is exhausted, the request answers 429:
{
"error": {
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded",
"status": 429
}
}
with these headers:
| Header | Meaning |
|---|---|
Retry-After | Seconds until the window resets. Wait at least this long. |
X-RateLimit-Limit | The limit of the window that was exhausted. |
X-RateLimit-Scope | Which window it was: key or company. |
Retry-After: it is exact, not advisory. Retrying sooner only earns
another 429.size up to 1000) rather than many small
ones.company 429 means the daily budget is spent across all of the
company's keys. Retrying will not help before Retry-After; coordinate with
the company's other integrations. Issuing more keys does not raise it either.