429 Too Many Requests.
Limits
Trading endpoints
| Endpoint | Limit |
|---|---|
POST /v1/orders (place order) | 440 requests / 10 seconds |
POST /v1/order/{id}/cancel | 440 requests / 10 seconds |
POST /v1/order/{id}/modify | 440 requests / 10 seconds |
POST /v1/orders/open/cancel (cancel all) | 110 requests / 10 seconds |
POST /v1/order/close-position | 220 requests / 10 seconds |
| Global (all endpoints combined) | 2,000 requests / 10 seconds |
Query endpoints
| Endpoint | Limit |
|---|---|
GET /v1/orders/open | 55 requests / 10 seconds |
GET /v1/order/{id} | 55 requests / 10 seconds |
Public (unauthenticated)
| Limit | Value |
|---|---|
| Max requests | 20 per second per IP |
When youβre rate limited
Use WebSocket instead of polling
The single most effective way to stay within limits is to stop polling and use WebSocket streams. One persistent connection replaces hundreds of repeated REST calls.| Donβt poll | Use instead |
|---|---|
GET /v1/orders/open repeatedly | /v1/ws/private - SUBSCRIPTION_TYPE_ORDER |
GET /v1/portfolio/positions repeatedly | /v1/ws/private - SUBSCRIPTION_TYPE_POSITION |
GET /v1/account/balances repeatedly | /v1/ws/private - SUBSCRIPTION_TYPE_ACCOUNT_BALANCE |
GET /v1/markets/{slug}/bbo repeatedly | /v1/ws/markets - SUBSCRIPTION_TYPE_MARKET_DATA_LITE |
GET /v1/markets/{slug}/book repeatedly | /v1/ws/markets - SUBSCRIPTION_TYPE_MARKET_DATA |
Cache reference data
Market and event metadata changes infrequently. Fetch it once on startup and refresh periodically rather than on every request.For automated systems
If youβre running an automated trading system and need higher limits for production:- Document your use case and expected request volume
- Email support@polymarket.us
- Include which endpoints you need higher limits for