Polymarket errors / Matching Engine Errors
500 Internal Server ErrorSafe to retry

there are no matching orders

The Polymarket CLOB API returns this with HTTP 500. Polymarket doesn't document a cause beyond the message.

Retry? Safe to retry

This is transient. Retry with exponential backoff and random jitter so a fleet of workers doesn't retry in step.

Any authenticated CLOB endpoint can return this.

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 "there are no matching orders" in msg:
        backoff_and_retry()

Related 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.