Integration rate limits

Repeated rate-limit responses need less traffic, not more workers

Identify the shared budget and stop retry amplification before increasing capacity. More concurrency can make a provider throttle harder to recover from.

In this article

Confirm the limiting scope

Inspect the provider response, relevant headers and authentication context. Determine whether the limit applies to an account, application, endpoint or concurrent workload.

Check current provider guidance rather than relying only on a configured constant. Some services have additional limits beyond their headline request quota.

Record the observed timing and remaining-budget signals without exposing credentials.

Find every retry layer

Inspect the SDK, HTTP client, job runner and any upstream caller. Several layers can each retry the same failure and multiply provider requests.

For an illustrative three layers each making up to three attempts, one original operation can generate far more than three downstream attempts if policies nest. Trace actual requests rather than assuming the outer attempt counter is complete.

Choose one coordinated policy owner and preserve safe operation identity.

Three nested layers with three attempts each can produce as many as 27 downstream attempts for one operation in a fully nested failure case. The exact count depends on which errors propagate, but the multiplication explains why adding delay only to the outer job may leave substantial traffic underneath.

Temporarily trace one synthetic operation from job ID to each provider request. Use that evidence to remove redundant retries or allocate one shared attempt budget, then verify that the observed downstream count matches the intended bound.

Pause the affected work appropriately

Apply the supported scope-specific delay and release worker capacity for unrelated eligible work. Follow provider timing and the local bounded retry policy.

Avoid creating extra credentials or accounts to evade the provider's limit. The recovery objective is compliant, useful progress under the intended integration model.

Reduce nonessential polling or historical work if it is consuming capacity needed for current operations.

Resume with controlled observation

Watch actual request rate, rejected attempts and completed operations as the scope becomes eligible. Prevent a synchronised retry burst from immediately exhausting it again.

Reconcile any mutations whose outcomes are uncertain. A throttle incident can overlap with transport failures, and those requests need more than rescheduling.

Record the cause and update the shared scheduler or request pattern. The incident is resolved when backlog and current work progress predictably, not merely when one request finally succeeds between many rejected attempts.

Primary sources

GitHub: REST API rate limits

References checked 11 September 2026.