API · Troubleshooting

Die meisten Polymarket-API-Fehler haben eine einzeilige Ursache und einen einzeiligen Fix – aber die Antworten sind über GitHub-Issues verstreut. Diese Seite sammelt die Fehler, die Entwickler auf CLOB V2 / pUSD tatsächlich treffen, mit der Ursache, einer minimalen Reproduktion und dem Fix in Python und Rust. Füge deinen Fehler unten ein, um direkt dorthin zu springen.

Zuerst die Hauptursache Nr. 1 im Jahr 2026: Du bist noch auf dem V1-SDK. Der alte py-clob-client (neueste 0.34.6) und @polymarket/clob-client sind archiviert / abgelöst und erzeugen Orders, die die V2-Börse ablehnt. Wechsle zu py-clob-client-v2 (Python), @polymarket/clob-client-v2 (Node) oder dem offiziellen Rust-Client polymarket_client_sdk_v2. Neue Projekte können die vereinheitlichten Beta-SDKs nutzen (polymarket-client / @polymarket/client).

order_version_mismatch

Ursache. Du hast eine V1-förmige Order signiert (alte EIP-712-Exchange-Domain- Version "1", Legacy-Felder) und sie an die V2-Börse gepostet (Domain- Version "2"). Am 28. April 2026 änderte sich das Order-Struct: nonce, feeRateBps, taker und expiration wurden aus dem signierten Struct entfernt, timestamp, metadata und builder hinzugefügt. Fast immer bedeutet das, dass du noch den V1-Client importierst.

Fix. Wechsle zum V2-SDK – es baut und signiert das V2-Struct für dich.

pip install py-clob-client-v2          # V1 py-clob-client (0.34.x) is archived
from py_clob_client_v2 import ClobClient
client.create_and_post_order(order_args)   # signs the V2 struct, domain "2"
// Cargo.toml: polymarket_client_sdk_v2 = "0.5"   (official, repo rs-clob-client-v2)
use polymarket_client_sdk_v2::ClobClient;

Verwandt: invalid signature, v1 → v2 migrieren.

not enough balance / allowance

Ursache. Unter V2 muss deine Funding-Wallet die V2-Exchange-Contracts genehmigen, um dein Collateral und deine Outcome-Tokens zu bewegen – und dein Collateral muss pUSD sein, nicht USDC.e. Ein Kauf braucht eine pUSD-Allowance; ein Verkauf braucht eine CTF-Genehmigung (ERC-1155). Fehlt eine davon, kommt dieser Fehler.

Fix. (1) Wrappe USDC.e → pUSD, dann (2) genehmige pUSD und die Conditional Tokens für die drei V2-Contracts:

Für alle drei V2-Contracts genehmigen
  • CTF Exchange (V2) – 0xE111180000d2663C0091e4f400237545B87B996B
  • Neg Risk CTF Exchange – 0xe2222d279d744050d28e00520010520000310F59
  • Neg Risk Adapter – 0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296
pUSD-Token: 0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB · Conditional Tokens (CTF): 0x4D97DCd97eC945f40cF65F87097ACe5EA0476045

Website-Nutzer werden nach einer einmaligen Genehmigung automatisch gewrappt; API-only-Trader rufen CollateralOnramp.wrap() (0x93070a847efEf7F70739046A929D47a521F5B8ee) selbst auf.

maker address not allowed, please use the deposit wallet flow

Ursache. Du signierst mit einer POLY_1271-Deposit-Wallet (Signaturtyp 3). Stand Juni 2026 haben die Python- (py-clob-client-v2) und TypeScript-Clients (@polymarket/clob-client-v2) einen offenen Bug: Die L1-Auth bindet den API-Schlüssel an deine EOA statt an die Deposit-Wallet, sodass die Börse die Order ablehnt.

Fix. Für den Handel mit Deposit-Wallets (Typ 3) nutze heute den offiziellen Rust-Client, der die EIP-1271-Signatur korrekt umschließt:

// Rust - authentication_builder().funder(deposit_wallet).signature_type(SignatureType::Poly1271)

Workaround ohne Rust: Melde dich per E-Mail/Magic an, exportiere den Magic-Wallet-Schlüssel und nutze signature_type = POLY_PROXY (Typ 1) – es funktioniert, skaliert aber nicht auf viele Bots. Das ist ein beweglicher Bug – prüfe die Polymarket-Issues #70 (Python) und #65 (TS) auf einen Fix.

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

Ursache. Die Wallet, die die Order signiert hat, passt nicht zu der Wallet, für die dein API-Schlüssel abgeleitet wurde, oder du hast nicht den richtigen funder/Signaturtyp übergeben. Häufig bei Proxy- und Gnosis-Safe- Wallets, wenn sich der Signier-Schlüssel von der geldhaltenden Adresse unterscheidet.

Fix. Leite den API-Schlüssel für dieselbe Wallet ab, mit der du signierst, und übergib sowohl den Private Key als auch die funder-Adresse mit dem korrekten signature_type (1 = E-Mail/Magic-Proxy, 2 = Gnosis Safe, 3 = Deposit-Wallet).

invalid signature

Ursache. Meist eines von: (a) die falsche EIP-712-Domain signiert – die V2-Exchange-Domain-Version ist "2" (die L1-ClobAuth-Domain bleibt "1"); (b) Uhr-Drift > ~60 s zwischen deiner Maschine und dem Server; (c) ein V1-Client (siehe order_version_mismatch).

Fix. Nutze das V2-SDK, damit Domain/Struct korrekt sind, und synchronisiere deine Uhr (NTP).

401 / invalid api key / PolyApiException

Ursache. Fehlende oder falsche L2-Zugangsdaten (API-Key/-Secret/-Passphrase), oder du hast sie nie erstellt. Das Lesen von Marktdaten ist schlüssellos – das betrifft nur authentifizierte Aufrufe (Orders, deine Positionen).

Fix. Erstelle oder leite deine API-Zugangsdaten ab und übergib dann alle drei bei authentifizierten Requests:

# client.create_or_derive_api_key()  -> api_key, api_secret, api_passphrase

INVALID_ORDER_MIN_TICK_SIZE

Ursache. Dein Preis ist kein Vielfaches der Tick-Size des Marktes (oft 0,01, manchmal 0,001).

Fix. Hole die Tick-Size des Marktes (GET /tick-size) und runde deinen Preis darauf, bevor du signierst.

FOK_ORDER_NOT_FILLED

Ursache. Eine Fill-Or-Kill-Order konnte zu deinem Preis nicht vollständig gegen die aktuelle ruhende Liquidität ausgeführt werden, also wurde sie gekillt (das ist FOK wie beabsichtigt, kein Fehler).

Fix. Lies zuerst das Buch und dimensioniere nach verfügbarer Tiefe, weite deinen Preis oder nutze GTC/FAK statt FOK.

invalid amounts (decimals)

Ursache. Beträge müssen die Dezimalgenauigkeit einhalten – Maker-Betrag auf 2 Dezimalstellen, Taker-Betrag auf 4 Dezimalstellen. Zusätzliche Genauigkeit wird abgelehnt.

Fix. Runde/quantisiere vor dem Signieren; lass das V2-SDK die Beträge aus Preis × Größe berechnen.

Size lower than the minimum: 5

Ursache. Orders unter der Mindest-Anteilsgröße (5) werden abgelehnt.

Fix. Erhöhe die Order-Größe auf ≥ 5 Anteile.

429 / throttled

Ursache. Du hast ein Sliding-Window-Rate-Limit überschritten. Die V2-Limits sind hoch (CLOB ~9.000 / 10 s; /book,/price 1.500 / 10 s; Gamma 4.000 / 10 s; Data 1.000 / 10 s), und Über-Limit- Requests werden gedrosselt/eingereiht, nicht hart abgelehnt – ein clientseitiger Limiter ist trotzdem klug.

Fix. Füge einen Token-Bucket-Limiter und exponentielles Backoff bei 429 hinzu.

Immer noch fest? Bestätige, dass du auf dem V2-SDK bist, dein Collateral pUSD ist und alle drei V2-Contracts genehmigt sind. Prüfe dann Authentifizierung & Wallets und die v1 → v2 Migration.

Weiter: Authentifizierung & Wallets · CLOB-API-Referenz · API-Schnellstart.