Closed beta · livev1REST + WebSocket

A trading API for prediction markets, simulated end to end.

CLOB-compatible REST and WebSocket endpoints. Orders are simulated against live Polymarket odds — build, validate, and pace a strategy before it touches real capital. No wallet, no signing, no gas.

API access is Pro-gated during the closed beta. The cohort widens in batches.

POST /v1/orderscurl
# Place a paper order — simulated fills against live Polymarket odds
curl -X POST https://api.polysimulator.com/v1/orders \
  -H "Authorization: Bearer $PS_API_KEY" \
  -d '{
        "market": "btc-usd-5m-updown",
        "side": "BUY", "outcome": "UP",
        "type": "MARKET", "size": 100
      }'

# Stream live prices & simulated fills over WebSocket
wscat -c wss://api.polysimulator.com/v1/stream

Built for traders who write code

A working API for paper-trading prediction markets. Validate a bot end to end before it ever touches real funds.

CLOB-compatible surface

Request and response shapes mirror the Polymarket CLOB API — order payloads, market identifiers, position models. Strategies built here move to live trading with a base-URL swap.

Simulated fills, live odds

Orders are simulated against live Polymarket odds. The price field is a worst-acceptable limit, the same as Polymarket — no real capital, no on-chain transactions, no signing.

REST + WebSocket

A REST surface for orders and account state, plus two live streams: /v1/ws/prices for market data and /v1/ws/executions for fills on resting limit orders.

Per-key rate limits

Every key carries a tier with transparent rps / rpm / WS / batch limits. X-RateLimit-Remaining headers and Retry-After on 429 let the SDK pace requests for you.

Python SDK

One import. Sync, async, or streaming.

The official Python SDK ships a synchronous client, an async client, and a WebSocket helper covering /v1/ws/prices and /v1/ws/executions. Auth, request pacing, and back-off on 429 / 5xx are handled for you.

$ pip install polysimulator
PyPI · v0.4.2sync · async · WebSocket
polysimulator · pythonasync
from polysimulator import AsyncClient

# Simulated fills against live Polymarket odds
async with AsyncClient() as ps:
    fill = await ps.orders.create(
        market="btc-usd-5m-updown",
        side="BUY", outcome="UP", size=100,
    )
    async for tick in ps.stream.prices("btc-usd-5m-updown"):
        print(tick.mid)

The endpoint surface

The v1 surface today. Shapes mirror the Polymarket CLOB API; the full reference lives in the docs.

Full reference
MethodPathNotes
GET/v1/meCaller profile, tier, balance.
GET/v1/marketsList markets. Filter by tag, hot_only, etc.
GET/v1/markets/{condition_id}A single market — question, outcomes, prices.
GET/v1/markets/{condition_id}/bookLive order-book snapshot.
POST/v1/ordersPlace an order — market or limit, FOK / IOC / GTC.
GET/v1/ordersList your orders, filterable by status.
DELETE/v1/orders/{order_id}Cancel one open order.
POST/v1/cancel-allCancel every open order on the account.
GET/v1/account/positionsOpen and closed positions.
GET/v1/account/portfolioEquity, exposure, realised + unrealised P&L.
POST/v1/clob/orderPolymarket-CLOB-shaped order endpoint.
GET/v1/keys/tiersAuthoritative rate-limit ladder (this table).
WS/v1/ws/pricesReal-time price stream for subscribed markets.
WS/v1/ws/executionsFill notifications for resting limit orders.

Trade-side endpoints accept a wallet_id to route cash flow to your MAIN, SANDBOX, or API paper balance. Endpoint shapes are stabilising — minor fields may shift before the public beta.

Tiers and rate limits

Every key is rate-limited by tier. These values are read live from GET /v1/keys/tiers — the authoritative source.

authoritative · GET /v1/keys/tiers

Free

Self-serve
rps
2
rpm
120
ws conns
1
batch
1
api balance
Read-only

Pro+

Coming soon
rps
30
rpm
1800
ws conns
10
batch
10
api balance
$25K

Enterprise

Contact us
rps
100
rpm
6000
ws conns
50
batch
25
api balance
Custom

Build on live odds.

API access is Pro-gated during the closed beta. Mint a key, read the docs, and place your first simulated order.