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 hour
  • X-RateLimit-Remaining: Remaining requests for the current hour
  • X-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;
    }
}