Skip to main content
Rate limits are applied at the endpoint group level. All requests within a group count toward the same shared bucket — not a per-endpoint limit.

Limits

Endpoint groupLimit
All POST /orders/* endpoints5,500 requests/min
All GET /orders/* endpoints20 requests/10s
All GET /trades/* endpoints200 requests/min
All other endpoints500 requests/min (base)
All traffic (global ceiling)35,000 requests/10min
The global ceiling of 35,000 requests/10min applies across all traffic regardless of endpoint group.

What counts toward each limit

POST /orders/*POST /orders/new, POST /orders/cancel/v2, POST /orders/cancel/event, POST /orders/cancel/all, and POST /orders/fill/v2 all draw from the same 5,500 req/min bucket. GET /orders/*GET /orders (active orders) and GET /orders/odds/best share the same 20 req/10s bucket. GET /trades/*GET /trades, GET /trades/consolidated, GET /trades/orders, and GET /trades/portfolio/refunds all draw from the same 200 req/min bucket.

When limits are exceeded

Requests that exceed a limit return HTTP 429 Too Many Requests.

Staying within limits

For high-frequency use cases — such as continuously monitoring odds or tracking order state — we recommend combining REST requests with WebSocket subscriptions rather than polling via REST alone. WebSocket subscriptions deliver real-time updates without consuming your request quota.
Use caseWebSocket channel
Best odds across all marketsbest_odds:{baseToken}
Full orderbook for a marketorder_book_v2:{token}:{marketHash}
Your open orders (fills, cancels)active_orders_v2:{baseToken}:{address}
Recent trade activityrecent_trades
See Real-time Data for setup guides and payload references for each channel.