API · Довідник
Читання ринкових даних Полімаркет не потребує ключа. Виставлення чи скасування ордерів потребує двох рівнів авторизації: підпису гаманця L1 (EIP-712) для створення облікових даних API і L2 HMAC-підпису на кожному автентифікованому запиті. Ця сторінка охоплює обидва, плюс чотири типи підпису та адресу фандера - дві речі, що спричиняють більшість помилок авторизації.
- Читання (Gamma, Data, публічний CLOB) - без авторизації.
- L1 - ваш гаманець підписує повідомлення EIP-712 (домен ClobAuth версії
"1"), щоб створити або отримати облікові дані API. - L2 - кожен запит ордера підписується HMAC від
api_key/api_secret/api_passphrase.
Створіть або отримайте облікові дані API (L1)
Ваш гаманець підписує один раз, щоб згенерувати (або повторно отримати) детермінований набір облікових даних API.
Використовуйте V2 SDK - V1 py-clob-client (0.34.x) заархівований і непрацездатний.
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?;
Зберігайте три значення як секрети (змінні середовища). Читання ринкових даних їх ніколи не потребує.
Типи підпису (0-3)
Тип підпису повідомляє біржі, як підпис вашого ордера зіставляється з гаманцем, що тримає кошти (фандером). Оберіть той, що відповідає тому, як було створено ваш акаунт.
| Тип | Назва | Коли |
|---|---|---|
| 0 | EOA | Звичайний гаманець (наприклад, MetaMask), що і підписує, і тримає кошти. |
| 1 | POLY_PROXY | Реєстрація email / Magic.link - кошти тримає проксі-гаманець; ваш ключ підписує від його імені. |
| 2 | POLY_GNOSIS_SAFE | Кошти тримає Gnosis Safe; ключ-підписувач підписує за нього. |
| 3 | POLY_1271 | Депозитний гаманець (підпис смартконтракту EIP-1271). |
Коли ключ для підпису відрізняється від адреси, що тримає кошти (типи 1-3), потрібно передавати і
приватний ключ, і адресу funder.
py-clob-client-v2) і TypeScript (@polymarket/clob-client-v2) мають
відкритий баг: авторизація L1 прив'язує ключ API до вашого EOA замість депозитного гаманця, тож ордери
відхиляються («maker address not allowed, please use the deposit wallet flow»). Офіційний
Rust-клієнт коректно обробляє підписання депозитного гаманця EIP-1271. Обхід без Rust: використовуйте
акаунт email/Magic і підписуйте з signature_type = POLY_PROXY (тип 1). Стежте за issues Полімаркет
#70 (Python) / #65 (TS) щодо виправлення.Підписання запитів (L2)
Кожен автентифікований запит несе підпис HMAC, побудований із вашого секрету API плюс методу запиту, шляху, тіла й позначки часу. V2 SDK будує ці заголовки за вас. Дві речі, які треба тримати правильними:
- Годинник - дрейф понад ~60 секунд призводить до відхилення вашого підпису. Синхронізуйте через NTP.
- Домени - домен L2/ClobAuth EIP-712 лишається версії
"1"; лише домен V2 Exchange (ордера) перейшов на"2". V1-клієнт підписує неправильний домен ордера і падає - див. order_version_mismatch.
Безпека ключів
- Ніколи не кодуйте жорстко приватні ключі чи секрети API - використовуйте змінні середовища; ніколи не комітьте їх.
- Тримайте ключ для підпису й адресу фандера окремо від щоденного гаманця, де можете.
- Ботам лише для читання не потрібні жодні облікові дані - почніть звідти.
Далі: CLOB API: виставити ордер · Виправити помилку авторизації · Міграція v1 → v2.



