Polymarket errors / Place Orders
400 Bad RequestDon't retry

the order signer address has to be the address of the API KEY

The key that signed the order belongs to a different address than the order says. This nearly always means API credentials cached from another wallet. Re-derive credentials for the wallet you are trading from.

Retry? Don't retry

Sending the same request again returns the same error. Change the request first.

Returned by

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 "the order signer address has to be the address of the API KE" in msg:
        raise ValueError(msg)  # fix the request, don't 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.