Positions
View positions and manage position instructions.
Close Position
Get Position Instructions
Submit Position Instructions
Cancel Position Instruction
ModelsExpand Collapse
position: object { account_id, available_quantity, instrument_id, 17 more }
Represents a holding of a particular instrument in an account
avg_price: optional string
The average price paid per share or contract for this position When a null/undefined value is observed, it indicates that there is no available data.
closing_price: optional string
The closing price used to value the position for the last trading day When a null/undefined value is observed, it indicates that there is no available data.
closing_price_date: optional string
The market date associated with closing_price
When a null/undefined value is observed, it indicates that there is no available data.
cost_basis: optional string
The total cost basis for this position When a null/undefined value is observed, it indicates that there is no available data.
daily_realized_pnl: optional string
The realized profit or loss for this position for the current day When a null/undefined value is observed, it indicates that there is no available data.
daily_unrealized_pnl: optional string
The unrealized profit or loss for this position relative to the previous close When a null/undefined value is observed, it indicates that there is no available data.
daily_unrealized_pnl_pct: optional string
The unrealized profit/loss for the position for the current day, expressed as a percentage of the baseline value (range: 0-100). When a null/undefined value is observed, it indicates that there is no available data.
instrument_price: optional string
The current market price of the instrument When a null/undefined value is observed, it indicates that there is no available data.
underlying_instrument_id: optional string
Identifier of the underlying instrument, when available When a null/undefined value is observed, it indicates it does not apply.
position_instruction: object { id, account_id, client_instruction_id, 11 more }
A position instruction and its current lifecycle state.
client_instruction_id: string
Caller-supplied idempotency key echoed from the submit request; the server-assigned fallback when none was supplied.
accepted_quantity: optional string
Number of contracts accepted by the clearing venue. Populated once
the instruction reaches ACCEPTED.
When a null/undefined value is observed, it indicates that there is no available data.
created_at: optional string
When the instruction was first accepted by the service. When a null/undefined value is observed, it indicates that there is no available data.
rejection: optional object { description, domain, metadata, reason }
Machine-readable counterpart to rejection_reason: a stable reason code,
human-readable description, and params, present on every rejected row —
on submit, cancel, get, and list alike. Branch on rejection.reason and
read rejection.description instead of the top-level rejection_reason.
When a null/undefined value is observed, it indicates it does not apply.
description: string
Human-readable explanation of the rejection. Duplicates the top-level
rejection_reason; prefer this field.
domain: string
Namespacing domain of the reason code — com.clearstreet.oems.exercise
for reasons OEMS validates, com.clearstreet.oems.clearing for
clearing-owned reasons.
metadata: map[string]
Reason-specific parameters as a string→string map. Which keys are present
depends on reason:
INSUFFICIENT_POSITION→available,requestedDNE_NOT_ON_EXPIRY/CEA_NOT_ON_EXPIRY→expiry,business_dateEXERCISE_PAST_CUTOFF→cutoff_timeDUPLICATE_INSTRUCTION→existing_id
Empty for reasons that carry no parameters. New keys may be added over time, so treat unknown keys leniently.
rejection_reason: optional string
Human-readable explanation populated on any non-success terminal
status — REJECTED or CANCEL_FAILED. On a
207 Multi-Status batch submit the top-level error field
summarizes the batch; per-row detail continues to live here.
When a null/undefined value is observed, it indicates it does not apply.
position_instruction_list: array of PositionInstruction { id, account_id, client_instruction_id, 11 more }
client_instruction_id: string
Caller-supplied idempotency key echoed from the submit request; the server-assigned fallback when none was supplied.
accepted_quantity: optional string
Number of contracts accepted by the clearing venue. Populated once
the instruction reaches ACCEPTED.
When a null/undefined value is observed, it indicates that there is no available data.
created_at: optional string
When the instruction was first accepted by the service. When a null/undefined value is observed, it indicates that there is no available data.
rejection: optional object { description, domain, metadata, reason }
Machine-readable counterpart to rejection_reason: a stable reason code,
human-readable description, and params, present on every rejected row —
on submit, cancel, get, and list alike. Branch on rejection.reason and
read rejection.description instead of the top-level rejection_reason.
When a null/undefined value is observed, it indicates it does not apply.
description: string
Human-readable explanation of the rejection. Duplicates the top-level
rejection_reason; prefer this field.
domain: string
Namespacing domain of the reason code — com.clearstreet.oems.exercise
for reasons OEMS validates, com.clearstreet.oems.clearing for
clearing-owned reasons.
metadata: map[string]
Reason-specific parameters as a string→string map. Which keys are present
depends on reason:
INSUFFICIENT_POSITION→available,requestedDNE_NOT_ON_EXPIRY/CEA_NOT_ON_EXPIRY→expiry,business_dateEXERCISE_PAST_CUTOFF→cutoff_timeDUPLICATE_INSTRUCTION→existing_id
Empty for reasons that carry no parameters. New keys may be added over time, so treat unknown keys leniently.
rejection_reason: optional string
Human-readable explanation populated on any non-success terminal
status — REJECTED or CANCEL_FAILED. On a
207 Multi-Status batch submit the top-level error field
summarizes the batch; per-row detail continues to live here.
When a null/undefined value is observed, it indicates it does not apply.
position_instruction_rejection: object { description, domain, metadata, reason }
Machine-readable detail for a rejected position instruction.
Present on every rejected row, across the full lifecycle — submit, cancel,
get, and list. Branch on reason for programmatic handling and template your
own copy from metadata, or show description directly.
description: string
Human-readable explanation of the rejection. Duplicates the top-level
rejection_reason; prefer this field.
domain: string
Namespacing domain of the reason code — com.clearstreet.oems.exercise
for reasons OEMS validates, com.clearstreet.oems.clearing for
clearing-owned reasons.
metadata: map[string]
Reason-specific parameters as a string→string map. Which keys are present
depends on reason:
INSUFFICIENT_POSITION→available,requestedDNE_NOT_ON_EXPIRY/CEA_NOT_ON_EXPIRY→expiry,business_dateEXERCISE_PAST_CUTOFF→cutoff_timeDUPLICATE_INSTRUCTION→existing_id
Empty for reasons that carry no parameters. New keys may be added over time, so treat unknown keys leniently.
position_instruction_status: "SENT" or "ACCEPTED" or "REJECTED" or 4 more
Lifecycle status of a position instruction.
SENT: accepted and submitted to the clearing venue.ACCEPTED: terminal — accepted by the clearing venue.REJECTED: terminal rejection;rejection_reasoncarries the detail. Covers both venue-reported rejections and rejections raised before the instruction reached the clearing venue (e.g. duplicateclient_instruction_id,DO_NOT_EXERCISE/CONTRARY_EXERCISEsubmitted on a non-expiry day, insufficient position, or an instrument that does not resolve).CANCEL_REQUESTED: cancel accepted; final cancel state pending.CANCELLED: terminal — cancel completed.CANCEL_FAILED: cancel could not be completed; operator attention required.rejection_reasoncarries the detail.UNKNOWN: status could not be determined.
avg_price: optional string
The average price paid per share or contract for this position When a null/undefined value is observed, it indicates that there is no available data.
closing_price: optional string
The closing price used to value the position for the last trading day When a null/undefined value is observed, it indicates that there is no available data.
closing_price_date: optional string
The market date associated with closing_price
When a null/undefined value is observed, it indicates that there is no available data.
cost_basis: optional string
The total cost basis for this position When a null/undefined value is observed, it indicates that there is no available data.
daily_realized_pnl: optional string
The realized profit or loss for this position for the current day When a null/undefined value is observed, it indicates that there is no available data.
daily_unrealized_pnl: optional string
The unrealized profit or loss for this position relative to the previous close When a null/undefined value is observed, it indicates that there is no available data.
daily_unrealized_pnl_pct: optional string
The unrealized profit/loss for the position for the current day, expressed as a percentage of the baseline value (range: 0-100). When a null/undefined value is observed, it indicates that there is no available data.
instrument_price: optional string
The current market price of the instrument When a null/undefined value is observed, it indicates that there is no available data.
underlying_instrument_id: optional string
Identifier of the underlying instrument, when available When a null/undefined value is observed, it indicates it does not apply.