Rate Limits
Rate limits protect the API from abuse and ensure fair usage. Limits are enforced per API key using a Redis-backed sliding window.Limits by Key Scope
| Scope | Requests / Minute | Best For |
|---|---|---|
read | 1,000 | Dashboards, analytics, read-only bots |
write | 2,000 | Trading bots, data pipelines |
admin | 5,000 | Platform integrations, key management |
Unauthenticated Requests
Public endpoints (/v1/health, /v1/ready) allow 100 requests per minute per IP, no key required.
Response Headers
Every response includes rate limit headers:| Header | Description |
|---|---|
X-RateLimit-Limit | Your per-minute limit |
X-RateLimit-Remaining | Requests remaining in current window |
When Rate Limited
You’ll receive429 Too Many Requests:
Strategies to Stay Under Limits
Use WebSocket for real-time data
WebSocket connections don’t count against your rate limit. Instead of polling/v1/price every second, subscribe to the trade stream:
Cache responses
| Data | Suggested TTL |
|---|---|
| Market metadata | 5 minutes |
| Orderbook snapshot | 10 seconds |
| Price data | 1–2 seconds |
| OHLCV candles | Match the resolution (1m candle → 60s cache) |
Batch intelligently
Instead of fetching 100 markets individually, use:Use appropriate candle resolutions
Don’t fetch1m candles for a weekly chart:
| Resolution | Use Case |
|---|---|
1m | Live trading UI |
5m / 15m | Intraday charts |
1h | Daily overview |
4h / 1d | Multi-day analysis |
Implement backoff on 429
IP Blocking
IPs with excessive failed authentication attempts or abusive patterns may be temporarily blocked. Blocked IPs receive403 Forbidden with: