---
title: "Create Order"
method: POST
path: "/v1/orders"
tags: ["orders"]
---

# Create Order

`POST /v1/orders`

Place a new order.

Submits an order for asynchronous processing. The order is persisted immediately
and queued for execution on the target exchange.

See  [Orders](https://docs.rivermarkets.com/concepts/orders) and [Order Types](https://docs.rivermarkets.com/concepts/order-types) for more information.

**Asset Selection:**
Provide exactly one of `river_id` (standard instrument) or `generic_asset_id` (user-defined basket).
Generic asset orders only support `MARKET` order type — the system automatically routes
IOC limit orders to each underlying instrument at optimal prices.

**Response:**
Returns `202 Accepted` with the order_id and associated complex_orders ids (TP/SL).
Poll `GET /v1/orders/{order_id}` or use webhooks to track execution.

## Request body

- OrderCreate — Schema for creating a new order.
  - `order_type` 'LIMIT' | 'MARKET' | 'RFQ_TAKER', required — Order type: 'LIMIT' or 'MARKET'
  - `time_in_force` 'FOK' | 'GTC' | 'GTD' | 'IOC', required — Time in force: 'FOK', 'GTC', 'GTD', or 'IOC'
  - `qty` number, required — Order quantity (number of contracts)
  - `price` number, nullable — Limit price between 0 and 1. Required for LIMIT orders.
  - `buy_flag` boolean, required — Order direction: true=buy, false=sell
  - `post_only` boolean — If true, the order is rejected instead of taking liquidity. Only valid for LIMIT orders with a resting time in force (GTC or GTD).
  - `cancel_order_on_pause` boolean — Kalshi only: if true, the resting order is cancelled by the exchange when it enters a trading pause. Ignored on other venues.
  - `river_id` integer, nullable — Instrument ID. Mutually exclusive with generic_asset_id.
  - `generic_asset_id` string, uuid, nullable — Generic asset basket UUID. Mutually exclusive with river_id.
  - `subaccount_id` string, uuid, required — Subaccount to place the order under
  - `expiry_ts_utc` string, date-time, nullable — Expiry timestamp in UTC(ISO 8601). Required for GTD orders. i.e '2023-11-07T05:31:56Z'
  - `conditional_orders_params` ConditionalOrderCreate[], nullable — Optional list of conditional orders (TP/SL) to attach to this order.
    - `conditional_order_type` 'TP' | 'SL' | 'STOP' | 'REVERSE_STOP', required — Type of conditional order: TP (take profit), SL (stop loss), or STOP
    - `stop_order_price` number, nullable — Activation price for STOP conditional orders. This is the price at which the conditional order triggers and places the trigger_order.
    - `trigger_order` TriggerOrder, required — The order that will be sent to the exchange when the conditional order's condition is met. For TP/SL: the parent order fills → the conditional activates → this trigger order is placed. For STOP/REVERSE_STOP: the stop_order_price is reached → this trigger order is placed.
      - `order_type` 'LIMIT' | 'MARKET' | 'RFQ_TAKER', required — Order type for the triggered order: 'LIMIT' or 'MARKET'
      - `qty` number, required — Quantity (number of contracts) for the triggered order
      - `price` number, nullable — Limit price for the triggered order (between 0 and 1). Required when order_type is LIMIT.
      - `buy_flag` boolean, required — Direction of the triggered order: true=buy, false=sell
      - `stop_order_price` number, nullable — Price at which the triggered order activates as a stop or reverse stop. Required for SL (stop trigger) and TP MARKET (reverse stop trigger). For SL: triggers when price moves against you. For TP MARKET: triggers when price moves in your favor.
    - `parent_river_order_id` string, uuid, nullable — Parent order ID (required for TP and SL)
    - `parent_complex_order_id` string, uuid, nullable — Parent complex order ID (for chaining)

## Response `202`

Successful Response

- OrderCreateResponse — Schema for order create response.
  - `river_order_id` string, uuid, required — Unique order identifier
  - `complex_orders` object, required — List of complex river orders id

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/rivermarkets/apis/river-finance-api.md) · [All operations](https://skmtc.net/rivermarkets/apis/river-finance-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/rivermarkets/river-finance-api/revisions/c90d562d4ad1/schema)
