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)

Тип підпису повідомляє біржі, як підпис вашого ордера зіставляється з гаманцем, що тримає кошти (фандером). Оберіть той, що відповідає тому, як було створено ваш акаунт.

ТипНазваКоли
0EOAЗвичайний гаманець (наприклад, MetaMask), що і підписує, і тримає кошти.
1POLY_PROXYРеєстрація email / Magic.link - кошти тримає проксі-гаманець; ваш ключ підписує від його імені.
2POLY_GNOSIS_SAFEКошти тримає Gnosis Safe; ключ-підписувач підписує за нього.
3POLY_1271Депозитний гаманець (підпис смартконтракту EIP-1271).

Коли ключ для підпису відрізняється від адреси, що тримає кошти (типи 1-3), потрібно передавати і приватний ключ, і адресу funder.

Депозитні гаманці (тип 3) - сьогодні використовуйте Rust. Станом на червень 2026 клієнти Python (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.