- HTTP:
https://mainnet-api1.bulk.trade - WebSocket:
wss://mainnet-ws1.bulk.trade
HTTP
Order submissions must satisfy both budgets. A transaction with 20 top-level actions consumes one HTTP request and 20 action tokens. Batching does not bypass the action limit; cancellations also consume action tokens.
WebSocket
The trading-action budget counts actions inside submitted transactions, not outbound ticker, order-book, or account updates. It is not a promise of a fixed market-data message rate. Each connection has its own action bucket; concurrent connections and connection attempts remain limited per IP.
How Bursts Work
HTTP request and trading-action budgets use token buckets. Tokens refill at the sustained rate, up to the burst capacity. A burst of 150 HTTP requests is not an additional allowance every second or minute. Once that bucket is empty, it refills at five tokens per second. Clients sharing a public IP share HTTP request/action budgets and WebSocket connection limits. WebSocket trading-action buckets are per connection. Pace traffic to the applicable budget rather than treating a burst as a sustained rate.Handling Rate Limits
- HTTP: handle status
429. The response may come from the API or gateway and is not guaranteed to be JSON. HonorRetry-Afterwhen supplied; otherwise use bounded exponential backoff with jitter. - WebSocket trading: a rate-limited submission can return a negative acknowledgement containing
rate limited: too many actions. Treat it as a rejected submission, not execution confirmation. - Connections: limit simultaneous connections and stagger reconnects with backoff. Reconnecting repeatedly does not reset a per-IP budget.
- Prefer WebSocket subscriptions over repeated HTTP polling for market and account updates.