Introduction
Rate Limits & Quotas
Understanding API rate limits and quotas
Synoveo applies rate limits to ensure fair usage and system stability.
Rate Limits
Requests per hour by plan:
| Plan | Requests/Hour |
|---|---|
| Lite | 100 |
| Solo | 500 |
| Pro | 2000 |
| Business | 10000 |
Rate Limit Headers
Responses include rate limit information:
X-RateLimit-Limit: 2000
X-RateLimit-Remaining: 1995
X-RateLimit-Reset: 1699900000Exceeding Limits
When rate limited:
HTTP/1.1 429 Too Many Requests
Retry-After: 3600{
"status": "error",
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded",
"details": "Retry after 3600 seconds"
}
}Quotas
Beyond rate limits, some operations have quotas:
| Operation | Lite | Solo | Pro | Business |
|---|---|---|---|---|
| Syncs/month | 50 | 200 | 1000 | Unlimited |
| Posts/month | - | - | 50 | 500 |
| Media uploads/month | - | - | 100 | 1000 |
Best Practices
- Cache responses - Don't refetch unnecessarily
- Use webhooks - Instead of polling
- Batch operations - Combine when possible
- Handle 429s - Implement exponential backoff
Backoff Strategy
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);
if (response.status === 429) {
const retryAfter = response.headers.get('Retry-After') || 60;
await sleep(retryAfter * 1000);
continue;
}
return response;
}
throw new Error('Max retries exceeded');
}