Skip to main content

Limits

Rate Limits​

The API implements rate limiting to ensure fair usage and system stability.

Limits by Category​

Endpoint CategoryRate LimitWindow
Authentication10 requestsper minute
Market Data (read)100 requestsper minute
Trading (write)50 requestsper minute
Account Management30 requestsper minute

Rate Limit Headers​

Rate limit information is returned in response headers:

HeaderDescription
X-RateLimit-LimitMaximum requests allowed in window
X-RateLimit-RemainingRemaining requests in current window
X-RateLimit-ResetUnix timestamp when limit resets
Retry-AfterSeconds to wait (only on 429 response)

Example Response Headers​

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1703052700

Handling Rate Limits​

When rate limited (HTTP 429), implement exponential backoff:

import time
import requests

def make_request_with_retry(url, headers, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url, headers=headers)

if response.status_code == 429:
# Use Retry-After header if available
retry_after = int(response.headers.get("Retry-After", 2 ** attempt))
print(f"Rate limited. Waiting {retry_after} seconds...")
time.sleep(retry_after)
continue

return response

raise Exception("Rate limit exceeded after max retries")

Request Size Limits​

LimitValue
Maximum request body size1 MB
Maximum URL length8,192 characters
Maximum headers size16 KB

Batch Limits​

OperationLimit
Order book instruments per request20
Orders per list request1,000
Instruments per list request1,000

Best Practices​

  1. Cache static data - Venues and instruments change infrequently
  2. Use WebSocket for real-time data - Reduces polling overhead
  3. Batch requests - Use list endpoints instead of multiple single requests
  4. Implement backoff - Respect rate limits with exponential backoff
  5. Monitor headers - Track remaining quota to avoid hitting limits