Create Order
Creates a buy/sell order. HMAC tokens require trading; omitting both signature fields for server signing additionally requires delegated_signing.
- Fetch market data via Get Market Details to get venue and token IDs
- Sign the order using EIP-712 with
venue.exchangeasverifyingContract - Ensure you have token approvals set up
Authentication
Use a scoped API token with HMAC signing and thetrading scope.
Signed order rules
For client-signed orders,signature and signatureType are both required. They must either both be present or both be omitted. Omission is accepted only for delegated server signing with an HMAC token carrying delegated_signing.
nonce is required and must be the numeric value 0. expiration may be omitted; omission is signed as zero. If supplied, it must represent zero, for example "0". Non-zero expiration is not supported.
Amounts are integer raw units with 6 decimals. makerAmount must be at least 100 raw units. For GTC and FAK orders, price is required, must be between 0.01 and 0.99, and may have at most three decimal places. The collateral equation must be exact. price × contracts must be an integer raw-unit amount, without rounding.
postOnly is supported only for GTC orders.
Optional fields
Receive window
POST /orders supports optional receive-window controls for clients that want freshness checks on order submission. Send these fields at the top level of the request body, next to order, orderType, and marketSlug; never put them inside the EIP-712 signed order object.
Self-trade prevention
POST /orders can reject or cancel orders that would match against your own resting order on the same token.
cancel_maker, matching continues against the remaining non-self liquidity, and limit orders still never execute past their limit price.
Outcomes on the placement response:
- A rejected taker (
cancel_taker/cancel_both) returnssettlementStatus: "CANCELED"withreason: "STP_TAKER_REJECTED". - A
cancel_makertaker lists the canceled resting order IDs instpMakerCancelsand keeps its normal status (UNMATCHEDwhen nothing else fills it); noreasonis set.
stpPolicy is a top-level request field. Do not include it inside the EIP-712 signed order object.execution object on the response. See TypeScript, Python, Rust, and Go.ownerId come from? It is the id field returned by GET /profiles/me or GET /profiles/{address}. For partner sub-accounts, it is the profileId returned by POST /profiles/partner-accounts, or recovered with GET /profiles/partner-accounts.Delegated signing
Partners place orders for a managed sub-account by setting bodyonBehalfOf to its profile ID. A client-signed order requires trading; the target must belong to the authenticated partner.
With both trading and delegated_signing, partners may instead omit both signature and signatureType. The request must still include the target profile ID as both onBehalfOf and ownerId. The server signs using a Privy server wallet linked to that profile, replaces maker and signer with that wallet address, and normalizes ownerId to the target. See Authentication.
Execution response
The response includes anexecution object with settlement details:
DELAYED (taker delay). Some markets apply a short hold to marketable (taker) orders before the matching engine fills them. On such a market, a marketable order’s response returns immediately with settlementStatus: "DELAYED", matched: false, zero totalsRaw, and an eligibleAt timestamp. It does not block until the trade is mined. Track the outcome over subscribe_order_events (provisional MATCHED → terminal MINED / FAILED), correlating by clientOrderId / tradeEventId. postOnly orders are never delayed.Errors
Authorizations
Scoped API token with HMAC-SHA256 signing. Requires three headers: lmts-api-key (token ID), lmts-timestamp (ISO-8601), lmts-signature (Base64-encoded HMAC). See Authentication docs for details.
Body
Order creation data including signature and order parameters
Order details including signature and amounts
- Option 1
- Option 2
Required profile ID of the order owner. For delegated signing, send the target profile ID as both ownerId and onBehalfOf.
12345
Order type (GTC=Good Till Cancelled, FAK=Fill And Kill, FOK=Fill Or Kill)
FAK, FOK, GTC "GTC"
Market identifier slug
"biden-vs-trump-2024"
Reject the order if it would match immediately. Supported only for GTC orders.
true
Optional owner-scoped uniqueness and deduplication key. The submitted value is limited to 128 characters, then trimmed; blank values are rejected. Reuse returns 409 rather than replaying an earlier response.
128"client-order-001"
Managed profile ID for partner placement. Requires trading and a partner relationship; unsigned delegated placement also requires delegated_signing.
x >= 112345
Optional client-stamped order creation time, Unix ms epoch. Top-level request field; not part of the EIP-712 signed order payload.
x >= 01735689600000
Optional maximum order age in milliseconds, up to 10000. If omitted, the API default applies. A supplied window without timestamp uses server receive time.
1 <= x <= 100001500
Self-trade prevention policy. Top-level request field; not part of the EIP-712 signed order payload. Defaults to cancel_maker when omitted.
cancel_both, cancel_maker, cancel_taker "cancel_maker"
Response
Order accepted. It may be resting, delayed, matched, settled, canceled by STP, or accepted with a settlement failure reported in execution.