## Submit Orders `client.V1.Orders.SubmitOrders(ctx, accountID, body) (*V1OrderSubmitOrdersResponse, error)` **post** `/v1/accounts/{account_id}/orders` Submit new orders ### Parameters - `accountID int64` - `body V1OrderSubmitOrdersParams` - `Orders param.Field[[]V1OrderSubmitOrdersParamsOrderUnion]` - `type V1OrderSubmitOrdersParamsOrderNewOrderMultilegRequest struct{…}` Multileg strategy order request - `Legs []V1OrderSubmitOrdersParamsOrderNewOrderMultilegRequestLeg` Legs that compose the strategy. - `InstrumentType SecurityType` Security type for the leg. - `const SecurityTypeCommonStock SecurityType = "COMMON_STOCK"` - `const SecurityTypePreferredStock SecurityType = "PREFERRED_STOCK"` - `const SecurityTypeOption SecurityType = "OPTION"` - `const SecurityTypeCash SecurityType = "CASH"` - `const SecurityTypeOther SecurityType = "OTHER"` - `Ratio string` Ratio for the leg. - `Security string` Trading symbol (e.g. "AAPL" or OSI symbol for options) - `Side Side` Leg side. - `const SideBuy Side = "BUY"` - `const SideSell Side = "SELL"` - `const SideSellShort Side = "SELL_SHORT"` - `const SideOther Side = "OTHER"` - `ID string` Optional leg reference identifier. - `PositionEffect PositionEffect` Optional leg position effect. - `const PositionEffectOpen PositionEffect = "OPEN"` - `const PositionEffectClose PositionEffect = "CLOSE"` - `OrderType RequestOrderType` Type of order (currently MARKET or LIMIT for multileg strategy submission) - `const RequestOrderTypeMarket RequestOrderType = "MARKET"` - `const RequestOrderTypeLimit RequestOrderType = "LIMIT"` - `const RequestOrderTypeStop RequestOrderType = "STOP"` - `const RequestOrderTypeStopLimit RequestOrderType = "STOP_LIMIT"` - `const RequestOrderTypeTrailingStop RequestOrderType = "TRAILING_STOP"` - `const RequestOrderTypeTrailingStopLimit RequestOrderType = "TRAILING_STOP_LIMIT"` - `TimeInForce RequestTimeInForce` Time in force - `const RequestTimeInForceDay RequestTimeInForce = "DAY"` - `const RequestTimeInForceGoodTillCancel RequestTimeInForce = "GOOD_TILL_CANCEL"` - `const RequestTimeInForceImmediateOrCancel RequestTimeInForce = "IMMEDIATE_OR_CANCEL"` - `const RequestTimeInForceFillOrKill RequestTimeInForce = "FILL_OR_KILL"` - `const RequestTimeInForceGoodTillDate RequestTimeInForce = "GOOD_TILL_DATE"` - `const RequestTimeInForceAtTheOpening RequestTimeInForce = "AT_THE_OPENING"` - `const RequestTimeInForceAtTheClose RequestTimeInForce = "AT_THE_CLOSE"` - `const RequestTimeInForceGoodTillCrossing RequestTimeInForce = "GOOD_TILL_CROSSING"` - `const RequestTimeInForceGoodThroughCrossing RequestTimeInForce = "GOOD_THROUGH_CROSSING"` - `const RequestTimeInForceAtCrossing RequestTimeInForce = "AT_CROSSING"` - `ID string` Optional client-provided unique ID (idempotency). Required to be unique per account. - `LimitPrice string` Strategy price, required for LIMIT orders. - `Quantity string` Optional strategy-level quantity. Multiplies leg quantities. Defaults to 1. - `type NewOrderRequest struct{…}` Request to submit a new order (PlaceOrderRequest from spec) - `InstrumentType SecurityType` Type of security - `OrderType RequestOrderType` Type of order - `Quantity string` Quantity to trade. For COMMON_STOCK: shares (may be fractional if supported). For OPTION (single-leg): contracts (must be an integer) - `Side Side` Side of the order - `TimeInForce RequestTimeInForce` Time in force - `ID string` Optional client-provided unique ID (idempotency). Required to be unique per account. - `ExpiresAt Time` The timestamp when the order should expire (UTC). Required when time_in_force is GOOD_TILL_DATE. - `ExtendedHours bool` Allow trading outside regular trading hours. Some brokers disallow options outside RTH. - `InstrumentID InstrumentIDOrSymbol` OEMS instrument UUID - `LimitOffset string` Limit offset for trailing stop-limit orders (signed) - `LimitPrice string` Limit price (required for LIMIT and STOP_LIMIT orders) - `PositionEffect PositionEffect` Required when instrument_type is OPTION. Specifies whether the order opens or closes a position. - `StopPrice string` Stop price (required for STOP and STOP_LIMIT orders) - `Symbol string` Trading symbol. For equities, use the ticker symbol (e.g., "AAPL"). For options, use the OSI symbol (e.g., "AAPL 250117C00190000"). Either `symbol` or `instrument_id` must be provided. - `TrailingOffset string` Trailing offset amount (required for trailing orders) - `TrailingOffsetType TrailingOffsetType` Trailing offset type (PRICE or PERCENT_BPS) - `const TrailingOffsetTypePrice TrailingOffsetType = "PRICE"` - `const TrailingOffsetTypeBps TrailingOffsetType = "BPS"` ### Returns - `type V1OrderSubmitOrdersResponse struct{…}` - `Data OrderList` - `ID string` Engine-assigned unique identifier for this order (UUID). - `AccountID int64` Account placing the order - `ClientOrderID string` Client-provided identifier echoed back (FIX tag 11). - `CreatedAt Time` Timestamp when order was created (UTC) - `FilledQuantity string` Cumulative filled quantity - `InstrumentID string` OEMS instrument UUID for the traded instrument. - `InstrumentType SecurityType` Type of security - `const SecurityTypeCommonStock SecurityType = "COMMON_STOCK"` - `const SecurityTypePreferredStock SecurityType = "PREFERRED_STOCK"` - `const SecurityTypeOption SecurityType = "OPTION"` - `const SecurityTypeCash SecurityType = "CASH"` - `const SecurityTypeOther SecurityType = "OTHER"` - `LeavesQuantity string` Remaining unfilled quantity - `OrderType OrderType` Type of order (MARKET, LIMIT, etc.) - `const OrderTypeMarket OrderType = "MARKET"` - `const OrderTypeLimit OrderType = "LIMIT"` - `const OrderTypeStop OrderType = "STOP"` - `const OrderTypeStopLimit OrderType = "STOP_LIMIT"` - `const OrderTypeTrailingStop OrderType = "TRAILING_STOP"` - `const OrderTypeTrailingStopLimit OrderType = "TRAILING_STOP_LIMIT"` - `const OrderTypeOther OrderType = "OTHER"` - `Quantity string` Total order quantity - `Side Side` Side of the order (BUY, SELL, SELL_SHORT) - `const SideBuy Side = "BUY"` - `const SideSell Side = "SELL"` - `const SideSellShort Side = "SELL_SHORT"` - `const SideOther Side = "OTHER"` - `Status OrderStatus` Current status of the order - `const OrderStatusPendingNew OrderStatus = "PENDING_NEW"` - `const OrderStatusNew OrderStatus = "NEW"` - `const OrderStatusPartiallyFilled OrderStatus = "PARTIALLY_FILLED"` - `const OrderStatusFilled OrderStatus = "FILLED"` - `const OrderStatusCanceled OrderStatus = "CANCELED"` - `const OrderStatusRejected OrderStatus = "REJECTED"` - `const OrderStatusExpired OrderStatus = "EXPIRED"` - `const OrderStatusPendingCancel OrderStatus = "PENDING_CANCEL"` - `const OrderStatusPendingReplace OrderStatus = "PENDING_REPLACE"` - `const OrderStatusReplaced OrderStatus = "REPLACED"` - `const OrderStatusDoneForDay OrderStatus = "DONE_FOR_DAY"` - `const OrderStatusStopped OrderStatus = "STOPPED"` - `const OrderStatusSuspended OrderStatus = "SUSPENDED"` - `const OrderStatusCalculated OrderStatus = "CALCULATED"` - `const OrderStatusOther OrderStatus = "OTHER"` - `Symbol string` Trading symbol - `TimeInForce TimeInForce` Time in force instruction - `const TimeInForceDay TimeInForce = "DAY"` - `const TimeInForceGoodTillCancel TimeInForce = "GOOD_TILL_CANCEL"` - `const TimeInForceImmediateOrCancel TimeInForce = "IMMEDIATE_OR_CANCEL"` - `const TimeInForceFillOrKill TimeInForce = "FILL_OR_KILL"` - `const TimeInForceGoodTillDate TimeInForce = "GOOD_TILL_DATE"` - `const TimeInForceAtTheOpening TimeInForce = "AT_THE_OPENING"` - `const TimeInForceAtTheClose TimeInForce = "AT_THE_CLOSE"` - `const TimeInForceGoodTillCrossing TimeInForce = "GOOD_TILL_CROSSING"` - `const TimeInForceGoodThroughCrossing TimeInForce = "GOOD_THROUGH_CROSSING"` - `const TimeInForceAtCrossing TimeInForce = "AT_CROSSING"` - `const TimeInForceOther TimeInForce = "OTHER"` - `UpdatedAt Time` Timestamp of the most recent update (UTC) - `Venue string` MIC code of the venue where the order is routed - `AverageFillPrice string` Average fill price across all executions - `Details []string` Contains execution, rejection or cancellation details, if any - `ExpiresAt Time` Timestamp when the order will expire (UTC). Present when time_in_force is GOOD_TILL_DATE. - `ExtendedHours bool` Whether the order is eligible for extended-hours trading. - `LimitOffset string` Limit offset for trailing stop-limit orders (signed) - `LimitPrice string` Limit price (for LIMIT and STOP_LIMIT orders) - `QueueState QueueState` Parent order queue state, present when the order is awaiting release or released. - `const QueueStateAwaitingRelease QueueState = "AWAITING_RELEASE"` - `const QueueStateReleased QueueState = "RELEASED"` - `ReleasesAt Time` Scheduled release time for orders awaiting release. - `StopPrice string` Stop price (for STOP and STOP_LIMIT orders) - `TrailingLimitPx string` Current trailing limit price computed by the trailing strategy - `TrailingOffset string` Trailing offset amount for trailing orders - `TrailingOffsetType TrailingOffsetType` Trailing offset type for trailing orders - `const TrailingOffsetTypePrice TrailingOffsetType = "PRICE"` - `const TrailingOffsetTypeBps TrailingOffsetType = "BPS"` - `TrailingStopPx string` Current trailing stop price computed by the trailing strategy - `TrailingWatermarkPx string` Trailing watermark price for trailing orders - `TrailingWatermarkTs Time` Trailing watermark timestamp for trailing orders - `UnderlyingInstrumentID string` OEMS instrument ID of the option's underlying instrument. Populated only for OPTIONS orders; `null` for non-options and for options whose underlier cannot be resolved from the instrument cache. ### Example ```go package main import ( "context" "fmt" "github.com/clear-street/clear-street-go" "github.com/clear-street/clear-street-go/option" ) func main() { client := clearstreet.NewClient( option.WithAPIKey("My API Key"), ) response, err := client.V1.Orders.SubmitOrders( context.TODO(), 0, clearstreet.V1OrderSubmitOrdersParams{ Orders: []clearstreet.V1OrderSubmitOrdersParamsOrderUnion{clearstreet.V1OrderSubmitOrdersParamsOrderUnion{ OfV1OrderSubmitOrderssOrderNewOrderMultilegRequest: &clearstreet.V1OrderSubmitOrdersParamsOrderNewOrderMultilegRequest{ Legs: []clearstreet.V1OrderSubmitOrdersParamsOrderNewOrderMultilegRequestLeg{clearstreet.V1OrderSubmitOrdersParamsOrderNewOrderMultilegRequestLeg{ InstrumentType: clearstreet.SecurityTypeOption, Ratio: "ratio", Security: "0193bb84-447a-706f-996f-097254663f02", Side: clearstreet.SideBuy, }, clearstreet.V1OrderSubmitOrdersParamsOrderNewOrderMultilegRequestLeg{ InstrumentType: clearstreet.SecurityTypeOption, Ratio: "ratio", Security: "0193bb84-4db4-78ec-b4fd-cba8be61cf8a", Side: clearstreet.SideSell, }, clearstreet.V1OrderSubmitOrdersParamsOrderNewOrderMultilegRequestLeg{ InstrumentType: clearstreet.SecurityTypeOption, Ratio: "ratio", Security: "0193bb84-5264-7f20-8fd3-35df82cd6ef0", Side: clearstreet.SideBuy, }}, OrderType: clearstreet.RequestOrderTypeLimit, TimeInForce: clearstreet.RequestTimeInForceDay, }, }}, }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response) } ``` #### Response ```json { "data": [ { "account_id": 19816, "average_fill_price": null, "client_order_id": "my-ref-id-20251003-001", "created_at": "2025-10-03T14:01:15.000000000Z", "filled_quantity": "0", "id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e01", "instrument_id": "c3c4c5c6-d3d4-e3e4-f3f4-f5f6f7f8f9fa", "instrument_type": "COMMON_STOCK", "leaves_quantity": "25", "limit_price": null, "order_type": "MARKET", "quantity": "25", "side": "SELL", "status": "PENDING_NEW", "stop_price": null, "symbol": "GOOG", "time_in_force": "DAY", "updated_at": "2025-10-03T14:01:15.000000000Z", "venue": "XNAS" }, { "account_id": 19816, "average_fill_price": null, "client_order_id": "my-ref-id-20251003-002", "created_at": "2025-10-03T14:01:15.000000000Z", "filled_quantity": "0", "id": "0195f6d0-a1b2-7c3d-8e4f-5a6b7c8d9e02", "instrument_id": "d4d5d6d7-e4e5-f4f5-a4a5-a6a7a8a9aaab", "instrument_type": "COMMON_STOCK", "leaves_quantity": "50", "limit_price": "180.00", "order_type": "LIMIT", "quantity": "50", "side": "BUY", "status": "PENDING_NEW", "stop_price": null, "symbol": "TSLA", "time_in_force": "DAY", "updated_at": "2025-10-03T14:01:15.000000000Z", "venue": "XNAS" } ], "error": null, "metadata": { "request_id": "ea0b1c2d-3e4f-5a6b-7c8d-9e0f1a2b3c4d" } } ```