API · Reference

gamma-api.polymarket.com पर मौजूद Gamma API "कैटलॉग" है - इसी से आप बाज़ार और इवेंट खोजते हैं और वे token IDs पाते हैं जिनकी CLOB को ट्रेड करने के लिए ज़रूरत होती है। यह सार्वजनिक है, कोई auth नहीं, इसलिए आप अभी हर endpoint को browser या curl से एक्सप्लोर कर सकते हैं, और इस पेज पर मौजूद लाइव tools भी।

एक नज़र में
  • Base URL: https://gamma-api.polymarket.com · कोई authentication नहीं, read-only।
  • Rate limit: कुल मिलाकर ~4,000 रिक्वेस्ट / 10s (/events ~500, /markets ~300)।
  • लगभग हर bot का पहला कदम: एक बाज़ार को उसके token IDs में बदलें, फिर उन्हें CLOB पर ट्रेड करें।
  • सब कुछ JSON है। तीन महत्वपूर्ण फ़ील्ड JSON की strings के रूप में लौटते हैं जिन्हें आपको फिर से parse करना होता है (नीचे देखें)।

वे endpoints जिन्हें आप सचमुच उपयोग करेंगे

Endpointक्या लौटाता हैइसका उपयोग
GET /marketsmetadata, लाइव prices और token IDs सहित बाज़ार।एक slug को token IDs में बदलें; tradeable बाज़ार स्कैन करें।
GET /eventsइवेंट (संबंधित बाज़ारों का समूह) उनके child बाज़ारों के साथ।विषय के अनुसार ब्राउज़ करें; multi-outcome कार्ड रेंडर करें।
GET /public-search?q=इवेंट और बाज़ारों पर full-text सर्च।जब आपको केवल नाम पता हो तब एक बाज़ार खोजें।
GET /tagsश्रेणी tags (politics, crypto, sports...)।वैध tag_slug फ़िल्टर खोजें।

/markets और /events पर सामान्य query parameters: active=true, closed=false, slug=, tag_slug=, order=volume24hr, ascending=false, और पेजिनेशन के लिए limit= तथा offset=।

GET /markets - रिक्वेस्ट और रिस्पॉन्स

slug से एक बाज़ार माँगें। आपको एक array वापस मिलता है (एक ही बाज़ार के लिए भी), इसलिए element [0] लें:

curl -s "https://gamma-api.polymarket.com/markets?slug=will-it-rain-in-nyc-today" | jq '.[0]'
import requests, json
m = requests.get("https://gamma-api.polymarket.com/markets",
                 params={"slug": "will-it-rain-in-nyc-today"}).json()[0]

एक छाँटा हुआ, annotated रिस्पॉन्स (वे फ़ील्ड जिनकी एक bot को परवाह होती है):

{
  "id": "519284",
  "question": "Will it rain in NYC today?",
  "slug": "will-it-rain-in-nyc-today",
  "conditionId": "0x1f2e...c0",      // the market id (NOT what you trade on)
  "active": true,                    // listed and live
  "closed": false,                   // not yet resolved
  "acceptingOrders": true,           // the CLOB is currently taking orders
  "outcomes": "[\"Yes\", \"No\"]",          // JSON string -> parse it
  "clobTokenIds": "[\"7142...\", \"1098...\"]", // JSON string, aligned with outcomes
  "outcomePrices": "[\"0.62\", \"0.38\"]",     // JSON string, last prices
  "bestBid": 0.61,
  "bestAsk": 0.63,
  "lastTradePrice": 0.62,
  "volume24hr": 48213.5,
  "endDate": "2026-06-16T00:00:00Z"
}

दोनों परिणाम token IDs clobTokenIds के भीतर रहते हैं। ये वही हैं जिन पर CLOB ट्रेड करता है - इन्हें पढ़ लें और आप एक ऑर्डर दे सकते हैं।

सबसे बड़ी अड़चन: JSON-encoded string फ़ील्ड

Gamma clobTokenIds, outcomes और outcomePrices को JSON के भीतर JSON-encoded strings के रूप में लौटाता है, इसलिए आपको इन्हें दूसरी बार decode करना होता है। और कभी भी यह hardcode न करें कि कौन-सा token "Yes" है: parse किए गए outcomes array को पढ़ें और नाम से map करें, क्योंकि क्रम की गारंटी नहीं है।

import requests, json
m = requests.get("https://gamma-api.polymarket.com/markets",
                 params={"slug": SLUG}).json()[0]
outcomes   = json.loads(m["outcomes"])        # e.g. ["Yes", "No"]
token_ids  = json.loads(m["clobTokenIds"])    # aligned with outcomes
prices     = json.loads(m["outcomePrices"])   # aligned with outcomes
yes_token  = token_ids[outcomes.index("Yes")]
print(yes_token, prices[outcomes.index("Yes")])
const r = await fetch(`https://gamma-api.polymarket.com/markets?slug=${SLUG}`);
const m = (await r.json())[0];
const outcomes  = JSON.parse(m.outcomes);
const tokenIds  = JSON.parse(m.clobTokenIds);
const yesToken  = tokenIds[outcomes.indexOf("Yes")];
curl -s "https://gamma-api.polymarket.com/markets?slug=$SLUG" | jq -r '.[0].clobTokenIds | fromjson | .[0]'

इसे एक असली बाज़ार पर आज़माएँ - एक slug पेस्ट करें और उसके token IDs लाइव खींचें:

Tradeable बाज़ारों के लिए स्कैन करें

एक सामान्य bot की discovery query एक श्रेणी में सक्रिय, खुले बाज़ार माँगती है, सबसे व्यस्त पहले:

GET https://gamma-api.polymarket.com/markets
    ?active=true&closed=false&order=volume24hr&ascending=false&limit=20&tag_slug=politics

कार्रवाई करने से पहले परिणाम को client-side फ़िल्टर करके केवल वे बाज़ार रखें जो सचमुच tradeable हैं:

# keep only markets the CLOB will accept orders on right now
tradeable = [m for m in markets
             if m.get("active") and not m.get("closed") and m.get("acceptingOrders")]

लाइव सर्च करें (यह /public-search कॉल करता है, फिर प्रति बाज़ार token IDs लोड करता है):

पेजिनेशन और ताज़गी

  • पेजिनेशन: limit और offset जोड़ें और तब तक चलें जब तक आपको एक छोटा पेज न मिले। /events पर limit ≤ 500 और /markets पर ≤ 300 रखें।
  • ताज़गी: prices (bestBid, bestAsk, lastTradePrice) लगातार बदलते हैं। Gamma discovery और एक मोटे price के लिए ठीक है, लेकिन quote और ट्रेड लाइव CLOB बुक से करें, किसी cached Gamma price से नहीं।
  • Caching: slug -> token_id mapping को cache करें (यह स्थिर है), prices को नहीं।

GET /events - multi-outcome समूह

एक इवेंट संबंधित बाज़ारों को बंडल करता है (उदा. "NYC Mayoral Election" में प्रति उम्मीदवार एक बाज़ार होता है)। इसका उपयोग multi-outcome कार्ड रेंडर करने या किसी विषय पर हर बाज़ार खोजने के लिए करें:

curl -s "https://gamma-api.polymarket.com/events?slug=nyc-mayor-2025" | jq '.[0].markets | length'

हर इवेंट में एक markets array होता है; हर entry में एक top-level बाज़ार जैसे ही clobTokenIds / outcomes string फ़ील्ड होते हैं, इसलिए वही parsing लागू होती है।

conditionId बनाम token_id। Gamma आपको एक बाज़ार का conditionId और उसके clobTokenIds (प्रति परिणाम एक) देता है। CLOB token_id पर ट्रेड करता है, कभी conditionId पर नहीं - इन्हें आपस में उलझा देना पहले bot की सबसे आम bug है।

फ़ील्ड संदर्भ (वे जो परेशान करते हैं)

फ़ील्डअर्थ
conditionIdबाज़ार का पहचानकर्ता। रिज़ॉल्यूशन और on-chain lookups के लिए उपयोग होता है, ऑर्डर देने के लिए नहीं।
clobTokenIdsपरिणाम token IDs का JSON string array। इसे parse करें; इन्हें CLOB पर ट्रेड करें।
outcomes / outcomePricesJSON string arrays, clobTokenIds के साथ index-aligned।
active / closedListed-and-live / resolved। एक tradeable बाज़ार active && !closed होता है।
acceptingOrdersक्या CLOB अभी ऑर्डर लेगा। quote करने से पहले इसे जाँचें।
bestBid / bestAsk / lastTradePriceसंकेतक prices। आधिकारिक price CLOB बुक से आता है।

आगे: CLOB API (एक token_id पर ट्रेड करें) · Data API (इतिहास और PnL) · एक error ठीक करें।