Skip to content

The Acme API enforces rate limits to ensure fair usage and system stability.

PlanRequests/MinuteRequests/Day
Free601,000
Pro60050,000
Enterprise6,000Unlimited

Every response includes rate limit information:

X-RateLimit-Limit: 600
X-RateLimit-Remaining: 595
X-RateLimit-Reset: 1705312800
HeaderDescription
X-RateLimit-LimitMaximum requests per minute
X-RateLimit-RemainingRemaining requests in current window
X-RateLimit-ResetUnix timestamp when the limit resets

When you exceed the limit, you’ll receive a 429 response:

{
"error": {
"code": "rate_limit",
"message": "Rate limit exceeded",
"retry_after": 45
}
}

The Retry-After header indicates seconds to wait:

HTTP/1.1 429 Too Many Requests
Retry-After: 45
  1. Monitor rate limit headers to track remaining requests proactively.
  2. Implement exponential backoff for retries.
  3. Queue requests to spread them over time.
  4. Cache responses to reduce unnecessary API calls.
  5. Use webhooks to subscribe to events instead of polling.
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');
}