Rate Limits
Default limits
| Limit | Value |
|---|---|
| Requests per window | 60 |
| Window duration | 60 seconds |
| Scope | Per IP address |
| Applied to | All /v1/* endpoints |
The /health endpoint is not rate limited.
429 response
When you exceed the rate limit, you'll receive a 429 status code:
{
"success": false,
"error": {
"code": "RATE_LIMIT",
"message": "Rate limit exceeded"
},
"timestamp": "2026-03-12T00:00:00.000Z"
}
Handling rate limits
async function getSwapWithRetry(url: string, retries = 3): Promise<any> {
for (let i = 0; i < retries; i++) {
const res = await fetch(url);
if (res.status === 429) {
// Wait and retry with exponential backoff
const wait = Math.pow(2, i) * 1000;
await new Promise((r) => setTimeout(r, wait));
continue;
}
return res.json();
}
throw new Error("Rate limited after retries");
}
Need higher limits?
If you need more than 60 requests/minute, reach out to discuss dedicated rate limits for your integration.