API · Dokumentacja

Odczyt danych rynkowych Polymarket nie wymaga klucza. Składanie lub anulowanie zleceń wymaga dwóch warstw uwierzytelniania: podpisu portfela L1 (EIP-712) do utworzenia poświadczeń API oraz podpisu HMAC L2 przy każdym uwierzytelnionym żądaniu. Ta strona omawia obie warstwy, a także cztery typy podpisów i adres funder - dwie rzeczy, które powodują większość błędów uwierzytelniania.

W skrócie
  • Odczyt (Gamma, Data, publiczny CLOB) - bez uwierzytelniania.
  • L1 - twój portfel podpisuje komunikat EIP-712 (domena ClobAuth w wersji "1"), by utworzyć lub wyprowadzić poświadczenia API.
  • L2 - każde żądanie zlecenia jest podpisywane HMAC z api_key / api_secret / api_passphrase.

Utwórz lub wyprowadź poświadczenia API (L1)

Twój portfel podpisuje się raz, by wygenerować (lub ponownie wyprowadzić) deterministyczny zestaw poświadczeń API. Użyj SDK V2 - klient V1 py-clob-client (0.34.x) jest zarchiwizowany i niedziałający.

from py_clob_client_v2 import ClobClient   # pip install py-clob-client-v2

# L1: your wallet signs to derive API credentials
client = ClobClient(host="https://clob.polymarket.com", chain_id=137, key=PRIVATE_KEY)
creds = client.create_or_derive_api_key()    # api_key, api_secret, api_passphrase

# L1 + L2: rebuild the client WITH creds for authenticated calls (no set_api_creds in v2)
client = ClobClient(host="https://clob.polymarket.com", chain_id=137, key=PRIVATE_KEY, creds=creds)
// polymarket_client_sdk_v2 - official Rust client (repo rs-clob-client-v2)
use polymarket_client_sdk_v2::clob::{Client, Config};
use polymarket_client_sdk_v2::clob::types::SignatureType;
let client = Client::new("https://clob.polymarket.com", Config::default())?
    .authentication_builder(&signer)
    .funder(deposit_wallet)                   // deposit wallets work in Rust today
    .signature_type(SignatureType::Poly1271)
    .authenticate().await?;

Przechowuj te trzy wartości jako sekrety (zmienne środowiskowe). Odczyt danych rynkowych nigdy ich nie wymaga.

Typy podpisów (0-3)

Typ podpisu mówi giełdzie, jak podpis twojego zlecenia odwzorowuje się na portfel, który przechowuje środki (funder). Wybierz ten, który pasuje do sposobu utworzenia twojego konta.

TypNazwaKiedy
0EOAZwykły portfel (np. MetaMask), który zarazem podpisuje i przechowuje środki.
1POLY_PROXYRejestracja e-mail / Magic.link - portfel proxy przechowuje środki; twój klucz podpisuje w jego imieniu.
2POLY_GNOSIS_SAFEGnosis Safe przechowuje środki; klucz podpisujący podpisuje za niego.
3POLY_1271Portfel depozytowy (podpis smart-kontraktu EIP-1271).

Gdy klucz podpisujący różni się od adresu przechowującego środki (typy 1-3), musisz przekazać zarówno klucz prywatny, jak i adres funder.

Portfele depozytowe (typ 3) - dziś użyj Rusta. 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 zlecenia są odrzucane („maker address not allowed, please use the deposit wallet flow”). Oficjalny klient Rust obsługuje podpisywanie portfela depozytowego EIP-1271 poprawnie. Obejście poza Rustem: użyj konta e-mail/Magic i podpisuj z signature_type = POLY_PROXY (typ 1). Sprawdzaj zgłoszenia Polymarket #70 (Python) / #65 (TS) w oczekiwaniu na poprawkę.

Podpisywanie żądań (L2)

Każde uwierzytelnione żądanie niesie podpis HMAC zbudowany z twojego sekretu API oraz metody, ścieżki, treści i znacznika czasu żądania. SDK V2 buduje te nagłówki za ciebie. Dwie rzeczy, które trzeba mieć poprawne:

  • Zegar - dryf większy niż ~60 sekund powoduje odrzucenie podpisu. Synchronizuj przez NTP.
  • Domeny - domena EIP-712 L2/ClobAuth pozostaje w wersji "1"; tylko domena Exchange (zleceń) V2 przeszła na "2". Klient V1 podpisuje niewłaściwą domenę zlecenia i zawodzi - zobacz order_version_mismatch.

Bezpieczeństwo kluczy

  • Nigdy nie zapisuj kluczy prywatnych ani sekretów API na sztywno - używaj zmiennych środowiskowych; nigdy ich nie commituj.
  • W miarę możliwości trzymaj klucz podpisujący i adres funder z dala od portfela używanego na co dzień.
  • Boty tylko do odczytu nie potrzebują żadnych poświadczeń - zacznij od nich.

Dalej: API CLOB: złóż zlecenie · Napraw błąd uwierzytelniania · Migracja v1 → v2.