Getting started
Rate limits
The API publishes rate-limit response headers and can answer 429 when a client sends too much traffic. Numeric quotas, reset windows, and retry header behavior should be confirmed by the API owner before being treated as a stable contract.
Headers in the spec
- X-RateLimit-Limit
- Requests allowed within the current window.
- X-RateLimit-Remaining
- Requests still available within the current window.
- X-RateLimit-Reset
- Unix timestamp at which the current window resets.
Handling 429
429 Too many requests means the client should slow down. Retry with exponential backoff and jitter, and avoid retry loops that keep all workers waking at the same time.
async function requestWithBackoff(url, options, attempts = 4) {
for (let attempt = 0; attempt < attempts; attempt += 1) {
const res = await fetch(url, options);
if (res.status !== 429) return res;
const delay = Math.min(1000 * 2 ** attempt, 8000);
await new Promise((resolve) => setTimeout(resolve, delay));
}
throw new Error("Rate limit did not clear");
}Needs confirmation
API-owner confirmation required. The live spec exposes
X-RateLimit-Limit and X-RateLimit-Remaining descriptions, with an example limit value on some list responses. It does not confirm the reset window, plan-specific quotas, or whether a Retry-After header is always present on 429 responses.