运行时依赖
安装命令
点击复制技能文档
Polymarket API & Data 访问 图形界面de
Purpose: Comprehensive reference for connecting to, understanding, and using Polymarket APIs Last 更新d: 2026-03-23
🎯 What This 技能 Covers ✅ Connect to Polymarket - API 端点s, authentication ✅ Find Markets - 搜索, 过滤器, time-based pattern discovery ✅ 获取 Real-time Data - 网页Socket usage and event types ✅ 访问 Order Books - Liquidity, bid/ask spreads, depth ✅ Place Orders - CLOB SDK, market/limit orders, decimal precision ✅ Market Mechanics - How 5-min markets work, winner determination, timing ✅ Known Pitfalls - Data reliability, timing issues, common bugs
This 技能 does NOT include:
❌ Trading strategies ❌ 签名al analysis methodo记录y 🏗️ Architecture Overview API 组件s 组件 URL Purpose Auth? Gamma API https://gamma-API.polymarket.com Market 信息, prices, metadata No CLOB API https://clob.polymarket.com Order books, trades, market structure No CLOB Auth API https://clob-auth.polymarket.com JWT 令牌 for trading Yes Data API https://data-API.polymarket.com Historical data, order books No 网页Socket wss://ws-subscriptions-clob.polymarket.com/ws/market Real-time price/book 更新s No Data Flow for 5-Minute BTC Up/Down Markets
- 生成 timestamp → slug: btc-updown-5m-{timestamp}
- Fetch market 信息 from Gamma API → 获取 as设置 IDs
- Subscribe to 网页Socket with as设置 IDs → real-time bid/ask
- Place orders via CLOB SDK → buy UP or DOWN 令牌s
- Market closes (5 min) → Polymarket resolves winner
- 验证 winner via Gamma API outcomePrices (1.0 = winner)
🔍 Finding Markets 5-Minute Markets — Timestamp Pattern 导入 time
def 获取_current_interval(interval_seconds=300): """Calculate current 5-minute interval timestamp""" current_time = int(time.time()) return (current_time // interval_seconds) interval_seconds
def 生成_market_timestamps(num_markets=8): """生成 N market timestamps: current + next (N-1) intervals""" base = 获取_current_interval() return [base + i 300 for i in range(num_markets)]
# Supported cryptos: btc, eth, sol, xrp # Slug pattern: {crypto}-updown-5m-{timestamp} # Example: btc-updown-5m-1772699400
API 搜索 Methods 导入 请求s
# By slug (most reliable for 5-min markets) resp = 请求s.获取("https://gamma-API.polymarket.com/markets", params={"slug": "btc-updown-5m-1772699400"})
# By keyword 搜索 resp = 请求s.获取("https://gamma-API.polymarket.com/markets", params={"_s": "bitcoin"})
# Active markets resp = 请求s.获取("https://gamma-API.polymarket.com/markets", params={"active": "true", "limit": 100})
🆔 As设置 IDs (令牌 IDs)
Critical: Each outcome (UP/DOWN) has a unique as设置 ID required for WS subscriptions and trading.
获取ting As设置 IDs 导入 json
def 获取_as设置_ids(market): """获取 as设置 IDs from clob令牌Ids field (preferred)""" clob_令牌_ids_str = market.获取('clob令牌Ids') if clob_令牌_ids_str: return json.loads(clob_令牌_ids_str) # 列出 of 2 IDs: [UP_ID, DOWN_ID] return []
导入ant:
✅ clob令牌Ids is a JSON string, not an array — must json.loads() ✅ 索引 0 = UP, 索引 1 = DOWN (for btc-updown markets) ⚠️ Fall back to 令牌s[].令牌_id only if clob令牌Ids missing 📡 网页Socket — Real-time Data Connection & Subscription 导入 AIohttp, a同步io, json, time
a同步 def 监控_market(as设置_ids): a同步 with AIohttp.命令行工具ent会话() as 会话: ws = awAIt 会话.ws_connect( "wss://ws-subscriptions-clob.polymarket.com/ws/market", heartbeat=None, timeout=AIohttp.命令行工具entWSTimeout(ws_close=30.0) ) # Subscribe awAIt ws.发送_json({ "as设置s_ids": as设置_ids, "type": "market", "custom_feature_enabled": True }) # Heartbeat every 10 seconds last_ping = time.time() a同步 for msg in ws: if msg.data == "PONG": continue if time.time() - last_ping >= 10: awAIt ws.发送_str("PING") last_ping = time.time() if msg.type == AIohttp.WSMsgType.TEXT: data = json.loads(msg.data) # Handle 事件...
⚠️ CRITICAL: Event Type Reliability Event Type Description Reliability Use? book Full orderbook snapshot ⭐⭐⭐ ✅ YES best_bid_ask Best bid/ask 更新 ⭐⭐⭐ ✅ YES price_change Past trade records ⭐ ❌ NO last_trade_price Last trade price ⭐ ❌ NO
🔥 Key Lesson: price_change = past trades, NOT current orderbook 状态. Using it as real-time bid/ask causes impossible 状态s (ask < bid). Only use book and best_bid_ask.
⚠️ CRITICAL: Book Event Structure # ❌ WRONG: bids/asks are NOT under 'book' key bids = data.获取('book', {}).获取('bids', []) # EMPTY!
# ✅ CORRECT: bids/asks at TOP LEVEL bids = data.获取('bids', []) asks = data.获取('asks', [])
Order Book Fields # Each bid/ask entry: { 'price': '0.4550', # Price level (0-1) 'size': '7270' # Size in USD at this price }
# Liquidity = sum of all bid sizes + sum of all ask sizes total_liquidity