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.

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.

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. 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.

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.