v2

latestOpenAPI 3.1.0Proprietary2026-08-054985119.4 KB
orders

Create Order

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 and 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.

post/v1/orders

Request body

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'

qtynumber required

Order quantity (number of contracts)

pricenumber nullable

Limit price between 0 and 1. Required for LIMIT orders.

buy_flagboolean required

Order direction: true=buy, false=sell

post_onlyboolean

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_pauseboolean

Kalshi only: if true, the resting order is cancelled by the exchange when it enters a trading pause. Ignored on other venues.

river_idinteger nullable

Instrument ID. Mutually exclusive with generic_asset_id.

generic_asset_idstring uuid nullable

Generic asset basket UUID. Mutually exclusive with river_id.

subaccount_idstring uuid required

Subaccount to place the order under

expiry_ts_utcstring date-time nullable

Expiry timestamp in UTC(ISO 8601). Required for GTD orders. i.e '2023-11-07T05:31:56Z'

Response

Successful Response

river_order_idstring uuid required

Unique order identifier

complex_ordersobject required

List of complex river orders id