---
title: "Get a order by ID"
method: GET
path: "/v1/orders/{node_order_id}"
tags: ["Orders"]
---

# Get a order by ID

`GET /v1/orders/{node_order_id}`

Returns order details. Use `?expand=fills` to inline fills.

## Path parameters

- `node_order_id` string, required

## Query parameters

- `expand` string

## Response `200`

Order details

- OrderRest — Deployment lineage column persisted on every order/fill/position row. `Default` produces a `None` row — the canonical "no lineage available" value used by every legacy call site until lineage is wired in. The field uses a `lineage_` prefix in serde JSON so this struct can be `#[serde(flatten)]`-embedded into storage records (`FillRecord`, `ParentOrderRecord`, `Position`, `PositionView`) without changing the existing flat wire shape.
  - `lineage_deployment_id` string, nullable
  - `client_id` string, required
  - `client_order_id` string, required
  - `constraints` OrderConstraintsRest
    - `horizon_ms` integer, nullable — Execution time horizon in milliseconds
    - `max_price_1e9` integer, nullable — Maximum execution price in 1e9 format
    - `participation_limit_bps` integer, nullable — Max participation rate in basis points (e.g., 500 = 5%)
    - `urgency` string, nullable — Urgency level: "low", "medium", "high"
  - `created_unix_ns` integer, required — Order creation timestamp (nanoseconds since epoch)
  - `engine_phase` 'gated' | 'sent' | 'working' | 'cancelling' | 'filled' | 'partial' | 'cancelled' | 'cancel_unconfirmed' | 'submit_unconfirmed' | 'rejected' | 'expired' | 'unresolved' — Lifecycle of a single node.
  - `execution_type` 'graph' | 'armed' | 'adopted', required
  - `expected_fee_1e9` integer, nullable — Pre-trade fee estimate in 1e9 USD units.
  - `expected_fee_bps` integer, nullable — Pre-trade fee estimate (bps) from `FeeModel::worst_case_bps` at routing time. Fee-prediction error vs realized surfaces as `fee_cost_bps - expected_fee_bps`.
  - `failure_class` string, nullable
  - `failure_reason` string, nullable
  - `filled_qty_1e8` integer, required — Filled quantity so far in 1e8 format
  - `fills` FillRecord[], nullable — Inline fills (only when `?expand=fills` is requested)
    - `lineage_deployment_id` string, nullable
    - `commission_asset` string, nullable — Asset the commission was charged in (e.g. "USD", "USDT", "BNB"). Needed for FX reconciliation on venues that debit non-quote assets.
    - `exchange_ts_ns` integer, nullable
    - `execution_region` string, nullable
    - `fee_1e9` integer, required
    - `fee_breakdown` unknown
    - `fill_id` string, required
    - `id` integer, required
    - `instrument_type` string, required — Instrument class of the parent order ("spot" | "perp" | "prediction"), joined from `orders`. Lets the fills blotter render the INSTR column without a second lookup.
    - `is_maker` boolean, nullable
    - `maker_fee_bps_applied` integer, nullable — Maker rate (bps) the venue applied to *this* fill. Set when `is_maker == Some(true)` and the venue reports the inline rate.
    - `node_order_id` string, required
    - `price_1e9` integer, required
    - `qty_1e8` integer, required
    - `side` string, required
    - `symbol` string, required
    - `taker_fee_bps_applied` integer, nullable — Taker rate (bps) the venue applied to *this* fill.
    - `trade_id` string, nullable — Venue's own trade/execution id.
    - `ts_unix_ns` integer, required
    - `venue` string, required
    - `venue_reported_cum_fee_1e9` integer, nullable — Cumulative commission the venue reports for this order at the moment of this fill. Reconciliation compares `sum(fee_1e9)` to the terminal value of this column.
  - `first_fill_ts_ns` integer, nullable — Exchange timestamp of the first fill in ns.
  - `graph_id` string, nullable — Owning execution-graph id. Present for graph rows (incl. ARMED submit-and-hold) — the handle to activate (`POST /v1/execution_graphs/:id/activate`) or cancel the whole graph. `None` for venue-only rows.
  - `graph_name` string, nullable — Optional human tag on the owning graph (set at submit). Lets a dashboard label a parked/active strategy.
  - `home_region` string, nullable — Graph home region. Null only for a manually adopted venue order.
  - `node_id` string, nullable — Engine node id. Null only for a manually adopted venue order.
  - `node_order_id` string, required
  - `placed_price_1e9` integer, nullable — Limit / max price submitted to the venue (1e9 fixed-point). `None` for market orders with no explicit cap.
  - `pool_id` string, nullable — Pool-targeted execution: full PoolId string ("{chain}:{address}" or "{chain}:{address}:{pair_index}")
  - `qty_1e8` integer, required — Requested quantity in 1e8 format
  - `reconciliation_state` 'in_sync' | 'reconciling' | 'missing_graph', required
  - `side` string, required — "buy" or "sell"
  - `status` string, required — Canonical lifecycle status: ACCEPTED, RUNNING, PARTIAL, ACTIVE, COMPLETED, CANCELLED, REJECTED, UNCONFIRMED (in doubt — reconciling), UNRESOLVED, WAITING. Venue-merged rows (`execution_type:"adopted"`) carry the venue's own reported status. ARMED rows (`execution_type:"armed"`) are parked submit-and-hold graphs with zero venue footprint — activate them via `POST /v1/execution_graphs/:graph_id/activate`.
  - `symbol` string, required — Trading pair, e.g. "ETH-USD"
  - `tca` TcaRest
    - `achieved_vwap_1e9` integer, required
    - `arrival_mid_1e9` integer, required — Arrival mid price in 1e9 format
    - `benchmark_venue` string, required
    - `benchmark_vwap_1e9` integer, required
    - `effective_spread_bps` number, double, required — Effective spread: round-trip cost (CFA Institute 2024)
    - `execution_time_ms` integer, required
    - `fee_cost_bps` number, double, required — Explicit fee cost in bps (Elkins/McSherry)
    - `implementation_shortfall_bps` number, double, required — Implementation Shortfall: total cost vs arrival mid (Perold 1988)
    - `market_impact_bps` number, double, required — Market impact: residual IS - spread - fees (Almgren 2005)
    - `num_fills` integer, required
    - `num_venues` integer, required
    - `savings_usd` number, double, nullable — Absolute dollar savings (null when benchmark unavailable)
    - `savings_vs_benchmark_bps` number, double, nullable — Savings vs best single venue in bps (null when benchmark unavailable)
    - `spread_cost_bps` number, double, required — Half-spread cost at arrival (Collins & Fabozzi 1991)
    - `tca_quality` string, required — "direct" (persisted from live TCA) or "reconstructed" (backfilled estimate)
    - `total_fees_1e9` integer, required
  - `time_to_first_fill_ms` integer, nullable — Latency (ms) from parent arrival to the first fill. Distinct from TCA's `execution_time_ms` which measures to the last fill.
  - `updated_unix_ns` integer, required — Last update timestamp (nanoseconds since epoch)
  - `venue_state` 'none' | 'in_flight' | 'resting' | 'unknown', required

## Other responses

- `404` — Order not found

---

[API](https://skmtc.dev/sequencemkts/apis/sequence-markets-api.md) · [All operations](https://skmtc.dev/sequencemkts/apis/sequence-markets-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/sequencemkts/sequence-markets-api/revisions/1c826964b9f9/schema)
