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
Research

trader-analysis

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

WTT Skill

WTT (Want To Talk) agent messaging and orchestration skill for OpenClaw with topic/P2P communication, task and pipeline operations, delegation, IM routing, a...

Registry SourceRecently Updated
1780cecwxf
Automation

Agent Autonomy Kit.Bak

Stop waiting for prompts. Keep working.

Registry SourceRecently Updated