OnworkDevelopers

Rate limits

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.

The 429 response

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.

Backing off correctly

  • Honour Retry-After — it is exact, not advisory.
  • Add jitter when many workers share a key, so they don't retry in lockstep.
  • Spread bulk work: a nightly sync at 2 req/s stays far below every window.
  • A company-scope 429 means the daily budget is consumed across all keys: coordinate with the other integrations of the company rather than retrying.