Skip to main content
GET
Get order

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

order_id
string<uuid>
required

Internal order id to fetch

Response

Order retrieved

Refuses unknown fields. A payload naming a field this type does not have was written against a different contract, and reading it as though it were this one would silently drop whatever that field meant.

account_id
string<uuid>
required
broker
enum<string>
required
Available options:
unspecified,
lightspeed
command_seq
integer<int64>
required
filled_quantity
string
required
instrument
object
required

What is being traded.

Replaces the symbol: String this struct carried, and is strictly more than it was: instrument.symbol() still gives the venue's own spelling for anything that needs the string, and the rest of the value carries the facts the spelling cannot - the multiplier that makes ESZ5 worth fifty dollars a point, the settlement direction that decides which way an inverse perpetual moves, the payout a prediction contract settles at.

Read those through [Instrument::notional], which is a different calculation for four of the seven asset classes and silently wrong for all but equities if the familiar one is used instead.

Required rather than optional. While it was an Option, None meant unknown and every reader had to decide what to do with that - and the tempting decision, treating it as an equity, is exactly the assumption the field exists to remove. Making it mandatory moves that decision to the one place that can actually answer it: whoever constructs the order has to resolve the instrument first.

intent_id
string<uuid>
required
order_id
string<uuid>
required
order_side
enum<string>
required
Available options:
UNSPECIFIED,
BUY,
SELL,
SELL_SHORT
order_state
enum<string>
required
Available options:
Unspecified,
Open,
Closed,
Rejected
order_status
enum<string>
required
Available options:
UNSPECIFIED,
PENDING_NEW,
NEW,
PARTIALLY_FILLED,
FILLED,
PENDING_CANCEL,
CANCELLED,
PENDING_REPLACE,
REPLACED,
STOPPED,
REJECTED
order_type
enum<string>
required
Available options:
UNSPECIFIED,
LIMIT,
MARKET,
FILL_OR_KILL,
LIMIT_ON_OPEN,
LIMIT_ON_CLOSE,
MARKET_ON_OPEN,
MARKET_ON_CLOSE,
STOP,
STOP_LIMIT,
TRAILING_STOP
order_venue
enum<string>
required

Where this order was commanded to go.

Distinct from instrument.venue(), which says where the instrument is listed. See [OrderVenue] for why those are two questions.

Available options:
UNSPECIFIED,
SMART,
AMEX,
ARCA,
BATS,
BATY,
EDGA,
EDGX,
NSDQ,
NYSE
organization_id
string<uuid>
required
quantity
string
required
received_at
string<date-time>
required

When this reached the platform, on the ingest host's clock.

The same clock every message on the trading stream is stamped with, and deliberately not the broker's - see the note on BrokerPosition::received_at [blocked] for why one clock across the three message types is what makes them comparable at all.

time_in_force
enum<string>
required
Available options:
UNSPECIFIED,
DAY,
IMMEDIATE_OR_CANCEL,
GOOD_TILL_CANCEL,
AT_OPEN,
AT_CLOSE,
FILL_OR_KILL,
EXT
average_price
null | string
broker_sent_at
string<date-time> | null

When the broker says it sent this, on the broker's clock.

Reporting only, and never an ordering key. An order restates its whole fill history on every update, so this is the time of the restatement and not of the fill it reports - two messages about one execution carry two different broker stamps, milliseconds apart.

Option and serde(default) because it is newer than the type: the snapshot table stores this struct as a JSONB payload, and rows written before the field existed carry no key for it.

external_order_id
string | null
limit_price
null | string
stop_price
null | string
strategy_id
string<uuid> | null

The caller's strategy this order belongs to, if it named one when it created the intent.

What a strategy is belongs to the caller: one run of a model, one cycle away from a target position and back. The platform only groups by it. Unlike intent_id, which names one order, a strategy spans every intent the caller places under it, so this is the key a strategy's executions are summed on.

Taken from the intent's create and carried across every replace and cancel under it.

serde(default) because the snapshot table stores this struct as a JSONB payload, and rows written before the field existed carry no key for it.