API Rate Limits
Bleu.js API implements rate limiting to ensure fair usage and maintain service quality for all users.
Rate Limit Headers
Every API response includes rate limit information in the headers:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1640995200
Plan-Based Limits
Plan | Requests per Minute | Requests per Hour | Requests per Day |
---|---|---|---|
Trial | 10 | 100 | 500 |
COR-E | 60 | 1,000 | 10,000 |
Enterprise | 300 | 20,000 | 1,000,000 |
Rate Limit Windows
- Per-minute limits: Reset every minute on the minute
- Per-hour limits: Reset every hour on the hour
- Per-day limits: Reset at midnight UTC
Rate Limit Exceeded
When you exceed your rate limit, you'll receive a 429 Too Many Requests response:
HTTP/1.1 429 Too Many Requests
Retry-After: 60
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1640995260
Best Practices
- Implement exponential backoff when you hit rate limits
- Monitor your rate limit headers to avoid hitting limits
- Use bulk operations when possible to reduce request count
- Cache responses to minimize API calls
- Consider upgrading your plan if you consistently hit limits
Example: Handling Rate Limits
// JavaScript example async function makeApiRequest() { try { const response = await fetch('https://api.bleujs.org/v1/generate', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ prompt: 'Hello' }) }); if (response.status === 429) { const retryAfter = response.headers.get('Retry-After'); console.log(`Rate limited. Retry after ${retryAfter} seconds`); // Wait and retry setTimeout(makeApiRequest, retryAfter * 1000); return; } const data = await response.json(); return data; } catch (error) { console.error('API request failed:', error); } }