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