Skip to main content
GET
/
v1
/
data
/
orders
List user orders (Polymarket-shape — recommended for SDK clients).
curl --request GET \
  --url https://api.polysimulator.com/v1/data/orders \
  --header 'X-API-Key: <api-key>'
{
  "limit": 123,
  "count": 123,
  "data": [
    {
      "id": "<string>",
      "status": "<string>",
      "market": "<string>",
      "side": "<string>",
      "original_size": "<string>",
      "size_matched": "<string>",
      "price": "<string>",
      "outcome": "<string>",
      "order_type": "<string>",
      "owner": "<string>",
      "maker_address": "<string>",
      "asset_id": "<string>",
      "expiration": 0,
      "associate_trades": [
        "<string>"
      ],
      "created_at": 0
    }
  ],
  "next_cursor": "<string>"
}

Authorizations

X-API-Key
string
header
required

Issue from /v1/keys (or admin-issued for enterprise tier).

Headers

X-API-Key
string | null

Your PolySimulator API key

POLY_API_KEY
string | null

Polymarket-CLOB-compat alias for X-API-Key (underscore form). SDK clients ported from Polymarket can authenticate without changing header names. X-API-Key takes precedence when both are provided.

Poly-API-Key
string | null

PM-CLOB-compat dashed-form alias for X-API-Key. Same value semantics as POLY_API_KEY but with HTTP-conventional dash separators. Audit P1 (staging audit 2026-05-16 0817 PR #1296): the per-tier middleware accepts both spellings but the auth dependency originally only matched the underscore form — now both work end-to-end.

authorization
string | null

PM-CLOB-compat: Authorization: Bearer ps_live_... (or ps_test_...) is accepted as an alias for X-API-Key so py-clob-client and other ported SDKs authenticate without header name changes. Bearer JWTs are NOT accepted here — use the dashboard-auth endpoints for those.

Query Parameters

id
string | null
market
string | null
asset_id
string | null
before
string | null
after
string | null
cursor
string | null
next_cursor
string | null

PM's documented pagination REQUEST param — pass the next_cursor value from the previous response here (py-clob-client does this automatically). cursor is accepted as a polysim alias; when both are present cursor wins. The SDK's initial sentinel MA== (base64 of 0) means 'start from the beginning'.

status
string | null

Polysim extension (real PM has no status filter — its /data/orders returns open orders only, which is also our default). Values: ORDER_STATUS_LIVE (default — open/resting), ORDER_STATUS_MATCHED (filled), ORDER_STATUS_CANCELED (cancelled/expired/reset-archived), ORDER_STATUS_INVALID, or ALL for the full history. Friendly aliases accepted: open/live/PENDING → LIVE, matched/FILLED → MATCHED, canceled/CANCELLED/EXPIRED → CANCELED. Unrecognised values return 400.

limit
integer
default:100

Response

Successful Response

Polymarket pagination envelope for GET /data/orders.

limit
integer
required
count
integer
required
data
PmOpenOrder · object[]
required
next_cursor
string | null