API · Rozwiązywanie problemów

Większość błędów API Polymarket ma jednozdaniową przyczynę i jednozdaniową poprawkę - ale odpowiedzi są rozproszone po zgłoszeniach na GitHubie. Ta strona zbiera błędy, na które faktycznie natrafiają deweloperzy na CLOB V2 / pUSD, wraz z przyczyną, minimalnym odtworzeniem i poprawką w Pythonie i Ruście. Wklej swój błąd poniżej, by przejść wprost do niego.

Najpierw najczęstsza przyczyna źródłowa w 2026: wciąż korzystasz z SDK V1. Stary py-clob-client (najnowszy 0.34.6) oraz @polymarket/clob-client są zarchiwizowane / zastąpione i tworzą zlecenia, które giełda V2 odrzuca. Przejdź na py-clob-client-v2 (Python), @polymarket/clob-client-v2 (Node) lub oficjalnego klienta Rust polymarket_client_sdk_v2. Nowe projekty mogą użyć zunifikowanych beta SDK (polymarket-client / @polymarket/client).

order_version_mismatch

Przyczyna. Podpisałeś zlecenie w kształcie V1 (stara domena EIP-712 Exchange w wersji "1", przestarzałe pola) i wysłałeś je na giełdę V2 (domena w wersji "2"). 28 kwietnia 2026 struktura zlecenia się zmieniła: nonce, feeRateBps, taker i expiration usunięto z podpisywanej struktury, a dodano timestamp, metadata i builder. Prawie zawsze oznacza to, że wciąż importujesz klienta V1.

Poprawka. Przejdź na SDK V2 - buduje i podpisuje strukturę V2 za ciebie.

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;

Powiązane: invalid signature, migracja v1 → v2.

not enough balance / allowance

Przyczyna. W V2 twój portfel finansujący musi zatwierdzić kontrakty giełdy V2 do przenoszenia twojego zabezpieczenia i tokenów wyniku - a twoje zabezpieczenie musi być pUSD, nie USDC.e. Kupno wymaga zatwierdzenia (allowance) pUSD; sprzedaż wymaga zatwierdzenia CTF (ERC-1155). Brak któregokolwiek zwraca ten błąd.

Poprawka. (1) Opakuj USDC.e → pUSD, następnie (2) zatwierdź pUSD oraz tokeny warunkowe dla trzech kontraktów V2:

Zatwierdź dla wszystkich trzech kontraktów V2
  • CTF Exchange (V2) - 0xE111180000d2663C0091e4f400237545B87B996B
  • Neg Risk CTF Exchange - 0xe2222d279d744050d28e00520010520000310F59
  • Neg Risk Adapter - 0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296
Token pUSD: 0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB · Conditional Tokens (CTF): 0x4D97DCd97eC945f40cF65F87097ACe5EA0476045

Użytkownicy strony są automatycznie opakowywani po jednorazowym zatwierdzeniu; traderzy korzystający tylko z API sami wywołują CollateralOnramp.wrap() (0x93070a847efEf7F70739046A929D47a521F5B8ee).

maker address not allowed, please use the deposit wallet flow

Przyczyna. Podpisujesz portfelem depozytowym POLY_1271 (typ podpisu 3). Według stanu na czerwiec 2026 klienci Python (py-clob-client-v2) i TypeScript (@polymarket/clob-client-v2) mają otwarty błąd: uwierzytelnianie L1 wiąże klucz API z twoim EOA zamiast z portfelem depozytowym, więc giełda odrzuca zlecenie.

Poprawka. Do handlu z portfela depozytowego (typ 3) użyj dziś oficjalnego klienta Rust, który poprawnie opakowuje podpis EIP-1271:

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

Obejście bez Rusta: zarejestruj się przez e-mail/Magic, wyeksportuj klucz portfela Magic i użyj signature_type = POLY_PROXY (typ 1) - działa, ale nie skaluje się do wielu botów. To ruchomy błąd - sprawdzaj zgłoszenia Polymarket #70 (Python) i #65 (TS) w oczekiwaniu na poprawkę.

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

Przyczyna. Portfel, który podpisał zlecenie, nie pasuje do portfela, dla którego wyprowadzono twój klucz API, albo nie przekazałeś właściwego funder/typu podpisu. Częste przy portfelach proxy i Gnosis Safe, gdy klucz podpisujący różni się od adresu przechowującego środki.

Poprawka. Wyprowadź klucz API dla tego samego portfela, którym podpisujesz, i przekaż zarówno klucz prywatny, jak i adres funder z poprawnym signature_type (1 = proxy e-mail/Magic, 2 = Gnosis Safe, 3 = portfel depozytowy).

invalid signature

Przyczyna. Zwykle jedna z: (a) podpisanie niewłaściwej domeny EIP-712 - domena Exchange V2 jest w wersji "2" (domena L1 ClobAuth pozostaje "1"); (b) dryf zegara > ~60 s między twoją maszyną a serwerem; (c) klient V1 (zobacz order_version_mismatch).

Poprawka. Użyj SDK V2, by domena/struktura były poprawne, i zsynchronizuj zegar (NTP).

401 / invalid api key / PolyApiException

Przyczyna. Brak lub błędne poświadczenia L2 (klucz/sekret/passphrase API) albo nigdy ich nie utworzyłeś. Odczyt danych rynkowych nie wymaga klucza - to dotyczy tylko wywołań uwierzytelnionych (zlecenia, twoje pozycje).

Poprawka. Utwórz lub wyprowadź poświadczenia API, a następnie przekaż wszystkie trzy w uwierzytelnionych żądaniach:

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

INVALID_ORDER_MIN_TICK_SIZE

Przyczyna. Twoja cena nie jest wielokrotnością wielkości ticka rynku (często 0,01, czasem 0,001).

Poprawka. Pobierz wielkość ticka rynku (GET /tick-size) i zaokrąglij do niej cenę przed podpisaniem.

FOK_ORDER_NOT_FILLED

Przyczyna. Zlecenie Fill-Or-Kill nie mogło zostać zrealizowane w całości po twojej cenie wobec bieżącej płynności w księdze, więc zostało anulowane (to FOK działający zgodnie z założeniem, a nie awaria).

Poprawka. Najpierw odczytaj księgę i dobierz wielkość do dostępnej głębokości, poszerz cenę lub użyj GTC/FAK zamiast FOK.

invalid amounts (miejsca dziesiętne)

Przyczyna. Kwoty muszą respektować precyzję dziesiętną - kwota makera do 2 miejsc, kwota takera do 4 miejsc. Nadmiarowa precyzja jest odrzucana.

Poprawka. Zaokrąglaj/kwantyzuj przed podpisaniem; pozwól SDK V2 obliczyć kwoty z ceny × wielkość.

Size lower than the minimum: 5

Przyczyna. Zlecenia poniżej minimalnej wielkości udziałów (5) są odrzucane.

Poprawka. Zwiększ wielkość zlecenia do ≥ 5 udziałów.

429 / dławienie

Przyczyna. Przekroczyłeś limit w oknie przesuwnym. Limity V2 są wysokie (CLOB ~9000 / 10 s; /book,/price 1500 / 10 s; Gamma 4000 / 10 s; Data 1000 / 10 s), a żądania ponad limit są dławione/kolejkowane, a nie twardo odrzucane - ale ogranicznik po stronie klienta i tak jest rozsądny.

Poprawka. Dodaj ogranicznik typu token-bucket i wykładniczy backoff przy 429.

Wciąż utknąłeś? Potwierdź, że korzystasz z SDK V2, twoim zabezpieczeniem jest pUSD, a wszystkie trzy kontrakty V2 są zatwierdzone. Następnie sprawdź Uwierzytelnianie i portfele oraz migrację v1 → v2.

Dalej: Uwierzytelnianie i portfele · Dokumentacja API CLOB · Szybki start z API.