List user trades (PM-compat — reads from filled orders).
PM-compat GET /data/trades. py-clob-client uses this in bot fill-tracking loops to surface fills the client can correlate by client_order_id or id. Polysim reads from the orders table where status='FILLED' and emits PM-shape rows. Filters: market, asset_id, before / after (unix-seconds timestamps, PM convention), next_cursor / cursor (same semantics as /v1/data/orders).
AF-13: end-of-list next_cursor is "LTE=" (base64 of -1) matching py-clob-client’s documented exit condition.
Authorizations
Issue from /v1/keys (or admin-issued for enterprise tier).
Headers
Your PolySimulator API key
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.
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.
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
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'.