Skip to main content

Overview

Rate limits are enforced per API key. Different endpoint categories have different limits suited to their usage patterns. Limits use a token bucket algorithm. The burst allowance lets you absorb short spikes above the sustained rate, then the bucket refills at the base rate.

Rate limit headers

Every response includes headers so you can monitor your consumption: Example response headers:

Handling 429 responses

When you exceed a rate limit, the API returns 429 Too Many Requests:
The Retry-After header tells you exactly how long to wait:

Retry strategy

Implement exponential backoff with jitter rather than a fixed sleep:

Tips to stay within limits

  • Paginate efficiently — fetch larger pages (up to 100 records) instead of many small requests.
  • Cache aggressively — portfolio summaries and trader lists don’t change every second.
  • Use since/until — filter by time range to avoid re-fetching old data.
  • One key per service — avoids different services competing for the same key’s budget.
  • Monitor X-RateLimit-Remaining — slow down proactively before hitting 0.