API · रेफरेंस

clob.polymarket.com पर मौजूद CLOB (Central Limit Order Book) वह जगह है जहाँ ऑर्डर टिके रहते हैं और मैच होते हैं। आप बुक, प्राइस और टिक साइज़ को बिना auth के पढ़ते हैं, और API क्रेडेंशियल तथा साइनिंग के साथ ट्रेड करते हैं (ऑर्डर लगाना / कैंसिल करना, अपना बैलेंस पढ़ना)। यह CLOB V2 रेफरेंस है - कोलैटरल pUSD है, फ़ीस ऑन-चेन है, और मेकर शून्य देते हैं।

ऑर्डर बुक पढ़ें (बिना auth)

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=पूरी ऑर्डर बुक (बिड / आस्क)।
GET /price?token_id=&side=बेस्ट बिड या आस्क।
GET /midpoint?token_id=मिड = (बेस्ट बिड + बेस्ट आस्क) / 2।
GET /spread?token_id=बेस्ट आस्क − बेस्ट बिड।
GET /tick-size?token_id=न्यूनतम प्राइस इंक्रीमेंट (अपने प्राइस को इसमें राउंड करें)।

लिमिट ऊँची हैं: CLOB ~9,000 रिक्वेस्ट / 10s, /book और /price 1,500 / 10s, और लिमिट से ज़्यादा रिक्वेस्ट थ्रॉटल की जाती हैं, रिजेक्ट नहीं। 429 पर और जानें।

ऑर्डर लगाएँ और कैंसिल करें (auth)

एक कॉल आपका ऑर्डर बनाता है, उस पर हस्ताक्षर करता है (V2 ऑर्डर struct) और पोस्ट करता है। आप एक ऑर्डर टाइप चुनते हैं:

टाइपव्यवहार
GTCGood-Till-Cancelled - भरने या कैंसिल होने तक बुक पर टिका रहता है।
GTDGood-Till-Date - एक एक्सपायरी टाइमस्टैम्प तक टिका रहता है।
FOKFill-Or-Kill - पूरे ऑर्डर को तुरंत भरें या उसे कैंसिल करें।
FAKFill-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") पास करें और मल्टी-आउटकम "negative risk" मार्केट के लिए neg_risk=True सेट करें - हस्ताक्षर से पहले दोनों को Gamma से पढ़ें (orderPriceMinTickSize, negRisk)। साथ ही: न्यूनतम ऑर्डर साइज़ 5 शेयर है, और आपका प्राइस पहले से टिक पर राउंड होना चाहिए वरना ऑर्डर रिजेक्ट हो जाता है।
V2 ऑर्डर तथ्य। हस्ताक्षरित struct ने nonce, feeRateBps, taker और expiration हटा दिए और timestamp, metadata तथा builder जोड़े; Exchange EIP-712 domain version "2" है। फ़ीस मैच पर ऑन-चेन ली जाती है - मेकर 0 देते हैं, केवल टेकर देते हैं। ट्रेड करने से पहले आपको तीन V2 contracts को pUSD + conditional tokens अप्रूव करने होंगे (अलाउंस फ़िक्स देखें)।

फ़ीस: केवल टेकर देते हैं, और रेट घटता-बढ़ता है

मेकर से कभी शुल्क नहीं लिया जाता। टेकर एक फ़ीस देते हैं जो फ़्लैट नहीं है - यह मार्केट की अनिश्चितता के साथ बदलती है और श्रेणी के अनुसार अलग होती है। फ़ॉर्मूला:

fee = shares × feeRate × p × (1 - p)      # p = share price, 0..1

p·(1-p) टर्म का मतलब है कि फ़ीस 50/50 पर चरम पर होती है और 1¢ तथा 99¢ किनारों की ओर घटती है - यानी लगभग निश्चित परिणाम को टेक करना सस्ता है, और सिक्का-उछाल जैसा मौका महँगा। प्रति-श्रेणी टेकर feeRate:

श्रेणीटेकर feeRate
Crypto0.07 (7 bps) - सबसे ऊँची
Economics / Culture / Weather0.05
Finance / Politics / Tech / Mentions0.04
Sports0.03
Geopolitics और विश्व घटनाएँ0 - फ़ीस-मुक्त

हार्डकोड करने के बजाय प्रति टोकन लाइव रेट को GET /fee-rate-bps?token_id= से पढ़ें; फ़ीस 5 दशमलव तक राउंड होती है (न्यूनतम 0.00001 pUSD)। मेकर का शून्य देना ही वजह है कि अधिकांश एज-रहित बॉट टेक करने के बजाय कोट करते हैं।

नेगेटिव-रिस्क (मल्टी-आउटकम) मार्केट

मल्टी-कैंडिडेट इवेंट ("चुनाव कौन जीतेगा?") neg-risk मार्केट होते हैं: इनके परिणाम आपस में जुड़े होते हैं, इसलिए Neg Risk Adapter के ज़रिए एक परिणाम का No शेयर हर दूसरे परिणाम के Yes शेयर में बदल जाता है - पूँजी-कुशल, पर तकनीकी रूप से अलग। ये बाइनरी मार्केट से अलग contracts पर चलते हैं, इसलिए आपको ऑर्डर options में neg_risk=True पास करना ज़रूरी है (मार्केट का negRisk फ़्लैग Gamma से पढ़ें)। इसे छोड़ें तो ऑर्डर गलत exchange के विरुद्ध हस्ताक्षरित होकर रिजेक्ट हो जाता है।

Conditional tokens: split, merge, redeem (बुक से आगे)

हर मार्केट के नीचे Conditional Token Framework (CTF) है। परिणाम टोकन ERC-1155 टोकन होते हैं, और हर Yes/No जोड़ी ठीक $1.00 pUSD से समर्थित होती है जो CTF contract में लॉक रहता है। यह आपको तीन प्रिमिटिव देता है जो अकेली ऑर्डर बुक नहीं देती:

ऑपरेशनक्या करता हैबॉट इसका उपयोग क्यों करता है
Split$1 pUSD लॉक करें → 1 Yes + 1 No मिंट करेंस्प्रेड पार किए बिना इन्वेंटरी बनाएँ; दोनों तरफ़ कोट करें।
Merge1 Yes + 1 No बर्न करें → $1 pUSD वापस पाएँहेज की गई जोड़ी से तुरंत बाहर निकलें - कोई रिज़ॉल्यूशन इंतज़ार नहीं, कोई टेकर फ़ीस नहीं।
Redeemरिज़ॉल्यूशन के बाद, जीतने वाला टोकन → $1.00 pUSDरिज़ॉल्व हो चुकी पोज़िशन को कैश आउट करें (redeemPositions)।

Split और merge CTF आर्बिट्राज का आधार हैं: अगर बुक पर Yes + No $1.00 से नीचे ट्रेड करें, तो दोनों खरीदें और $1.00 वापस पाने के लिए merge करें; अगर वे $1.00 से ऊपर ट्रेड करें, तो $1 को एक नई जोड़ी में split करें और दोनों बेचें। ऑरैकल परिणाम को ऑन-चेन पोस्ट कर देने पर रिडेम्पशन ConditionalTokens contract के ज़रिए सेटल होता है - जब एक पोज़िशन क्लेम करने योग्य हो तो वह Data API पर redeemable: true दिखाती है। पोज़िशन ID इस क्रम से निकलती है: getConditionId → getCollectionId → getPositionId।

एडवांस्ड: RFQ और combo मार्केट (गंभीर मेकर के लिए)

ऑर्डर बुक से आगे, पॉलीमार्केट एक Request-for-Quote (RFQ) सिस्टम चलाता है, जिसका उपयोग खासकर combo मार्केट के लिए होता है - मौजूदा मार्केट को मल्टी-लेग कंपोज़िट पोज़िशन में बंडल किया जाता है। इस फ़्लो के तीन चरण हैं: एक टेकर कोट का अनुरोध करता है, मेकर कोट के साथ प्रतिस्पर्धा करते हैं, और चुने गए मेकर को निष्पादन से पहले पुष्टि या अस्वीकार करने का last look मिलता है।

  • Combo खोजें: GET /v1/rfq/combo-markets (पब्लिक; limit 1-100, cursor, exclude)। हर combo दो position ID उजागर करता है (Yes = index 0, No = index 1)।
  • मेकर के रूप में कोट करें: POST combos-rfq-api.polymarket.com/v1/maker/quotes (L2 auth)। आप quote_id स्वयं जनरेट करते हैं, और rfq_id, maker_address, signature_type, एक हस्ताक्षरित Exchange ऑर्डर, तथा price_e6 / size_e6 को छह-दशमलव फ़िक्स्ड-पॉइंट स्ट्रिंग के रूप में भेजते हैं (*_e6 कन्वेंशन फ़्लोट प्रिसीज़न हानि से बचाता है)।
  • Last look: जब RFQ AWAITING_MAKER_CONFIRMATION हो, तो CONFIRM, DECLINE से जवाब दें, या इसे TIMED_OUT होने दें।

RFQ स्टेट मशीन: CREATED → COLLECTING_QUOTES → AWAITING_REQUESTER_ACCEPTANCE → AWAITING_MAKER_CONFIRMATION → EXECUTING → FILLED (अन्यथा FAILED / EXPIRED / CANCELED / REJECTED)। लाइव स्टेट के लिए RFQ WebSocket gateway को सब्सक्राइब करें। यह विशिष्ट है - अधिकांश बॉट को केवल ऊपर दी गई CLOB बुक चाहिए - पर इसी से मल्टी-लेग और combo लिक्विडिटी की कीमत तय होती है।

बैलेंस और अलाउंस जाँचें

client.get_balance_allowance(...)   # collateral (pUSD) and conditional-token allowances

अगर यह शून्य अलाउंस दिखाए, तो ऑर्डर करने से पहले V2 exchange contracts को pUSD/CTF अप्रूव करें।

Yes / No टोकन ID। हर बाइनरी मार्केट के दो टोकन ID होते हैं। कौन-सा Yes है इसे हार्डकोड न करें - पार्स किए गए outcomes array को पढ़ें (Gamma इसे, और clobTokenIds को, JSON-एन्कोडेड स्ट्रिंग के रूप में लौटाता है जिन्हें आपको डिकोड करना होता है) और नाम से मैप करें।

आगे: ऑथेंटिकेशन और वॉलेट · WebSocket: बुक स्ट्रीम करें · CLOB एरर ठीक करें।