Skip to main content
GET
curl
The response body shown here is a static example, not live data. After you click Send, your live result appears in a separate panel headed 200 OK. The panel under the status-code tabs is a fixed sample from the spec — its field values (fees, prices, sizes, IDs, timestamps) are placeholders. Use Send, or call the endpoint, for current values.
Returns the status of a specific order by order ID. Requires address query parameter for the owning account because order data is partitioned by account, so the lookup needs the owning account.

Path Parameters

orderId
string
required

System-generated order ID (hex string).

Query Parameters

address
string
required

Master Ethereum address for this API key (must match address from POST /createApiKey for the same key). Required on REST for account-scoped reads and for place/cancel. Invalid hex → 400; mismatch with key → 403.

20-byte EVM address as hex: optional 0x or 0X prefix and exactly 40 hexadecimal digits. API responses normalize to lowercase af after 0x.

Pattern: ^(0x|0X)?[0-9a-fA-F]{40}$
accountIndex
integer
default:0

Subaccount index (0–9) to scope the request to. Defaults to 0 (the primary account). Values above 9 → 400.

Required range: 0 <= x <= 9

Response

Order status details.

Unified order shape used across REST responses, WebSocket snapshots, and streaming updates. Fields only available from the store are optional and may be absent in streaming updates.

orderId
string
required

System-generated order ID.

marketId
integer
required

Perpetual market identifier (uint16). Map to display name via GET /markets. Used for orders, positions, funding, and market metadata.

Required range: 0 <= x <= 65535
marketDisplayName
string
required

Market symbol (e.g. BTC-USD).

Example:

"BTC-USD"

side
enum<string>
required

Order side.

Available options:
BUY,
SELL
status
enum<string>
required

Current status of an order.

Available options:
PENDING,
OPEN,
PARTIALLY_FILLED,
FILLED,
CANCELED,
MARGIN_CANCELED,
REJECTED,
UNTRIGGERED,
TPSL_PLACED,
TPSL_TRIGGERED,
TPSL_CANCELED,
LIQUIDATED,
ADL,
ACK,
CANCEL_ACKNOWLEDGED,
CANCEL_ALL_ACKNOWLEDGED,
CANCEL_PENDING,
ERROR
price
string
required

Limit price in human-readable units (decimal string).

originalSize
string
required

Original order size in human-readable units (decimal string).

remainingSize
string
required

Remaining unfilled size in human-readable units. "0" when fully filled.

updatedAt
integer<int64>
required

Last update timestamp (epoch microseconds).

clientId
string

Client-provided order identifier. Optional; max 36 characters. An account may have at most 10,000 live clientIds simultaneously — placing an order with a new clientId while at this limit is rejected with TOO_MANY_CLIENT_IDS. A clientId slot is freed when the order reaches a terminal state (FILLED, CANCELED, or REJECTED). Reusing an already-active clientId is rejected with DUPLICATE_CLIENT_ID.

Maximum string length: 36
type
enum<string>

Execution style of the order. Use tpslType to mark an order as stop-loss or take-profit. Absent on forced closures (status LIQUIDATED or ADL): those have no originating user order, so no execution style exists — key off status instead.

Available options:
LIMIT,
MARKET
filledSize
string

Filled size in human-readable units (decimal string). Computed as originalSize − remainingSize.

avgFillPrice
string

Cumulative average fill price (decimal string), computed as filledNotional / filledSize. Present on REST, snapshot, and streaming responses whenever the order has any filled quantity; absent when nothing has filled.

timeInForce
enum<string>

Time-in-force policy for the order. Resting orders (submitted as GTT) are currently reported as GTC for backward compatibility with consumers that predate the GTT rename; treat GTC and GTT as equivalent when reading.

Available options:
GTC,
GTT,
IOC,
FOK,
ALO
goodTilTime
string

Expiration timestamp in epoch microseconds (as string), the API's user-facing timestamp resolution. Present when the order carries a good-till-time expiry.

reduceOnly
boolean

True when the order can only reduce an existing position (echoed from the placing request). Present only when true; absent for regular orders.

triggerPrice
string

Trigger price for stop/TPSL orders (decimal string).

tpslType
enum<string>

Trigger purpose of the order, orthogonal to type (execution style). Absent for plain orders.

Available options:
STOP_LOSS,
TAKE_PROFIT
isPositionTPSL
boolean

True when the TPSL closes the user's full open position at trigger time (resized against the live position) rather than a sized leg (partialTpsl) or an entryTpsl child. Only present on TPSL orders; absent on plain orders. At most one position-level TPSL of each trigger class (TP, SL) may be active per account+market — a second placement is rejected with POSITION_TPSL_ALREADY_EXISTS.

parentOrderId
string

Entry order id this TPSL leg is bound to (entryTpsl bundles). Cancelling the entry cancels every TPSL leg pointing at it. Only present on TPSL orders that were placed alongside an entry; absent on standalone TPSLs (partialTpsl, positionTpsl) and on plain orders.

rejectionReason
enum<string>

Machine-readable reason emitted by the matching engine when an order is rejected. See the canonical RejectionReason schema for the full enum and per-value descriptions.

Available options:
POST_ONLY_WOULD_CROSS,
SELF_TRADE,
UNDERCOLLATERALIZED,
COULD_NOT_FILL,
IOC_CANCELED,
FOK_FAILED,
REDUCE_ONLY_WOULD_INCREASE,
TOO_MANY_CLIENT_IDS,
DUPLICATE_CLIENT_ID,
POSITION_TPSL_ALREADY_EXISTS,
ENTRY_TPSL_CANNOT_BE_POSITION_TPSL,
ORDER_WILL_TAKE_LIQUIDITY_DURING_MARKET_HALT,
ORDER_NOT_FOUND_FOR_MODIFY,
MODIFY_CHANGED_IMMUTABLE_FIELD,
MODIFY_ZERO_SIZE,
PRICE_WILL_EXCEED_MAXIMUM_OUTSIDE_RTH_TRADING_BOUND,
MODIFY_WOULD_CROSS_OUTSIDE_RTH_TRADING_BOUNDARY,
FILL_WILL_EXCEED_TRADING_BOUND,
OPEN_INTEREST_CAP_EXCEEDED
state
enum<string>

Engine-authoritative lifecycle position after this event. Sourced directly from the matching engine and stamped on every streaming update — clients can drive an order state machine off this alone without parsing event types or comparing sizes:

  • Partial fill of a resting order: state=PARTIALLY_FILLED (status is "OPEN").
  • IOC partial: state=PARTIALLY_FILLED is terminal; the implicit cancel of the IOC remainder is conveyed by timeInForce == IOC with no follow-up event (status is "CANCELED" instead).
  • Explicit cancel after prior partial fills: state=CANCELED. status carries broader signals (ACK, CANCEL_PENDING, MARGIN_CANCELED, TPSL_*, etc.) that have no equivalent here.
Available options:
OPEN,
PARTIALLY_FILLED,
FILLED,
CANCELED,
REJECTED
positionEffect
enum<string>

How a fill on this order changed the account's position in marketId. Only set on fill events; absent on placements / cancels / rejects. For taker fills the value is the net effect across all fills in the same aggregated update (FLIP_* covers a position that closed and reopened on the opposite side within one user order).

Available options:
OPEN_LONG,
OPEN_SHORT,
ADD_LONG,
ADD_SHORT,
CLOSE_LONG,
CLOSE_SHORT,
FLIP_LONG_TO_SHORT,
FLIP_SHORT_TO_LONG
createdAt
integer<int64>

Order creation timestamp (epoch microseconds). Only present on REST and snapshot responses.

sequenceNumber
integer<uint64>

Sequence number for ordering and reconciliation. Only present on streaming updates.