Tiers
There is also a global ceiling of 1,800,000 req/min (30,000 req/sec aggregate across every key). It exists to protect the system from runaway / coordinated abuse. Customers should never hit it under normal operation.
How it actually works
We use a token bucket algorithm. Your tier defines a bucket size and refill rate.- Free tier bucket: holds up to 600 tokens, refills at 10 tokens/sec.
- Each request consumes 1 token.
- If the bucket is empty: request returns HTTP 429.
- Idle time refills the bucket — burst as much as you need within the bucket size.
Hitting a limit — what to do
- Back off. The bucket refills at the per-tier rate. Wait ~6 seconds for free tier to recover ~60 tokens.
- Check if you should be cached. Most queries (markets, leaderboards, candles) are eligible for client-side or edge caching.
- Upgrade your tier if your usage is sustained.
Built-in retry-friendly headers
We don’t currently exposeRetry-After or X-RateLimit-Remaining headers (planned). For now: assume linear refill at the per-tier rate after a 429.
Edge caching
The Pages Function in front of the API caches GET responses at the Cloudflare edge with sane TTLs:/v1/meta,/v1/spot-tokens— 1 hour/v1/markets— 15 seconds/v1/markets/:id,/v1/coins/:c— 5 seconds/v1/leaderboards/*— 60 seconds/v1/markets/:id/trades— 1 second