The client has sent too many requests in a given time period. The server is rate-limiting to protect itself.
async function fetchWithRetry(url: string, retries = 3) {
for (let i = 0; i < retries; i++) {
const res = await fetch(url);
if (res.status !== 429) return res;
const delay = Math.pow(2, i) * 1000;
await new Promise(r => setTimeout(r, delay));
}
throw new Error('Rate limited');
}Wait exponentially longer between retries: 1s, 2s, 4s.
ObserveOne monitors rate limit consumption and alerts before you hit API quotas.
Start Monitoring FreeThe server is temporarily unable to handle the request, usually due to maintenance or overload.
The server cannot process the request due to malformed syntax, invalid parameters, or bad encoding.
The request requires authentication. The client must provide valid credentials.
The server understood the request but refuses to authorize it. Authentication won't help — the user lacks permissions.
The server cannot find the requested resource. The URL may be wrong, the resource may have been deleted, or the route doesn't exist.