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

# Create Order Batch

`POST /v1/orders/batch`

Place up to 10 orders in one request.

All orders must share one `subaccount_id`. Items are validated
independently: an invalid item is rejected in its per-index result while
valid items proceed, so the response is `202 Accepted` even when some (or
all) items fail validation. Generic asset orders are not supported in
batches. Accepted orders are queued for execution exactly like
`POST /v1/orders`; track fills and rejections via `GET /v1/orders/{order_id}`
or the orders websocket.

## Request body

- OrderBatchCreate — Schema for creating a batch of orders in one request.
  - `orders` OrderCreate[], required — Orders to place, all for the same subaccount. At most 10 per request.
    - `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

- OrderBatchCreateResponse — Schema for batch order create response.
  - `results` OrderBatchItemResult[], required — One result per requested order, in request order
    - `index` integer, required — Index of the order in the request list
    - `river_order_id` string, uuid, nullable — Assigned order id when the item was accepted
    - `complex_orders` object, nullable — TP/SL complex order ids when the item was accepted
    - `error` OrderBatchItemError — Rejection detail for one item of a batch.
      - `code` string, required — Machine-readable error code
      - `message` string, required — Human-readable rejection reason

## 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)
