Polymarket बनाम Kalshi API: डेवलपर्स के लिए साथ-साथ गाइड (Auth, CLOB, WebSocket, ऐतिहासिक डेटा)

Polymarket और Kalshi एक ही प्रिमिटिव चलाते हैं — CLOB पर हाँ/नहीं वाले कॉन्ट्रैक्ट — पर पूरी तरह अलग API के ज़रिए। एक EIP-712 साइनेचर और एक Polygon wallet की माँग करता है; दूसरा एक REST endpoint है जिसमें FIX वैकल्पिक है। अगर आप एक फ़ोरकास्टिंग एजेंट, एक आर्बिट्राज बॉट, या एक स्मार्ट-मनी मॉनिटर बना रहे हैं, तो यहाँ वह साथ-साथ गाइड है जो पहले से मौजूद होनी चाहिए थी।
TL;DR
- •Polymarket EIP-712 से साइन किए गए ऑर्डर उपयोग करता है जो Polygon पर उसके CLOB में भेजे जाते हैं — wallet ऑनबोर्डिंग और gas शुल्क लागू होते हैं।
- •Kalshi मानक REST + WebSocket auth (email/password → token) उपयोग करता है, साथ ही संस्थागत उपयोगकर्ताओं के लिए एक वैकल्पिक FIX gateway।
- •दोनों ऑर्डर बुक, ट्रेड और ऐतिहासिक डेटा एक्सपोज़ करते हैं, पर schema और रिज़ॉल्यूशन सेमांटिक्स इतना अलग है कि क्रिप्टो/क्वांट टूलिंग के इस कोने में 'एकीकृत' लाइब्रेरीज़ Show HN का सबसे अधिक माँगा जाने वाला विषय हैं।
- •समतुल्य कॉन्ट्रैक्ट के बीच क्रॉस-वेन्यू आर्बिट्राज सबसे आम बिल्ड पैटर्न है (GitHub पर 10+ ओपन-सोर्स बॉट)।
- •API Pick Prediction Markets Search दोनों प्लेटफ़ॉर्म को एक ही POST endpoint में लपेटता है ताकि प्राकृतिक-भाषा में कॉन्ट्रैक्ट खोजे जा सकें — प्रति कॉल 50 क्रेडिट, रैंक किए गए सेमांटिक परिणाम।
यह लेख क्यों मौजूद है
अगर आपने प्रेडिक्शन मार्केट पर निर्माण करते हुए थोड़ा भी समय बिताया है, तो आप वह सर्वमान्य माँग जानते हैं: 'मैं Polymarket और Kalshi दोनों को एक ही Python स्क्रिप्ट से क्वेरी करना चाहता हूँ और मिलते-जुलते कॉन्ट्रैक्ट की एक साफ़-सुथरी सूची वापस पाना चाहता हूँ।' हर प्रेडिक्शन-मार्केट Show HN का HN कमेंट थ्रेड अनिवार्य रूप से इसी पर आकर मिल जाता है — "प्रेडिक्शन मार्केट के लिए CCXT" वाली पोस्ट का एक बार-बार आने वाला पैटर्न है, जो दर्शाता है कि माँग मौजूद है और मौजूदा समाधान बिल्कुल निशाने पर नहीं बैठते।
कठिनाई वास्तविक है। दोनों प्लेटफ़ॉर्म एक ही प्रिमिटिव हल करते हैं — एक सेंट्रल लिमिट ऑर्डर बुक पर बाइनरी "हाँ/नहीं" कॉन्ट्रैक्ट — पर उन्हें नाटकीय रूप से अलग API के ज़रिए एक्सपोज़ करते हैं। यहाँ दोनों का एक काम करने वाला डेवलपर नज़रिया है, साथ-साथ, उस कोड के साथ जो आपको असल में चाहिए।
दो प्लेटफ़ॉर्म, दो आर्किटेक्चर
Polymarket
- चेन: Polygon (USDC.e सेटलमेंट)
- Auth: एक wallet की प्राइवेट की से EIP-712 टाइप्ड-डेटा साइनिंग; कोई पारंपरिक bearer token नहीं
- ऑर्डर प्लेसमेंट: CLOB API में भेजा गया साइन किया हुआ ऑर्डर; gas का भुगतान Polymarket मेटा-ट्रांज़ैक्शन के ज़रिए करता है
- मार्केट खोज: सक्रिय मार्केट ब्राउज़ करने के लिए Gamma API (REST + JSON), साथ ही लाइव ऑर्डर बुक के लिए एक अलग CLOB API
- रियल-टाइम डेटा: ऑर्डर बुक अपडेट और ट्रेड के लिए WebSocket स्ट्रीम
- ऐतिहासिक डेटा: ट्रेड के लिए REST endpoint; दैनिक स्नैपशॉट अलग से डाउनलोड किए जा सकते हैं
Kalshi
- सेटलमेंट: ACH और वायर के ज़रिए USD (अमेरिकी बैंक आवश्यक)
- Auth: email + password → bearer token, या API key (संस्थागत)
- ऑर्डर प्लेसमेंट:
/portfolio/ordersपर मानक प्रमाणित REST POST - मार्केट खोज: इवेंट, मार्केट और सीरीज़ के लिए REST endpoint; साफ़-सुथरा schema
- रियल-टाइम डेटा: फिल, ऑर्डर बुक, ticker के लिए WebSocket और FIX (संस्थागत)
- ऐतिहासिक डेटा: ट्रेड के लिए REST endpoint; मार्केट रिज़ॉल्यूशन और सेटलमेंट डेटा सीधा-सादा
साथ-साथ
| Polymarket | Kalshi | API Pick | |
|---|---|---|---|
| Auth | EIP-712 साइन किए ऑर्डर + Polygon wallet | Email/password → bearer; या API key | x-api-key हेडर (केवल-पढ़ने वाली खोज) |
| सेटलमेंट | Polygon पर USDC | USD बैंक ट्रांसफर (केवल अमेरिका) | n/a (केवल खोज) |
| अमेरिका में वैधता | जियोफ़ेंस्ड (अमेरिका नहीं) | CFTC-रेगुलेटेड | n/a |
| रियल-टाइम | WebSocket | WebSocket + FIX | n/a |
| ऐतिहासिक | REST ट्रेड + स्नैपशॉट | REST ट्रेड + सेटलमेंट | खोज स्रोत के लिंक लौटाती है |
| सबसे उपयुक्त | क्रिप्टो-नेटिव, वैश्विक मार्केट, स्मार्ट-मनी ट्रैकिंग | अमेरिका-रेगुलेटेड, चुनाव और अर्थशास्त्र | क्रॉस-वेन्यू कॉन्ट्रैक्ट खोज |
काम करने वाला कोड: हर एक पर hello-world
Polymarket: सक्रिय मार्केट सूचीबद्ध करें
import requests
# Gamma API — no auth required for browsing
r = requests.get(
"https://gamma-api.polymarket.com/markets",
params={"active": "true", "limit": 25, "order": "volume"},
)
markets = r.json()
for m in markets[:5]:
print(m["question"], "→", m["outcomePrices"])Polymarket: एक साइन किया हुआ ऑर्डर दें (रेखाचित्र)
# Full order placement requires py-order-utils + a Polygon wallet
# This is the structural sketch — not runnable without wallet setup
from py_order_utils.builders import OrderBuilder
from py_order_utils.signer import Signer
signer = Signer(private_key="0xYOUR_PRIVATE_KEY")
builder = OrderBuilder(
exchange_address="0x...",
chain_id=137,
signer=signer,
)
order = builder.build_signed_order({
"maker": signer.address(),
"tokenId": "...", # the yes/no token ID for the market
"makerAmount": "1000000", # USDC.e in atomic units
"takerAmount": "1500000",
"side": "BUY",
"feeRateBps": 0,
"nonce": 0,
"expiration": 0, # 0 = no expiry
})
requests.post(
"https://clob.polymarket.com/order",
json={"order": order, "owner": signer.address(), "orderType": "GTC"},
)Kalshi: लॉग इन करें और एक लिमिट ऑर्डर दें
import requests
# Step 1 — login
r = requests.post(
"https://api.elections.kalshi.com/trade-api/v2/login",
json={"email": "you@example.com", "password": "..."},
).json()
token = r["token"]
headers = {"Authorization": f"Bearer {token}"}
# Step 2 — list markets in an event
r = requests.get(
"https://api.elections.kalshi.com/trade-api/v2/markets",
params={"event_ticker": "POTUS-2028", "limit": 25},
headers=headers,
).json()
print(r["markets"][:5])
# Step 3 — place a limit buy on the "Yes" side at 60 cents
r = requests.post(
"https://api.elections.kalshi.com/trade-api/v2/portfolio/orders",
headers=headers,
json={
"ticker": "POTUS-2028-DEM",
"type": "limit",
"action": "buy",
"side": "yes",
"count": 100, # 100 contracts
"yes_price": 60, # 60 cents
"client_order_id": "abc123",
},
)
print(r.json())API Pick: दोनों पर प्राकृतिक-भाषा खोज
import requests
r = requests.post(
"https://www.apipick.com/api/search/prediction-markets",
headers={"x-api-key": "pk_yourkey"},
json={"query": "Federal Reserve rate cuts before end of 2026"},
)
for hit in r.json()["results"][:5]:
print(hit["title"], "@", hit["venue"], "→", hit["url"])
# Returns ranked matches across Polymarket + Kalshi.
# 50 credits per call (~$0.05), only on HTTP 200.तीन प्रोडक्शन पैटर्न जो वाकई काम करते हैं
1. क्रॉस-वेन्यू आर्बिट्राज बॉट
GitHub पर सबसे आम पैटर्न: "यह Polymarket कॉन्ट्रैक्ट उसी नतीजे पर रिज़ॉल्व होता है जिस पर यह Kalshi कॉन्ट्रैक्ट" वाली एक मानव-संपादित whitelist। बॉट दोनों बुक देखता रहता है, निहित संभावना की गणना करता है, और जब स्प्रेड किसी थ्रेशोल्ड को पार करता है तब पोज़िशन लेता है। उदाहरण: ImMike/polymarket-arbitrage और realfishsam/prediction-market-arbitrage-bot।
कठिन हिस्सा whitelist है। "क्या Fed दिसंबर की बैठक में 25 bps घटाएगा" किसी इंसान को एक जैसा दिखता है, पर रिज़ॉल्यूशन स्रोत और सटीक शब्दावली अलग होती है; एक स्वचालित मिलानकर्ता इतनी बार ग़लती करता है कि असली बॉट मानव-संपादित मैपिंग का उपयोग करते हैं।
2. स्मार्ट-मनी मॉनिटर
Polymarket पर व्हेल्स ऑन-चेन दिखाई देती हैं। एक मॉनिटर विशिष्ट मार्केट पर बड़े ऑर्डर फ़्लो के लिए Polygon को देखता रहता है, बड़ी पोज़िशनों को सामने लाता है, और सुर्खियाँ न्यूज़ API तक पहुँचने से पहले तेज़ कीमत-गतिविधि को फ़्लैग करता है। यह पुष्टि करने के लिए कि कोई दिखती हुई हलचल समाचार-संचालित है या शुद्ध सट्टा, इसे News Search के साथ जोड़ें।
3. किसी LLM एजेंट के लिए फ़ोरकास्टिंग फ़ीड
Polymarket / Kalshi की मौजूदा कीमतें किसी LLM एजेंट के संदर्भ में खींचने से मॉडल संभावना-आधारित उत्तर दे पाता है: "मौजूदा बेटिंग मार्केट X की ~65% संभावना का संकेत देते हैं"। यही वह खोज वाला उपयोग-मामला है जिसे API Pick कवर करता है — एजेंट के एक प्राकृतिक-भाषा सवाल पर रैंक किए गए कॉन्ट्रैक्ट लौटाएँ ताकि एजेंट अपने उत्तर में कीमत बता सके।
आम गड़बड़ियाँ (HN कमेंट से संकलित)
- Polymarket EIP-712 साइनिंग — ऑर्डर साइनेचर निश्चयात्मक है पर टूलिंग की ग़लतियाँ आम हैं। अपना खुद का बनाने के बजाय
py-order-utilsउपयोग करें। शुरुआती बॉट घाटों में से ज़्यादातर उन साइनेचर मिसमैच से आते हैं जिन्हें API चुपचाप अस्वीकार कर देता है। - Kalshi rate limit — दस्तावेज़ों में 100 req/sec बताया गया है पर व्यस्त इवेंट दिनों (चुनाव की रातें, FOMC) में कुछ endpoint के लिए कम। अपने क्लाइंट में retry-with-backoff बनाएँ।
- Polymarket gas स्पाइक — बड़े-वॉल्यूम वाले दिनों में Polygon का gas उछल सकता है। Polymarket ज़्यादातर ऑर्डर प्लेसमेंट को मेटा-ट्रांज़ैक्शन के ज़रिए सब्सिडी देता है, पर सेटलमेंट और निकासी उपयोगकर्ता-भुगतान है। P&L गणनाओं में इसका हिसाब रखें।
- सेटलमेंट मिसमैच — दिखने में समतुल्य कभी-कभी अलग तरह रिज़ॉल्व होते हैं। पेयर-ट्रेडिंग से पहले हमेशा दोनों कॉन्ट्रैक्ट के रिज़ॉल्यूशन-स्रोत खंड पढ़ें।
- WebSocket डिस्कनेक्ट — दोनों प्लेटफ़ॉर्म पर नियमित WebSocket फ़्लैप होते हैं। किसी भी प्रोडक्शन बॉट के लिए सीक्वेंस-नंबर रीप्ले के साथ रीकनेक्ट लॉजिक अनिवार्य है।
तेज़ी से चुनाव
यह किस ओर जा रहा है
प्रेडिक्शन मार्केट को अभी असामान्य रूप से ज़्यादा मुख्यधारा का ध्यान मिल रहा है: अमेरिकी चुनावों, FOMC आयोजनों, खेल और AI-टेकऑफ़ सवालों के इर्द-गिर्द बड़े वॉल्यूम; न्यूज़ साइटों के साथ व्यापक एकीकरण जो निहित संभावनाएँ सामने लाते हैं; और डेवलपर टूलिंग की एक लहर (Show HN, GitHub रिपॉज़िटरी) जो उसी विषय पर आकर मिलती है — 'किसी को प्रेडिक्शन मार्केट के लिए CCXT लिखना चाहिए।'
हमें नहीं लगता कि CCXT-शैली की एकीकृत-निष्पादन लाइब्रेरी सही रूप है। auth, सेटलमेंट और रेगुलेटरी व्यवस्था में अंतर इतने गहरे हैं कि उपयोगकर्ता से झूठ बोले बिना उन्हें साफ़-सुथरे ढंग से एब्स्ट्रैक्ट नहीं किया जा सकता। पर खोज की समस्या — एक प्राकृतिक-भाषा सवाल दिए जाने पर, पहले से मौजूद कॉन्ट्रैक्ट ढूँढना — सेमांटिक खोज से हल हो सकती है, और यही API Pick Prediction Markets Search करता है। कॉन्ट्रैक्ट ढूँढें; ऑर्डर प्लेटफ़ॉर्म पर ही दें।
अक्सर पूछे जाने वाले प्रश्न
किस प्लेटफ़ॉर्म पर ज़्यादा कॉन्ट्रैक्ट हैं?
लिखते समय, दोनों दसियों हज़ार सक्रिय मार्केट सूचीबद्ध करते हैं। Polymarket क्रिप्टो-नेटिव और वैश्विक झुकाव वाला है (राजनीति, खेल, क्रिप्टो, सामयिक घटनाएँ); Kalshi CFTC-रेगुलेटेड है और अमेरिका-केंद्रित है (चुनाव, अर्थशास्त्र, मौसम, खेल)। श्रेणी के अनुसार वॉल्यूम वितरण अलग होता है — अमेरिकी चुनावों के लिए Kalshi आमतौर पर ज़्यादा गहरा होता है; वैश्विक राजनीति और क्रिप्टो-नेटिव सवालों के लिए Polymarket।
Show HN पर ओपन-सोर्स 'एकीकृत' लाइब्रेरीज़ बार-बार क्यों दिखती रहती हैं?
क्योंकि माँग मौजूद है और किसी ने इसे ठीक से हल नहीं किया। 'Open-source library to unify Polymarket and Kalshi APIs' और 'dr-manhattan — CCXT for Prediction Markets' जैसी Show HN पोस्ट बार-बार आने वाले पैटर्न हैं। चुनौती है समतुल्य कॉन्ट्रैक्ट मिलाना (एक ही नतीजा, अलग शब्दावली) और सेटलमेंट सेमांटिक्स में सामंजस्य बैठाना। लाइब्रेरीज़ आमतौर पर auth रैपर पर तो खरी उतरती हैं पर कॉन्ट्रैक्ट मिलान तक नहीं पहुँचतीं।
मैं बुनियादी क्रॉस-वेन्यू आर्बिट्राज कैसे करूँ?
सैद्धांतिक रूप से: दो कॉन्ट्रैक्ट ढूँढें जो अलग-अलग प्लेटफ़ॉर्म पर एक ही नतीजे पर रिज़ॉल्व होते हों, निहित संभावनाएँ जाँचें, ऊँची कीमत वाला 'No' पक्ष और नीची कीमत वाला 'Yes' पक्ष लें, और रिज़ॉल्यूशन तक होल्ड करें। व्यवहार में रुकावट निष्पादन में है: Polymarket के gas शुल्क, Kalshi की USD फंडिंग, आंशिक फिल, और ऊपर बताया गया मिलान का सवाल। GitHub पर ज़्यादातर लाइव आर्बिट्राज बॉट कॉन्ट्रैक्ट-पेयर मैपिंग की एक मानव-संपादित whitelist पर चलते हैं, बजाय उन्हें अपने आप खोजने के।
क्या Polymarket अमेरिका में कानूनी है?
Polymarket फ़िलहाल अमेरिकी उपयोगकर्ताओं के लिए अधिकृत नहीं है; पहुँच जियोफ़ेंस्ड है। Kalshi CFTC-रेगुलेटेड है और अमेरिका में कानूनी है। अगर आप अमेरिकी उपयोगकर्ताओं के लिए कोई प्रोडक्ट बना रहे हैं, तो Kalshi ही एकमात्र विकल्प है। अगर आप वैश्विक स्तर पर बना रहे हैं, तो Polymarket व्यापक मार्केट कवरेज लाता है।
इस स्टैक में API Pick कहाँ फिट होता है?
API Pick Prediction Markets Search 'खोज' की समस्या हल करता है: एक प्राकृतिक-भाषा सवाल दिए जाने पर (उदा. 'Fed साल के अंत तक दरें घटाता है'), यह एक POST कॉल में Polymarket और Kalshi कॉन्ट्रैक्ट के बीच रैंक किए गए सेमांटिक मिलान लौटाता है। हम ऑर्डर-निष्पादन API की जगह नहीं लेते — ऑर्डर देने के लिए आप अब भी सीधे हर प्लेटफ़ॉर्म पर जाते हैं। हम सही मार्केट ढूँढना आसान बना देते हैं।
इस लेख में उपयोग की गई APIs
Sarah Choy, API Pick की CEO हैं। वे AI एजेंट्स और LLM वर्कफ़्लो के लिए प्रोडक्शन-रेडी APIs बनाने के बारे में लिखती हैं।