developers.rateLimits.intro
| Status | Description |
|---|---|
| 400 | developers.rateLimits.code400 |
| 401 | developers.rateLimits.code401 |
| 404 | developers.rateLimits.code404 |
| 429 | developers.rateLimits.code429 |
| 500 | developers.rateLimits.code500 |
developers.rateLimits.errorIntro
// 429 Rate Limit
{ "error": "Rate limited" }
// 400 Validation Error
{
"error": "Validation failed",
"details": {
"customerName": { "_errors": ["Required"] },
"type": { "_errors": ["Invalid enum value"] }
}
}
// 404 Not Found
{ "error": "Order not found" }developers.rateLimits.retryDesc
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const res = await fetch(url, options);
if (res.status === 429 || res.status >= 500) {
const delay = Math.pow(2, attempt) * 1000; // 1s, 2s, 4s
await new Promise((r) => setTimeout(r, delay));
continue;
}
return res;
}
throw new Error("Max retries exceeded");
}