Skip to main content

Overview

Rate limits protect the API from abuse and ensure fair usage for all users. When you exceed a rate limit, the API returns a 429 Too Many Requests response with a Retry-After header and a retryAfter field indicating how many seconds to wait before retrying.

API key rate limits

Authenticated endpoints are rate-limited per API key based on whether the endpoint is a read or write operation. Read endpoints are those that require X-Public-Key only. Write endpoints are those that require X-Public-Key, X-Timestamp, and X-Signature. See the Authentication guide for details. When the limit is exceeded:
The response also includes a Retry-After header with the number of seconds to wait.

API key management

API key management endpoints are rate-limited per session token to prevent abuse. Each user can have a maximum of 2 active API keys at any time. Rotation shares the revoke limit since it revokes the existing key and creates a new one. When the limit is exceeded:
The retryAfter value reflects the actual time remaining until the next request is allowed.

Login endpoint

The login endpoint (POST /v1/user/login) is rate-limited to 1 request per 2 minutes per email address. When the limit is exceeded:

Handling rate limit errors

Node.js

Best practices

  • Handle 429 gracefully — if you receive a rate limit response, wait for the retryAfter duration before retrying.
  • Cache your session token — after a successful login, store the returned token and deviceId and reuse them for subsequent API key operations. There’s no need to log in again for each request.
  • Don’t poll the login endpoint — the login endpoint is intended for one-time session creation, not repeated calls.
  • Batch where possible — if you need data for multiple markets, use list endpoints instead of making individual requests.