How Limits Work
Use the error type to identify which bucket rejected the request or message.| Bucket | Scope | Applies To | Error |
|---|---|---|---|
| IP | IP address | HTTP request volume | HTTP 429 or ip_rate_limited |
| Action | Perps account | Order placement and trade actions | action_rate_limited |
| WebSocket message | IP address | Inbound WebSocket messages | message_rate_limited |
| WebSocket subscription | WebSocket link | Active subscriptions on one socket | Per-channel subscription error when the subscription cap is exhausted |
IP Rate Limits
Every IP address gets 1,000 weighted tokens per minute. Each HTTP request consumes tokens equal to its request weight. Use scoped requests when possible. Broad, unfiltered reads consume more of the IP budget than narrow reads.| Request Pattern | Weight |
|---|---|
| Lightweight reads | 1 |
| Broad unfiltered reads | Up to 20 |
| Order book depth 10 | 2 |
| Order book depth 100 | 5 |
| Order book depth 500 | 10 |
| Order book depth 1000 | 20 |
| Batch order actions | 1 + floor(n / 20), where n is order count |
| Account orders by ID | 1 |
| Account orders without ID | 10 |
| Open orders by instrument | 1 |
| Open orders without instrument | 20 |
Action Rate Limits
Every account has an action budget from its current limit tier. The default tier is 5,000 action tokens per minute with an open-order cap of 1,000. Action limits are account-scoped, not IP-scoped. Batching can reduce IP weight, but it does not reduce the number of order actions consumed.| Action | Action Cost |
|---|---|
| Place one order | 1 token |
| Place 10 orders | 10 tokens |
| Auto-cancel request | 10 tokens |
| Open-order count | Limited by account tier cap |
WebSocket Limits
WebSocket connections have separate limits for connection count, active subscriptions, and inbound messages.| Limit | Scope | Value |
|---|---|---|
| Concurrent connections | IP address | 50 WebSocket connections |
| Active subscriptions | Connection | 100 active subscriptions |
| Inbound messages | IP address | 1,000 messages per minute |
| Subscribe message | Message | 1 message token |
| Unsubscribe message | Message | 1 message token |
| Trade post message | Message | Same batch-size weighting as trade |
| Other post messages | Message | 1 message token |
Integration Guidance
- Scope reads whenever possible. For example, request one instrument’s open orders instead of all open orders.
- Batch order placement when it reduces request volume, but do not expect batching to reduce action-token usage.
- Treat
429,ip_rate_limited,action_rate_limited, andmessage_rate_limitedas retryable after backoff. - Track active WebSocket subscriptions per connection so reconnects do not accidentally exceed the subscription cap.
- If you operate many users behind shared infrastructure, monitor IP usage separately from account action usage.