Free
Self-serve- rps
- 2
- rpm
- 120
- ws conns
- 1
- batch
- 1
- api balance
- Read-only
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.
# 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
A working API for paper-trading prediction markets. Validate a bot end to end before it ever touches real funds.
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.
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.
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.
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.
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.
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 v1 surface today. Shapes mirror the Polymarket CLOB API; the full reference lives in the docs.
| Method | Path | Notes |
|---|---|---|
| GET | /v1/me | Caller profile, tier, balance. |
| GET | /v1/markets | List markets. Filter by tag, hot_only, etc. |
| GET | /v1/markets/{condition_id} | A single market — question, outcomes, prices. |
| GET | /v1/markets/{condition_id}/book | Live order-book snapshot. |
| POST | /v1/orders | Place an order — market or limit, FOK / IOC / GTC. |
| GET | /v1/orders | List your orders, filterable by status. |
| DELETE | /v1/orders/{order_id} | Cancel one open order. |
| POST | /v1/cancel-all | Cancel every open order on the account. |
| GET | /v1/account/positions | Open and closed positions. |
| GET | /v1/account/portfolio | Equity, exposure, realised + unrealised P&L. |
| POST | /v1/clob/order | Polymarket-CLOB-shaped order endpoint. |
| GET | /v1/keys/tiers | Authoritative rate-limit ladder (this table). |
| WS | /v1/ws/prices | Real-time price stream for subscribed markets. |
| WS | /v1/ws/executions | Fill 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.
Every key is rate-limited by tier. These values are read live from GET /v1/keys/tiers — the authoritative source.
API access is Pro-gated during the closed beta. Mint a key, read the docs, and place your first simulated order.