Polymarket-compat single-order lookup (legacy top-level path).
Lookup a single order by id (legacy top-level path).
Polysim-extension path — current Polymarket exposes this as
GET /data/order/{orderID} (nested under /data/, sibling to
/data/orders and /data/trades). The legacy top-level
GET /order/{id} shape PM used to expose was retired in mid-2025
and is no longer documented at docs.polymarket.com.
Both routes are kept live: this top-level path stays for back-compat
with hand-coded clients that pre-date the PM move. New code should
prefer GET /v1/data/order/{order_id} (the PR-#1121 follow-up
alias added to match the current PM surface). Both paths funnel
through _lookup_pm_order_by_id so behaviour is identical.
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.
Path Parameters
Response
Successful Response
Polymarket-shaped order row for GET /data/orders and
GET /order/{id}. Subset of PM's full OpenOrder schema —
fields we don't model (maker_orders, transaction_hash,
trader_side, fee_rate_bps, on-chain hashes) are emitted
as null so SDKs parsing fixed schemas don't break.