Skip to content
Get started

Submit Orders

v1.orders.submit_orders(intaccount_id, OrderSubmitOrdersParams**kwargs) -> OrderSubmitOrdersResponse
POST/v1/accounts/{account_id}/orders

Submit new orders

ParametersExpand Collapse
account_id: int
orders: Iterable[Order]
One of the following:
class OrderNewOrderMultilegRequest:

Multileg strategy order request

legs: Iterable[OrderNewOrderMultilegRequestLeg]

Legs that compose the strategy.

instrument_type: SecurityType

Security type for the leg.

One of the following:
"COMMON_STOCK"
"PREFERRED_STOCK"
"OPTION"
"CASH"
"OTHER"
ratio: str

Ratio for the leg.

security: str

Trading symbol (e.g. “AAPL” or OSI symbol for options)

side: Side

Leg side.

One of the following:
"BUY"
"SELL"
"SELL_SHORT"
"OTHER"
id: Optional[str]

Optional leg reference identifier.

position_effect: Optional[PositionEffect]

Optional leg position effect.

One of the following:
"OPEN"
"CLOSE"
order_type: RequestOrderType

Type of order (currently MARKET or LIMIT for multileg strategy submission)

One of the following:
"MARKET"
"LIMIT"
"STOP"
"STOP_LIMIT"
"TRAILING_STOP"
"TRAILING_STOP_LIMIT"
time_in_force: RequestTimeInForce

Time in force

One of the following:
"DAY"
"GOOD_TILL_CANCEL"
"IMMEDIATE_OR_CANCEL"
"FILL_OR_KILL"
"GOOD_TILL_DATE"
"AT_THE_OPENING"
"AT_THE_CLOSE"
"GOOD_TILL_CROSSING"
"GOOD_THROUGH_CROSSING"
"AT_CROSSING"
id: Optional[str]

Optional client-provided unique ID (idempotency). Required to be unique per account.

maxLength64
limit_price: Optional[str]

Strategy price, required for LIMIT orders.

quantity: Optional[str]

Optional strategy-level quantity. Multiplies leg quantities. Defaults to 1.

class NewOrderRequest:

Request to submit a new order (PlaceOrderRequest from spec)

instrument_type: SecurityType

Type of security

One of the following:
"COMMON_STOCK"
"PREFERRED_STOCK"
"OPTION"
"CASH"
"OTHER"
order_type: RequestOrderType

Type of order

One of the following:
"MARKET"
"LIMIT"
"STOP"
"STOP_LIMIT"
"TRAILING_STOP"
"TRAILING_STOP_LIMIT"
quantity: str

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

One of the following:
"BUY"
"SELL"
"SELL_SHORT"
"OTHER"
time_in_force: RequestTimeInForce

Time in force

One of the following:
"DAY"
"GOOD_TILL_CANCEL"
"IMMEDIATE_OR_CANCEL"
"FILL_OR_KILL"
"GOOD_TILL_DATE"
"AT_THE_OPENING"
"AT_THE_CLOSE"
"GOOD_TILL_CROSSING"
"GOOD_THROUGH_CROSSING"
"AT_CROSSING"
id: Optional[str]

Optional client-provided unique ID (idempotency). Required to be unique per account.

maxLength64
expires_at: Optional[datetime]

The timestamp when the order should expire (UTC). Required when time_in_force is GOOD_TILL_DATE.

formatdate-time
extended_hours: Optional[bool]

Allow trading outside regular trading hours. Some brokers disallow options outside RTH.

instrument_id: Optional[InstrumentIDOrSymbol]

OEMS instrument UUID

formatuuid
limit_offset: Optional[str]

Limit offset for trailing stop-limit orders (signed)

limit_price: Optional[str]

Limit price (required for LIMIT and STOP_LIMIT orders)

position_effect: Optional[PositionEffect]

Required when instrument_type is OPTION. Specifies whether the order opens or closes a position.

One of the following:
"OPEN"
"CLOSE"
stop_price: Optional[str]

Stop price (required for STOP and STOP_LIMIT orders)

symbol: Optional[str]

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.

trailing_offset: Optional[str]

Trailing offset amount (required for trailing orders)

trailing_offset_type: Optional[TrailingOffsetType]

Trailing offset type (PRICE or PERCENT_BPS)

One of the following:
"PRICE"
"BPS"
ReturnsExpand Collapse
class OrderSubmitOrdersResponse:
data: OrderList
id: str

Engine-assigned unique identifier for this order (UUID).

account_id: int

Account placing the order

formatint64
client_order_id: str

Client-provided identifier echoed back (FIX tag 11).

created_at: datetime

Timestamp when order was created (UTC)

formatdate-time
filled_quantity: str

Cumulative filled quantity

instrument_id: str

OEMS instrument UUID for the traded instrument.

formatuuid
instrument_type: SecurityType

Type of security

One of the following:
"COMMON_STOCK"
"PREFERRED_STOCK"
"OPTION"
"CASH"
"OTHER"
leaves_quantity: str

Remaining unfilled quantity

order_type: OrderType

Type of order (MARKET, LIMIT, etc.)

One of the following:
"MARKET"
"LIMIT"
"STOP"
"STOP_LIMIT"
"TRAILING_STOP"
"TRAILING_STOP_LIMIT"
"OTHER"
quantity: str

Total order quantity

side: Side

Side of the order (BUY, SELL, SELL_SHORT)

One of the following:
"BUY"
"SELL"
"SELL_SHORT"
"OTHER"
status: OrderStatus

Current status of the order

One of the following:
"PENDING_NEW"
"NEW"
"PARTIALLY_FILLED"
"FILLED"
"CANCELED"
"REJECTED"
"EXPIRED"
"PENDING_CANCEL"
"PENDING_REPLACE"
"REPLACED"
"DONE_FOR_DAY"
"STOPPED"
"SUSPENDED"
"CALCULATED"
"OTHER"
symbol: str

Trading symbol

time_in_force: TimeInForce

Time in force instruction

One of the following:
"DAY"
"GOOD_TILL_CANCEL"
"IMMEDIATE_OR_CANCEL"
"FILL_OR_KILL"
"GOOD_TILL_DATE"
"AT_THE_OPENING"
"AT_THE_CLOSE"
"GOOD_TILL_CROSSING"
"GOOD_THROUGH_CROSSING"
"AT_CROSSING"
"OTHER"
updated_at: datetime

Timestamp of the most recent update (UTC)

formatdate-time
venue: str

MIC code of the venue where the order is routed

average_fill_price: Optional[str]

Average fill price across all executions

details: Optional[List[str]]

Contains execution, rejection or cancellation details, if any

expires_at: Optional[datetime]

Timestamp when the order will expire (UTC). Present when time_in_force is GOOD_TILL_DATE.

formatdate-time
extended_hours: Optional[bool]

Whether the order is eligible for extended-hours trading.

limit_offset: Optional[str]

Limit offset for trailing stop-limit orders (signed)

limit_price: Optional[str]

Limit price (for LIMIT and STOP_LIMIT orders)

queue_state: Optional[QueueState]

Parent order queue state, present when the order is awaiting release or released.

One of the following:
"AWAITING_RELEASE"
"RELEASED"
releases_at: Optional[datetime]

Scheduled release time for orders awaiting release.

formatdate-time
stop_price: Optional[str]

Stop price (for STOP and STOP_LIMIT orders)

trailing_limit_px: Optional[str]

Current trailing limit price computed by the trailing strategy

trailing_offset: Optional[str]

Trailing offset amount for trailing orders

trailing_offset_type: Optional[TrailingOffsetType]

Trailing offset type for trailing orders

One of the following:
"PRICE"
"BPS"
trailing_stop_px: Optional[str]

Current trailing stop price computed by the trailing strategy

trailing_watermark_px: Optional[str]

Trailing watermark price for trailing orders

trailing_watermark_ts: Optional[datetime]

Trailing watermark timestamp for trailing orders

formatdate-time
underlying_instrument_id: Optional[str]

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.

formatuuid

Submit Orders

from clear_street import ClearStreet

client = ClearStreet(
    api_key="My API Key",
)
response = client.v1.orders.submit_orders(
    account_id=0,
    orders=[{
        "legs": [{
            "instrument_type": "OPTION",
            "ratio": "ratio",
            "security": "0193bb84-447a-706f-996f-097254663f02",
            "side": "BUY",
        }, {
            "instrument_type": "OPTION",
            "ratio": "ratio",
            "security": "0193bb84-4db4-78ec-b4fd-cba8be61cf8a",
            "side": "SELL",
        }, {
            "instrument_type": "OPTION",
            "ratio": "ratio",
            "security": "0193bb84-5264-7f20-8fd3-35df82cd6ef0",
            "side": "BUY",
        }],
        "order_type": "LIMIT",
        "time_in_force": "DAY",
    }],
)
print(response)
{
  "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"
  }
}
{
  "error": {
    "code": 400,
    "message": "Failed to parse the request body as JSON: [0].?: expected `,` or `}` at line 11 column 3"
  },
  "metadata": {
    "request_id": "8cb2657f-828e-4af5-b7d0-5cc6b7354bc2"
  }
}
{
  "error": {
    "code": 400,
    "details": [
      {
        "description": "Buying Power: required > available",
        "subject": "order:019dba52-6611-7b53-9bc9-18c410e5ebb8",
        "type": "BUYING_POWER"
      },
      {
        "domain": "com.clearstreet.oems.risk",
        "metadata": {
          "account_id": "100001",
          "account_type": "margin_reg_t",
          "available": "11004.5000",
          "multiplier": "2",
          "order_id": "019dba52-6611-7b53-9bc9-18c410e5ebb8",
          "required_equity": "30000",
          "required_options": "0",
          "required_total": "30000",
          "side": "Buy",
          "symbol": "AAPL"
        },
        "reason": "BUYING_POWER"
      }
    ],
    "message": "Risk check failed"
  },
  "metadata": {
    "request_id": "00bf689a-f53d-47b7-8b73-f0e69d2e89b6"
  }
}
{
  "error": {
    "code": 400,
    "details": [
      {
        "description": "Self-Match: would cross own orders",
        "subject": "order:019dba51-a906-7133-aacc-ea4fc05058d8",
        "type": "SELF_MATCH"
      },
      {
        "domain": "com.clearstreet.oems.risk",
        "metadata": {
          "account_id": "100001",
          "order_id": "019dba51-a906-7133-aacc-ea4fc05058d8",
          "price": "$200",
          "side": "Sell",
          "symbol": "AAPL"
        },
        "reason": "SELF_MATCH"
      }
    ],
    "message": "Risk check failed"
  },
  "metadata": {
    "request_id": "21b77c52-2386-40a4-8955-8fa1127ff424"
  }
}
{
  "error": {
    "code": 403,
    "message": "The caller does not have permission to execute the specified operation"
  },
  "metadata": {
    "request_id": "5518f0c6-58ff-4b4a-81a5-701556d41206"
  }
}
{
  "error": {
    "code": 422,
    "message": "Failed to deserialize the JSON body into the target type: [0]: missing field `order_type` at line 26 column 1"
  },
  "metadata": {
    "request_id": "1b2c02c3-92a1-4432-8638-e71038c105c3"
  }
}
Returns Examples
{
  "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"
  }
}
{
  "error": {
    "code": 400,
    "message": "Failed to parse the request body as JSON: [0].?: expected `,` or `}` at line 11 column 3"
  },
  "metadata": {
    "request_id": "8cb2657f-828e-4af5-b7d0-5cc6b7354bc2"
  }
}
{
  "error": {
    "code": 400,
    "details": [
      {
        "description": "Buying Power: required > available",
        "subject": "order:019dba52-6611-7b53-9bc9-18c410e5ebb8",
        "type": "BUYING_POWER"
      },
      {
        "domain": "com.clearstreet.oems.risk",
        "metadata": {
          "account_id": "100001",
          "account_type": "margin_reg_t",
          "available": "11004.5000",
          "multiplier": "2",
          "order_id": "019dba52-6611-7b53-9bc9-18c410e5ebb8",
          "required_equity": "30000",
          "required_options": "0",
          "required_total": "30000",
          "side": "Buy",
          "symbol": "AAPL"
        },
        "reason": "BUYING_POWER"
      }
    ],
    "message": "Risk check failed"
  },
  "metadata": {
    "request_id": "00bf689a-f53d-47b7-8b73-f0e69d2e89b6"
  }
}
{
  "error": {
    "code": 400,
    "details": [
      {
        "description": "Self-Match: would cross own orders",
        "subject": "order:019dba51-a906-7133-aacc-ea4fc05058d8",
        "type": "SELF_MATCH"
      },
      {
        "domain": "com.clearstreet.oems.risk",
        "metadata": {
          "account_id": "100001",
          "order_id": "019dba51-a906-7133-aacc-ea4fc05058d8",
          "price": "$200",
          "side": "Sell",
          "symbol": "AAPL"
        },
        "reason": "SELF_MATCH"
      }
    ],
    "message": "Risk check failed"
  },
  "metadata": {
    "request_id": "21b77c52-2386-40a4-8955-8fa1127ff424"
  }
}
{
  "error": {
    "code": 403,
    "message": "The caller does not have permission to execute the specified operation"
  },
  "metadata": {
    "request_id": "5518f0c6-58ff-4b4a-81a5-701556d41206"
  }
}
{
  "error": {
    "code": 422,
    "message": "Failed to deserialize the JSON body into the target type: [0]: missing field `order_type` at line 26 column 1"
  },
  "metadata": {
    "request_id": "1b2c02c3-92a1-4432-8638-e71038c105c3"
  }
}