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. Используйте SDK V2 —
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). Отслеживайте issue Полимаркет
#70 (Python) / #65 (TS) для исправления.Подпись запросов (L2)
Каждый аутентифицированный запрос несёт подпись HMAC, построенную из вашего секрета API плюс метод запроса, путь, тело и метку времени. SDK V2 строит эти заголовки за вас. Две вещи, которые нужно держать в порядке:
- Часы — расхождение более ~60 секунд приводит к отклонению вашей подписи. Синхронизируйтесь через NTP.
- Домены — версия домена EIP-712 L2/ClobAuth остаётся
"1"; только домен V2 Exchange (ордер) перешёл на"2". Клиент V1 подписывает неверный домен ордера и падает — см. order_version_mismatch.
Безопасность ключей
- Никогда не хардкодьте приватные ключи или секреты API — используйте переменные окружения; никогда не коммитьте их.
- По возможности держите ключ для подписи и адрес фандера отдельно от вашего повседневного кошелька.
- Ботам только для чтения не нужны никакие учётные данные — начните с них.
Далее: CLOB API: разместить ордер · Исправить ошибку аутентификации · Миграция v1 → v2.



