API Reference
Rate Limits
Understand API rate limits to build reliable integrations and avoid service disruptions.
Why Rate Limits?
Rate limits ensure fair usage and protect the API from abuse. They help maintain performance and availability for all users. Exceeding limits results in 429 Too Many Requests responses.
Rate Limit Tiers
Free
100/minute
10,000/day
- Public endpoints only
- No webhooks
- Community support
Most Popular
Developer
500/minute
100,000/day
- All endpoints
- 5 webhooks
- Email support
Enterprise
5,000/minute
Unlimited
- All endpoints
- Unlimited webhooks
- Priority support
- SLA
Per-Endpoint Limits
| Endpoint | Rate Limit | Burst Limit |
|---|---|---|
/api/presales | 60/min | 10/sec |
/api/tokens | 60/min | 10/sec |
/api/user/:address | 30/min | 5/sec |
/api/contribute | 10/min | 1/sec |
Rate Limit Headers
Every API response includes headers to help you track your usage:
X-RateLimit-LimitMaximum requests allowed in the windowX-RateLimit-RemainingRequests remaining in current windowX-RateLimit-ResetUnix timestamp when the window resetsRetry-AfterSeconds to wait before retrying (on 429)Handling Rate Limits
When you receive a 429 response, implement exponential backoff:
async function fetchWithRetry(url, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url);
if (response.status !== 429) {
return response;
}
const retryAfter = response.headers.get('Retry-After') || 1;
const delay = retryAfter * 1000 * Math.pow(2, i);
await new Promise(r => setTimeout(r, delay));
}
throw new Error('Max retries exceeded');
}Best Practices
- Cache responses when possible to reduce API calls
- Use webhooks for real-time updates instead of polling
- Batch requests where the API supports it
- Monitor your usage via the dashboard