Skip to main content

Rate Limits

Default limits

LimitValue
Requests per window60
Window duration60 seconds
ScopePer IP address
Applied toAll /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.