Help Center/Troubleshooting/Fixing 429 rate limit errors

Troubleshooting

Fixing 429 rate limit errors

What to do when you hit the rate limit.


What does 429 mean?

A 429 Too Many Requests response means you've exceeded your rate limit — either per-second or monthly.

Check your current usage

  1. Go to Dashboard → Stats to see your monthly consumption
  2. Check the response headers for current limits:
X-RateLimit-Limit: 25000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 2025-02-01T00:00:00Z

Quick fixes

Per-second limit hit

  • Add a small delay between requests (e.g., 50–100ms)
  • Use the bulk endpoint to batch multiple IPs into one request
  • Implement exponential backoff in your retry logic

Monthly quota exhausted

  • Upgrade your plan for a higher monthly limit
  • Cache lookup results — IP risk data is stable for minutes to hours
  • Review your integration to avoid redundant lookups

Implementing retry logic

async function lookupWithRetry(ip, retries = 3) {
  for (let i = 0; i < retries; i++) {
    const res = await fetch('https://predax.io/api/v1/check/ip', {
      method: 'POST',
      headers: {
        'X-API-Key': process.env.PREDAX_API_KEY,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({ ip }),
    });
    if (res.status !== 429) return res.json();
    const waitMs = Math.pow(2, i) * 1000; // 1s, 2s, 4s
    await new Promise(r => setTimeout(r, waitMs));
  }
  throw new Error('Rate limit exceeded after retries');
}

Need higher limits?

See Pricing or contact us for enterprise rate limits.