Skip to main content
Perps uses separate rate-limit buckets for different traffic types. Hitting one bucket does not consume another bucket, so request volume, account trading actions, and WebSocket traffic should be monitored separately.

How Limits Work

Use the error type to identify which bucket rejected the request or message.
BucketScopeApplies ToError
IPIP addressHTTP request volumeHTTP 429 or ip_rate_limited
ActionPerps accountOrder placement and trade actionsaction_rate_limited
WebSocket messageIP addressInbound WebSocket messagesmessage_rate_limited
WebSocket subscriptionWebSocket linkActive subscriptions on one socketPer-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 PatternWeight
Lightweight reads1
Broad unfiltered readsUp to 20
Order book depth 102
Order book depth 1005
Order book depth 50010
Order book depth 100020
Batch order actions1 + floor(n / 20), where n is order count
Account orders by ID1
Account orders without ID10
Open orders by instrument1
Open orders without instrument20

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.
ActionAction Cost
Place one order1 token
Place 10 orders10 tokens
Auto-cancel request10 tokens
Open-order countLimited by account tier cap
Legacy request-rate fields on limit-tier responses are not used for request-rate enforcement. Use the IP bucket for request volume and the action bucket for account trading activity.

WebSocket Limits

WebSocket connections have separate limits for connection count, active subscriptions, and inbound messages.
LimitScopeValue
Concurrent connectionsIP address50 WebSocket connections
Active subscriptionsConnection100 active subscriptions
Inbound messagesIP address1,000 messages per minute
Subscribe messageMessage1 message token
Unsubscribe messageMessage1 message token
Trade post messageMessageSame batch-size weighting as trade
Other post messagesMessage1 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, and message_rate_limited as 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.