Choorai
API throughput limit issue

Fixing 429 Rate Limit Errors

HTTP 429 Too Many Requests means request frequency exceeded server or WAF policy.

TL;DR

1) Reduce duplicate requests 2) Respect Retry-After 3) Apply exponential backoff with jitter

주의코드: 429

429 Too Many Requests

원인

Client sent too many requests in a short time and exceeded configured rate limits.

해결책
  1. Reduce polling/request frequency
  2. Implement Retry-After aware retry
  3. Use exponential backoff
  4. Review server-side rate limit thresholds

Retry example

retry.ts
async function fetchWithBackoff(url: string, attempts = 5) {
  let delay = 500;

  for (let i = 0; i < attempts; i++) {
    const res = await fetch(url);

    if (res.status !== 429) {
      return res;
    }

    const retryAfter = Number(res.headers.get('Retry-After'));
    const waitMs = Number.isFinite(retryAfter) && retryAfter > 0
      ? retryAfter * 1000
      : delay + Math.floor(Math.random() * 200);

    await new Promise((resolve) => setTimeout(resolve, waitMs));
    delay *= 2;
  }

  throw new Error('Rate limit exceeded after retries');
}

Important

Do not retry immediately in a tight loop. That amplifies throttling and can trigger wider service blocks.

Prerequisites

  • You can identify endpoint patterns returning HTTP 429.
  • You can inspect server or WAF rate limit policies.
  • You can implement retry/backoff in client code.

Validation

  1. Client respects Retry-After on 429 responses.
  2. 2xx success rate recovers after request shaping.
  3. Duplicate burst requests are reduced per user/token.

Troubleshooting

  • Increase polling interval or apply debounce/throttle.
  • Align client concurrency with backend rate policy.
  • Use exponential backoff with jitter to prevent retry storms.

References

Related Articles

Last updated: February 22, 2026 · Version: v0.0.1

Send Feedback

Opens a new issue page with your message.

Open GitHub Issue