What Are Rate Limits?
Rate limits define the maximum number of API requests your application can make within a specified time window. They ensure fair usage across all developers, protect our infrastructure from abuse, and maintain consistent performance for real-time news delivery.
Aevum News implements a sliding window algorithm combined with per-endpoint quotas. This means your limits are continuously evaluated based on the last 60 seconds, 1 hour, or 24 hours, depending on the endpoint.
Why We Use Them
While rate limits might seem restrictive, they exist to guarantee platform stability and data freshness:
- Infrastructure Protection: Prevents cascading failures during high-traffic events or DDoS scenarios.
- Cache Efficiency: Encourages developers to leverage our CDN-cached endpoints rather than hammering live databases.
- Fair Access: Ensures all tiers—from individual journalists to enterprise platforms—receive predictable latency.
- Cost Management: News aggregation involves complex NLP, real-time verification, and multi-source normalization that requires significant compute resources.
Most rate limit errors occur due to unoptimized polling loops. Switching to webhooks or SSE streams typically reduces API calls by 80%+.
Limit Structure & Tiers
Your rate limits are determined by your subscription tier. All limits reset automatically and are never carried over.
| Plan | Requests / Min | Requests / Hour | Daily Cap | Burst Allowance |
|---|---|---|---|---|
| Free | 30 | 1,000 | 10,000 | 5 |
| Starter | 120 | 5,000 | 50,000 | 15 |
| Professional | 600 | 25,000 | 300,000 | 50 |
| Enterprise | Custom | Custom | Unmetered* | Custom |
*Enterprise plans include SLA-backed quotas with dedicated support. Contact sales for custom thresholds.
Response Headers
Every API response includes headers that indicate your current usage and limits. Monitoring these headers is the most reliable way to implement client-side throttling.
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 542
X-RateLimit-Reset: 1698773400
X-RateLimit-Burst: 50
Retry-After: 45 # Only present on 429 responses
- X-RateLimit-Limit: Maximum requests allowed in the current window.
- X-RateLimit-Remaining: Requests left before hitting the limit.
- X-RateLimit-Reset: Unix timestamp when the window resets.
- Retry-After: Seconds to wait before making another request (only on 429s).
Handling 429 Responses
When you exceed your rate limit, the API returns an HTTP 429 Too Many Requests status. The response body contains a JSON object with an estimated wait time and a link to this documentation.
{
"error": "rate_limit_exceeded",
"message": "You have exceeded your request quota for this time window.",
"retry_after": 45,
"documentation": "https://aevum.news/how-rate-limits-work"
}
Continuing to send requests immediately after a 429 will result in temporary IP-level throttling. Always respect the Retry-After header or implement exponential backoff.
Recommended Retry Logic
Implement exponential backoff with jitter to avoid thundering herd effects:
async function fetchWithBackoff(url, options, maxRetries = 5) {
for (let i = 0; i <= maxRetries; i++) {
const res = await fetch(url, options);
if (res.status !== 429) return res;
const delay = Math.min(2000 * Math.pow(2, i), 30000) + Math.random() * 1000;
const retryAfter = res.headers.get('Retry-After');
const wait = retryAfter ? retryAfter * 1000 : delay;
console.log(`Rate limited. Retrying in ${Math.round(wait)}ms...`);
await new Promise(r => setTimeout(r, wait));
}
throw new Error('Max retries exceeded');
}
Best Practices
- Cache Aggressively: News articles, metadata, and category lists rarely change within minutes. Cache responses for 5-15 minutes where possible.
- Use Webhooks/SSE: Instead of polling for breaking news or topic updates, subscribe to real-time streams.
- Batch Requests: Our
/v3/articles/batchendpoint allows fetching up to 20 articles in a single call, counting as only 1 request. - Filter Early: Use query parameters (
?category=tech&limit=10&after=2025-01-01) to reduce payload size and avoid unnecessary pagination calls. - Monitor Headers: Implement client-side countdowns based on
X-RateLimit-Remainingto pause requests proactively.
Developers who implement proper caching and webhook usage typically operate at <20% of their allocated rate limit, even with high-traffic applications.
Requesting Higher Limits
If your application requires consistent throughput beyond your current tier, you can request a temporary or permanent increase:
- Dashboard Request: Log into developers.aevum.news and navigate to
Settings > API Keys > Request Limit Increase. - Enterprise Sales: For dedicated infrastructure, custom SLAs, or white-label data pipelines, contact our B2B team.
- Event-Based Spikes: During major global events (elections, crises, product launches), we often offer temporary limit boosts to verified partners. Register your interest in advance.
All limit increases are reviewed within 24 hours and require valid use-case documentation to ensure platform stability.