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