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
- Go to Dashboard → Stats to see your monthly consumption
- Check the response headers for current limits:
X-RateLimit-Limit: 25000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 2025-02-01T00:00:00ZQuick 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.
