Three independent fixed-window limits protect the platform. Defaults:
| Window | Scope | Default limit |
|---|---|---|
| 1 minute | Per source IP (pre-authentication) | 600 requests |
| 1 minute | Per API key | 120 requests |
| 1 day (UTC) | Per company (all keys combined) | 100,000 requests |
Limits are per Onwork installation and may be tuned; treat the values above as defaults, and always drive your behaviour from the response headers.
When a window is exhausted:
{
"error": {
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded (api_key): 120 requests allowed",
"status": 429,
"details": [ { "scope": "api_key", "limit": 120 } ]
}
}
With headers:
| Header | Meaning |
|---|---|
Retry-After | Seconds until the window resets. Wait at least this long. |
X-RateLimit-Scope | Which window tripped: ip, api_key or company. |
X-RateLimit-Limit | The limit of the tripped window. |
Retry-After — it is exact, not advisory.company-scope 429 means the daily budget is consumed across all keys:
coordinate with the other integrations of the company rather than retrying.