Rate Limiting
Understanding API rate limits and how to handle them in your applications.
Rate Limits
To ensure fair usage and maintain service quality, we implement rate limiting on our API:
Free Tier: 1,000 requests per hour
Premium Tier: 10,000 requests per hour
Enterprise Tier: Custom limits available
Rate Limit Headers
Each API response includes headers to help you track your rate limit usage:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1640995200
X-RateLimit-Limit
: Total requests allowed per hourX-RateLimit-Remaining
: Remaining requests for the current hourX-RateLimit-Reset
: Unix timestamp when the rate limit will reset
Rate Limit Exceeded
When you exceed the rate limit, you'll receive a 429 Too Many Requests response:
{
"error": "too_many_requests",
"message": "Rate limit exceeded. Please try again in 37 minutes",
"status": 429
}
Best Practices
- Monitor the rate limit headers in your responses
- Implement exponential backoff when rate limited
- Cache responses when possible
- Consider upgrading to a higher tier if you consistently hit limits
Example Implementation
function makeApiRequest() {
try {
const response = await fetch('https://api.wallaza.com/v1/wallpapers', {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
// Check remaining rate limit
const remaining = response.headers.get('X-RateLimit-Remaining');
if (remaining < 10) {
console.warn('Rate limit running low:', remaining);
}
return await response.json();
} catch (error) {
if (error.status === 429) {
// Implement backoff strategy
const reset = error.headers.get('X-RateLimit-Reset');
const waitTime = Math.ceil((reset - Date.now()) / 1000);
await sleep(waitTime * 1000);
return makeApiRequest();
}
throw error;
}
}