Skip to main content
POST
/
v1
/
order
Polymarket-compat single order placement.
curl --request POST \
  --url https://api.polysimulator.com/v1/order \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "order": {
    "tokenId": "<string>",
    "makerAmount": "<string>",
    "takerAmount": "<string>",
    "side": "<string>",
    "expiration": "0",
    "salt": "<string>",
    "maker": "<string>",
    "signer": "<string>",
    "taker": "<string>",
    "nonce": "<string>",
    "feeRateBps": "<string>",
    "signatureType": 123,
    "signature": "<string>",
    "timestamp": "<string>",
    "metadata": "<string>",
    "builder": "<string>"
  },
  "owner": "<string>",
  "orderType": "GTC",
  "deferExec": false,
  "postOnly": false
}
'
{
  "success": true,
  "orderID": "",
  "status": "unmatched",
  "makingAmount": "0",
  "takingAmount": "0",
  "transactionsHashes": [
    "<string>"
  ],
  "tradeIDs": [
    "<string>"
  ],
  "errorMsg": ""
}

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.

Body

application/json

Outer body for POST /v1/order and entries of POST /v1/orders.

order
PmOrderInner · object
required

Inner order block — the part PM signs.

owner
string | null
orderType
string
default:GTC
deferExec
boolean | null
default:false
postOnly
boolean | null
default:false

Response

Successful Response

Mirrors PM's SendOrderResponse. statuslive | matched | delayed | unmatched.

success
boolean
required
orderID
string
default:""
status
string
default:unmatched
makingAmount
string
default:0
takingAmount
string
default:0
transactionsHashes
string[] | null
tradeIDs
string[] | null
errorMsg
string
default:""