polymarket-api

Polymarket API Integration Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "polymarket-api" with this command: npx skills add agentmc15/polymarket-trader/agentmc15-polymarket-trader-polymarket-api

Polymarket API Integration Skill

Overview

This skill provides comprehensive guidance for integrating with Polymarket's APIs and smart contracts.

API Endpoints

CLOB API (Central Limit Order Book)

Base URL: https://clob.polymarket.com

Authentication Levels

  • Level 0 (Public): Market data, orderbooks, prices

  • Level 1 (Signer): Create/derive API keys

  • Level 2 (Authenticated): Trading, orders, positions

Key Endpoints

GET /markets # List all markets GET /markets/{token_id} # Get specific market GET /price?token_id=X # Get current price GET /midpoint?token_id=X # Get midpoint price GET /book?token_id=X # Get orderbook GET /trades # Get user trades POST /order # Place order DELETE /order/{id} # Cancel order GET /positions # Get positions

Gamma API (Market Metadata)

Base URL: https://gamma-api.polymarket.com

GET /events # List events GET /events/{slug} # Get event details GET /markets # List markets GET /markets/{id} # Get market details

Python Implementation Patterns

Initialize Client

from py_clob_client.client import ClobClient from py_clob_client.clob_types import OrderArgs, OrderType import os

class PolymarketService: def init(self): self.client = ClobClient( host="https://clob.polymarket.com", key=os.getenv("POLYMARKET_PRIVATE_KEY"), chain_id=137, signature_type=1, funder=os.getenv("POLYMARKET_FUNDER_ADDRESS") ) self.client.set_api_creds( self.client.create_or_derive_api_creds() )

async def get_market_data(self, token_id: str) -> dict:
    """Fetch comprehensive market data."""
    return {
        "price": self.client.get_price(token_id, "BUY"),
        "midpoint": self.client.get_midpoint(token_id),
        "book": self.client.get_order_book(token_id),
        "spread": self.client.get_spread(token_id),
    }

async def place_order(
    self,
    token_id: str,
    side: str,
    price: float,
    size: float,
    order_type: str = "GTC"
) -> dict:
    """Place a limit order."""
    order = self.client.create_order(
        OrderArgs(
            token_id=token_id,
            price=price,
            size=size,
            side=side,
        )
    )
    return self.client.post_order(order, order_type)

WebSocket Subscription

import asyncio import websockets import json

async def subscribe_market_updates(token_ids: list[str]): """Subscribe to real-time market updates.""" uri = "wss://ws-subscriptions-clob.polymarket.com/ws/market"

async with websockets.connect(uri) as ws:
    await ws.send(json.dumps({
        "type": "subscribe",
        "markets": token_ids
    }))
    
    async for message in ws:
        data = json.loads(message)
        yield data

Gamma API Client

import httpx

class GammaClient: BASE_URL = "https://gamma-api.polymarket.com"

def __init__(self):
    self.client = httpx.AsyncClient(base_url=self.BASE_URL)

async def get_active_markets(self) -> list[dict]:
    """Fetch all active markets."""
    response = await self.client.get("/markets", params={"active": True})
    return response.json()

async def get_event(self, slug: str) -> dict:
    """Fetch event with all markets."""
    response = await self.client.get(f"/events/{slug}")
    return response.json()

Order Types

  • GTC (Good Till Cancelled): Stays until filled or cancelled

  • GTD (Good Till Date): Expires at specified time

  • FOK (Fill or Kill): Must fill entirely or cancel

  • IOC (Immediate or Cancel): Fill what's available, cancel rest

Price Calculations

def calculate_implied_probability(price: float) -> float: """Convert price to implied probability.""" return price # Prices ARE probabilities (0-1)

def calculate_cost(price: float, shares: float) -> float: """Calculate cost to buy shares.""" return price * shares

def calculate_pnl( entry_price: float, current_price: float, shares: float, side: str ) -> float: """Calculate unrealized P&L.""" if side == "BUY": return (current_price - entry_price) * shares return (entry_price - current_price) * shares

Error Handling

from py_clob_client.exceptions import PolymarketException

try: result = client.post_order(order) except PolymarketException as e: if "INSUFFICIENT_BALANCE" in str(e): # Handle insufficient funds pass elif "INVALID_PRICE" in str(e): # Handle price out of range pass raise

Rate Limits

  • Public endpoints: ~100 requests/minute

  • Authenticated endpoints: ~1000 requests/minute

  • WebSocket: Varies by subscription type

Always implement exponential backoff and request queuing.

Key Contract Addresses (Polygon)

CONTRACTS = { "CTF_EXCHANGE": "0x4bFb41d5B3570DeFd03C39a9A4D8dE6Bd8B8982E", "NEG_RISK_CTF_EXCHANGE": "0xC5d563A36AE78145C45a50134d48A1215220f80a", "CONDITIONAL_TOKENS": "0x4D97DCd97eC945f40cF65F87097ACe5EA0476045", "USDC": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", }

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

trading-strategies

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

dual-perspective-analyzer

Resolve dual-perspective collaboration conflicts by classifying them into 5 types and applying targeted integration strategies. Use when two agents (or an agent and user) have different approaches to the same problem — e.g., qualitative vs. quantitative, strategic vs. tactical, creative vs. analytical. Provides conflict taxonomy, resolution strategies, and a 5-metric dashboard for validation.

Archived SourceRecently Updated
Automation

WenHub

文枢三院制 AI Agent 协作治理体系。提供决策者→管理者→经略院(任务拆解)→工造院(执行)→明鉴院(质检) 的完整协作流程,适用于需要多 Agent 协作治理的场景, 包括任务分配与分级、质量管控与评分、标准化汇报、知识沉淀与复用、安全管控与违规处理等。 配套参考资料(references/ 目录)涵盖三院制、任务分级、质量评分、汇报、安全、违规处理、编码规范。 官网:https://wenhub.huawen-inc.com

Archived SourceRecently Updated
Automation

sync-discord-identity

Sync a Discord bot profile into an OpenClaw agent IDENTITY.md, save the avatar under workspace/avatars, and safely add Avatar and Discord metadata.

Archived SourceRecently Updated