Skip to main content
GET
/
v1
/
orders
List user orders (Polysimulator-shape — see also: /v1/data/orders for PM-shape).
curl --request GET \
  --url https://api.polysimulator.com/v1/orders \
  --header 'X-API-Key: <api-key>'
{
  "orders": [
    {
      "order_id": 123,
      "market_id": "<string>",
      "side": "<string>",
      "outcome": "<string>",
      "order_type": "<string>",
      "limit_price": "<string>",
      "quantity": "<string>",
      "time_in_force": "<string>",
      "status": "<string>",
      "client_order_id": "<string>",
      "created_at": "<string>",
      "filled_at": "<string>",
      "fill_price": "<string>",
      "cancelled_at": "<string>",
      "cancelled_reason": "<string>"
    }
  ],
  "next_cursor": "<string>",
  "has_more": false,
  "total_hint": 123
}

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

status
string | null

Filter orders by status. Canonical values: PENDING (open), FILLED (matched), CANCELLED, EXPIRED. Accepts the synonyms open / live (→ PENDING), matched (→ FILLED), canceled / unmatched (→ CANCELLED), and the Polymarket-shape ORDER_STATUS_* values (e.g. ORDER_STATUS_LIVE → PENDING). Unrecognised values are silently treated as 'no filter' for back-compat — bots that want a strict mode should validate against the canonical set client-side. Audit P1-4 (2026-05-13 DevEx audit) flagged this filter as silently ignored when ?status=open was used; the alias has worked since PR #933, this description merely surfaces it in the OpenAPI spec so bot devs can discover the accepted values.

Example:

"PENDING"

market_id
string | null
side
string | null
limit
integer
default:50
offset
integer
default:0
cursor
string | null
next_cursor
string | null

Alias for cursor — PM-ported paginators pass the previous response's next_cursor back under this name (py-clob-client convention). cursor wins when both are present.

wallet_id
integer | null

Response

Successful Response

Paginated response with cursor for efficient iteration.

orders
PendingOrderItem · object[]
required
next_cursor
string | null
has_more
boolean
default:false
total_hint
integer | null