Limits
| Endpoint group | Limit |
|---|---|
All POST /orders/* endpoints | 5,500 requests/min |
All GET /orders/* endpoints | 20 requests/10s |
All GET /trades/* endpoints | 200 requests/min |
| All other endpoints | 500 requests/min (base) |
| All traffic (global ceiling) | 35,000 requests/10min |
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 HTTP429 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 case | WebSocket channel |
|---|---|
| Best odds across all markets | best_odds:{baseToken} |
| Full orderbook for a market | order_book_v2:{token}:{marketHash} |
| Your open orders (fills, cancels) | active_orders_v2:{baseToken}:{address} |
| Recent trade activity | recent_trades |
