## Submit Orders `OrderSubmitOrdersResponse v1().orders().submitOrders(OrderSubmitOrdersParamsparams, RequestOptionsrequestOptions = RequestOptions.none())` **post** `/v1/accounts/{account_id}/orders` Submit new orders ### Parameters - `OrderSubmitOrdersParams params` - `Optional accountId` - `List orders` - `class NewOrderMultilegRequest:` Multileg strategy order request - `List legs` Legs that compose the strategy. - `SecurityType instrumentType` Security type for the leg. - `COMMON_STOCK("COMMON_STOCK")` - `PREFERRED_STOCK("PREFERRED_STOCK")` - `OPTION("OPTION")` - `CASH("CASH")` - `OTHER("OTHER")` - `String ratio` Ratio for the leg. - `String security` Trading symbol (e.g. "AAPL" or OSI symbol for options) - `Side side` Leg side. - `BUY("BUY")` - `SELL("SELL")` - `SELL_SHORT("SELL_SHORT")` - `OTHER("OTHER")` - `Optional id` Optional leg reference identifier. - `Optional positionEffect` Optional leg position effect. - `OPEN("OPEN")` - `CLOSE("CLOSE")` - `RequestOrderType orderType` Type of order (currently MARKET or LIMIT for multileg strategy submission) - `MARKET("MARKET")` - `LIMIT("LIMIT")` - `STOP("STOP")` - `STOP_LIMIT("STOP_LIMIT")` - `TRAILING_STOP("TRAILING_STOP")` - `TRAILING_STOP_LIMIT("TRAILING_STOP_LIMIT")` - `RequestTimeInForce timeInForce` Time in force - `DAY("DAY")` - `GOOD_TILL_CANCEL("GOOD_TILL_CANCEL")` - `IMMEDIATE_OR_CANCEL("IMMEDIATE_OR_CANCEL")` - `FILL_OR_KILL("FILL_OR_KILL")` - `GOOD_TILL_DATE("GOOD_TILL_DATE")` - `AT_THE_OPENING("AT_THE_OPENING")` - `AT_THE_CLOSE("AT_THE_CLOSE")` - `GOOD_TILL_CROSSING("GOOD_TILL_CROSSING")` - `GOOD_THROUGH_CROSSING("GOOD_THROUGH_CROSSING")` - `AT_CROSSING("AT_CROSSING")` - `Optional id` Optional client-provided unique ID (idempotency). Required to be unique per account. - `Optional limitPrice` Strategy price, required for LIMIT orders. - `Optional quantity` Optional strategy-level quantity. Multiplies leg quantities. Defaults to 1. - `class NewOrderRequest:` Request to submit a new order (PlaceOrderRequest from spec) - `SecurityType instrumentType` Type of security - `RequestOrderType orderType` Type of order - `String quantity` 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 - `RequestTimeInForce timeInForce` Time in force - `Optional id` Optional client-provided unique ID (idempotency). Required to be unique per account. - `Optional expiresAt` The timestamp when the order should expire (UTC). Required when time_in_force is GOOD_TILL_DATE. - `Optional extendedHours` Allow trading outside regular trading hours. Some brokers disallow options outside RTH. - `Optional instrumentId` OEMS instrument UUID - `Optional limitOffset` Limit offset for trailing stop-limit orders (signed) - `Optional limitPrice` Limit price (required for LIMIT and STOP_LIMIT orders) - `Optional positionEffect` Required when instrument_type is OPTION. Specifies whether the order opens or closes a position. - `Optional stopPrice` Stop price (required for STOP and STOP_LIMIT orders) - `Optional symbol` 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. - `Optional trailingOffset` Trailing offset amount (required for trailing orders) - `Optional trailingOffsetType` Trailing offset type (PRICE or PERCENT_BPS) - `PRICE("PRICE")` - `BPS("BPS")` ### Returns - `class OrderSubmitOrdersResponse:` - `List data` - `String id` Engine-assigned unique identifier for this order (UUID). - `long accountId` Account placing the order - `String clientOrderId` Client-provided identifier echoed back (FIX tag 11). - `LocalDateTime createdAt` Timestamp when order was created (UTC) - `String filledQuantity` Cumulative filled quantity - `String instrumentId` OEMS instrument UUID for the traded instrument. - `SecurityType instrumentType` Type of security - `COMMON_STOCK("COMMON_STOCK")` - `PREFERRED_STOCK("PREFERRED_STOCK")` - `OPTION("OPTION")` - `CASH("CASH")` - `OTHER("OTHER")` - `String leavesQuantity` Remaining unfilled quantity - `OrderType orderType` Type of order (MARKET, LIMIT, etc.) - `MARKET("MARKET")` - `LIMIT("LIMIT")` - `STOP("STOP")` - `STOP_LIMIT("STOP_LIMIT")` - `TRAILING_STOP("TRAILING_STOP")` - `TRAILING_STOP_LIMIT("TRAILING_STOP_LIMIT")` - `OTHER("OTHER")` - `String quantity` Total order quantity - `Side side` Side of the order (BUY, SELL, SELL_SHORT) - `BUY("BUY")` - `SELL("SELL")` - `SELL_SHORT("SELL_SHORT")` - `OTHER("OTHER")` - `OrderStatus status` Current status of the order - `PENDING_NEW("PENDING_NEW")` - `NEW("NEW")` - `PARTIALLY_FILLED("PARTIALLY_FILLED")` - `FILLED("FILLED")` - `CANCELED("CANCELED")` - `REJECTED("REJECTED")` - `EXPIRED("EXPIRED")` - `PENDING_CANCEL("PENDING_CANCEL")` - `PENDING_REPLACE("PENDING_REPLACE")` - `REPLACED("REPLACED")` - `DONE_FOR_DAY("DONE_FOR_DAY")` - `STOPPED("STOPPED")` - `SUSPENDED("SUSPENDED")` - `CALCULATED("CALCULATED")` - `OTHER("OTHER")` - `String symbol` Trading symbol - `TimeInForce timeInForce` Time in force instruction - `DAY("DAY")` - `GOOD_TILL_CANCEL("GOOD_TILL_CANCEL")` - `IMMEDIATE_OR_CANCEL("IMMEDIATE_OR_CANCEL")` - `FILL_OR_KILL("FILL_OR_KILL")` - `GOOD_TILL_DATE("GOOD_TILL_DATE")` - `AT_THE_OPENING("AT_THE_OPENING")` - `AT_THE_CLOSE("AT_THE_CLOSE")` - `GOOD_TILL_CROSSING("GOOD_TILL_CROSSING")` - `GOOD_THROUGH_CROSSING("GOOD_THROUGH_CROSSING")` - `AT_CROSSING("AT_CROSSING")` - `OTHER("OTHER")` - `LocalDateTime updatedAt` Timestamp of the most recent update (UTC) - `String venue` MIC code of the venue where the order is routed - `Optional averageFillPrice` Average fill price across all executions - `Optional> details` Contains execution, rejection or cancellation details, if any - `Optional expiresAt` Timestamp when the order will expire (UTC). Present when time_in_force is GOOD_TILL_DATE. - `Optional extendedHours` Whether the order is eligible for extended-hours trading. - `Optional limitOffset` Limit offset for trailing stop-limit orders (signed) - `Optional limitPrice` Limit price (for LIMIT and STOP_LIMIT orders) - `Optional queueState` Parent order queue state, present when the order is awaiting release or released. - `AWAITING_RELEASE("AWAITING_RELEASE")` - `RELEASED("RELEASED")` - `Optional releasesAt` Scheduled release time for orders awaiting release. - `Optional stopPrice` Stop price (for STOP and STOP_LIMIT orders) - `Optional trailingLimitPx` Current trailing limit price computed by the trailing strategy - `Optional trailingOffset` Trailing offset amount for trailing orders - `Optional trailingOffsetType` Trailing offset type for trailing orders - `PRICE("PRICE")` - `BPS("BPS")` - `Optional trailingStopPx` Current trailing stop price computed by the trailing strategy - `Optional trailingWatermarkPx` Trailing watermark price for trailing orders - `Optional trailingWatermarkTs` Trailing watermark timestamp for trailing orders - `Optional underlyingInstrumentId` 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 ```java package com.clear_street.api.example; import com.clear_street.api.client.ClearStreetClient; import com.clear_street.api.client.okhttp.ClearStreetOkHttpClient; import com.clear_street.api.models.v1.SecurityType; import com.clear_street.api.models.v1.orders.OrderSubmitOrdersParams; import com.clear_street.api.models.v1.orders.OrderSubmitOrdersResponse; import com.clear_street.api.models.v1.orders.RequestOrderType; import com.clear_street.api.models.v1.orders.RequestTimeInForce; import com.clear_street.api.models.v1.orders.Side; import java.util.List; public final class Main { private Main() {} public static void main(String[] args) { ClearStreetClient client = ClearStreetOkHttpClient.builder() .fromEnv() .apiKey("My API Key") .build(); OrderSubmitOrdersParams params = OrderSubmitOrdersParams.builder() .accountId(0L) .addOrder(OrderSubmitOrdersParams.Order.NewOrderMultilegRequest.builder() .legs(List.of( OrderSubmitOrdersParams.Order.NewOrderMultilegRequest.Leg.builder() .instrumentType(SecurityType.OPTION) .ratio("ratio") .security("0193bb84-447a-706f-996f-097254663f02") .side(Side.BUY) .build(), OrderSubmitOrdersParams.Order.NewOrderMultilegRequest.Leg.builder() .instrumentType(SecurityType.OPTION) .ratio("ratio") .security("0193bb84-4db4-78ec-b4fd-cba8be61cf8a") .side(Side.SELL) .build(), OrderSubmitOrdersParams.Order.NewOrderMultilegRequest.Leg.builder() .instrumentType(SecurityType.OPTION) .ratio("ratio") .security("0193bb84-5264-7f20-8fd3-35df82cd6ef0") .side(Side.BUY) .build() )) .orderType(RequestOrderType.LIMIT) .timeInForce(RequestTimeInForce.DAY) .build()) .build(); OrderSubmitOrdersResponse response = client.v1().orders().submitOrders(params); } } ``` #### 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" } } ```