400 Bad RequestDon't retry
Payload exceeds the limit
Too many token IDs in a single request. Reduce the batch size.
The batch is too large. Split it into smaller requests.
Retry? Don't retry
Sending the same request again returns the same error. Change the request first.
Returned by
- POST /books 500 req / 10s
- POST /prices 500 req / 10s
- POST /midpoints 500 req / 10s
- POST /spreads 9,000 req / 10s
- POST /last-trades-prices 9,000 req / 10s
Handling it in code
The CLOB API returns errors as {"error": "..."}. It also rewrites status codes by message, so branch on the text: anything containing "not found" becomes 404 and anything containing "unauthorized" becomes 401.
r = session.post(url, json=payload, headers=headers)
if r.status_code >= 400:
msg = r.json().get("error", "")
if "Payload exceeds the limit" in msg:
raise ValueError(msg) # fix the request, don't retryRelated errors
For errors Polymarket doesn't document, like "order manager not ready" or 403s from the edge, see the full error guide.
Message and status from Polymarket's error reference, synced 2026-10-04.