API · Довідник
CLOB (Central Limit Order Book) на clob.polymarket.com - це де ордери
лежать і матчаться. Ви читаєте книгу, ціни й крок ціни без автентифікації, і торгуєте
(виставляєте / скасовуєте ордери, читаєте свій баланс) з обліковими даними API і підписом.
Це довідник CLOB V2 - застава - це pUSD, комісії ончейн, а
мейкери платять нуль.
Прочитати книгу замовлень (без автентифікації)
from py_clob_client_v2 import ClobClient # pip install py-clob-client-v2
client = ClobClient(host="https://clob.polymarket.com", chain_id=137) # read-only: no key
book = client.get_order_book(token_id)
mid = client.get_midpoint(token_id)
print(book.bids[0].price, book.asks[0].price, mid)
// polymarket_client_sdk_v2 (official, repo rs-clob-client-v2)
use polymarket_client_sdk_v2::clob::{Client, Config};
use polymarket_client_sdk_v2::clob::types::request::OrderBookSummaryRequest;
let client = Client::new("https://clob.polymarket.com", Config::default())?;
let book = client.order_book(&OrderBookSummaryRequest::builder().token_id(token_id).build()).await?;
curl -s "https://clob.polymarket.com/book?token_id=$TOKEN_ID"
Приклад відповіді
{
"market": "0x...",
"bids": [ { "price": "0.62", "size": "1400" }, { "price": "0.61", "size": "900" } ],
"asks": [ { "price": "0.64", "size": "1100" }, { "price": "0.65", "size": "2000" } ]
}
Ендпоінти для читання
| Ендпоінт | Повертає |
|---|---|
GET /book?token_id= | Повну книгу замовлень (bids / asks). |
GET /price?token_id=&side= | Найкращий bid чи ask. |
GET /midpoint?token_id= | Середина = (найкращий bid + найкращий ask) / 2. |
GET /spread?token_id= | Найкращий ask − найкращий bid. |
GET /tick-size?token_id= | Мінімальний крок ціни (округліть до нього свою ціну). |
Ліміти високі: CLOB ~9000 запитів / 10 с, /book і /price 1500 / 10 с,
а запити понад ліміт сповільнюються, а не відхиляються. Докладніше про 429.
Виставити і скасувати ордер (автентифікація)
Один виклик будує, підписує (структуру ордера V2) і виставляє ваш ордер. Ви обираєте тип ордера:
| Тип | Поведінка |
|---|---|
GTC | Good-Till-Cancelled - лежить у книзі, доки не виконається чи не скасується. |
GTD | Good-Till-Date - лежить до часової мітки закінчення. |
FOK | Fill-Or-Kill - виконати весь ордер негайно чи скасувати. |
FAK | Fill-And-Kill - виконати що можна негайно, решту скасувати. |
from py_clob_client_v2 import (ClobClient, OrderArgs, OrderType,
PartialCreateOrderOptions, Side, OrderPayload)
# authenticated client (creds from create_or_derive_api_key - see Authentication)
client = ClobClient(host="https://clob.polymarket.com", chain_id=137, key=PK, creds=creds)
resp = client.create_and_post_order(
order_args=OrderArgs(token_id=token_id, price=0.62, side=Side.BUY, size=10),
options=PartialCreateOrderOptions(tick_size="0.01", neg_risk=False), # read both off the market
order_type=OrderType.GTC, # GTC, GTD, FOK or FAK
)
# resp -> {"success": true, "orderID": "0x...", "status": "live"}
client.cancel_order(OrderPayload(orderID=resp["orderID"])) # cancel
tick_size ринку ("0.01" чи "0.001") і встановлюйте neg_risk=True для
багаторезультатних ринків «негативного ризику» - читайте обидва з Gamma (orderPriceMinTickSize,
negRisk) перед підписом. Також: мінімальний розмір ордера - 5 часток, і ваша ціна
має бути вже округлена до кроку, інакше ордер відхиляється.nonce,
feeRateBps, taker і expiration і додала timestamp,
metadata і builder; версія домену Exchange EIP-712 - "2".
Комісії збираються ончейн під час матчингу - мейкери платять 0, платять лише тейкери.
Перед торгівлею ви маєте надати дозвіл pUSD + умовним токенам трьом контрактам V2
(див. виправлення дозволу).Комісії: платять лише тейкери, і ставка вигинається
З мейкерів ніколи не стягують. Тейкери платять комісію, яка не фіксована - вона масштабується з невизначеністю ринку і залежить від категорії. Формула:
fee = shares × feeRate × p × (1 - p) # p = share price, 0..1
Член p·(1-p) означає, що комісія досягає піку на 50/50 і зменшується до країв 1¢ і
99¢ - тож майже певний результат дешево брати, а «підкидання монети» дороге. Ставка тейкера
feeRate за категоріями:
| Категорія | feeRate тейкера |
|---|---|
| Крипто | 0,07 (7 б.п.) - найвища |
| Економіка / Культура / Погода | 0,05 |
| Фінанси / Політика / Технології / Згадки | 0,04 |
| Спорт | 0,03 |
| Геополітика й світові події | 0 - без комісії |
Читайте живу ставку на токен через GET /fee-rate-bps?token_id=, а не хардкодьте її; комісії
округлюються до 5 знаків (мін. 0,00001 pUSD). Те, що мейкери платять нуль, - причина, чому більшість ботів без переваги котирують, а не беруть.
Ринки негативного ризику (багаторезультатні)
Події з багатьма кандидатами («хто виграє вибори?») - це neg-risk ринки: їхні результати
пов'язані, тож частка No в одному результаті конвертується в частку Yes у кожному іншому через Neg
Risk Adapter - капіталоефективно, але механічно інакше. Вони працюють на інших контрактах,
ніж бінарні ринки, тож ви мусите передати neg_risk=True в опціях ордера (читайте
прапорець ринку negRisk з Gamma). Пропустіть його - і ордер підписується проти неправильної біржі
й відхиляється.
Умовні токени: split, merge, redeem (поза книгою)
Під кожним ринком - Conditional Token Framework (CTF). Токени результатів - це токени ERC-1155, і кожна пара Yes/No забезпечена рівно $1,00 pUSD, заблокованим у контракті CTF. Це дає вам три примітиви, яких сама книга замовлень не має:
| Операція | Що робить | Чому бот її використовує |
|---|---|---|
| Split | Заблокувати $1 pUSD → викарбувати 1 Yes + 1 No | Створити інвентар, не перетинаючи спред; котирувати обидва боки. |
| Merge | Спалити 1 Yes + 1 No → повернути $1 pUSD | Миттєво вийти з хеджованої пари - без очікування врегулювання, без комісії тейкера. |
| Redeem | Після врегулювання, токен-переможець → $1,00 pUSD | Погасити вирішену позицію (redeemPositions). |
Split і merge - основа CTF-арбітражу: якщо Yes + No торгуються нижче
$1,00 в книзі, купіть обидва і merge назад до $1,00; якщо вони торгуються вище $1,00,
split $1 у свіжу пару і продайте обидва. Погашення розраховується через контракт
ConditionalTokens, щойно оракул опублікує результат ончейн - позиція показує
redeemable: true у Data API, коли її можна отримати.
ID позицій виводяться через getConditionId → getCollectionId → getPositionId.
Просунуте: RFQ і комбо-ринки (для серйозних мейкерів)
Поза книгою замовлень Полімаркет запускає систему Request-for-Quote (RFQ), яку використовують особливо для комбо-ринків - наявних ринків, зібраних у багатоногі композитні позиції. Потік має три фази: тейкер запитує котирування, мейкери конкурують котируваннями, а обраний мейкер отримує останній погляд, щоб підтвердити чи відхилити перед виконанням.
- Знайти комбо:
GET /v1/rfq/combo-markets(публічно;limit1-100,cursor,exclude). Кожне комбо надає два ID позицій (Yes = індекс 0, No = індекс 1). - Котирувати як мейкер:
POST combos-rfq-api.polymarket.com/v1/maker/quotes(автентифікація L2). Ви генеруєтеquote_idсамі й надсилаєтеrfq_id,maker_address,signature_type, підписаний ордер Exchange іprice_e6/size_e6як шестизнакові рядки з фіксованою комою (конвенція*_e6уникає втрати точності float). - Останній погляд: поки RFQ у стані
AWAITING_MAKER_CONFIRMATION, відповідайтеCONFIRM,DECLINEчи дайте йомуTIMED_OUT.
Скінченний автомат RFQ: CREATED → COLLECTING_QUOTES → AWAITING_REQUESTER_ACCEPTANCE →
AWAITING_MAKER_CONFIRMATION → EXECUTING → FILLED (інакше FAILED / EXPIRED / CANCELED / REJECTED). Підпишіться на
WebSocket-шлюз RFQ для живого стану. Це нішеве - більшості ботів потрібна лише книга CLOB вище - але саме так
оцінюється багатонога й комбо-ліквідність.
Перевірити баланс і дозвіл
client.get_balance_allowance(...) # collateral (pUSD) and conditional-token allowances
Якщо це показує нульовий дозвіл, надайте дозвіл pUSD/CTF контрактам біржі V2 перед виставленням ордерів.
outcomes (Gamma повертає його, і
clobTokenIds, як JSON-закодовані рядки, які треба декодувати) і зіставляйте за назвою.Далі: Автентифікація та гаманці · WebSocket: стрім книги · Виправити помилку CLOB.



