---
title: "Batch Place Orders"
method: POST
path: "/api/v1/order/place-batch"
tags: ["Trade"]
---

# Batch Place Orders

`POST /api/v1/order/place-batch`

## Request

- Base URL: `https://api.ekiden.fi`
- URL: `https://api.ekiden.fi/api/v1/order/place-batch`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/ekidenfi/apis/ekiden-gateway/docs/api/v1/order/place-batch/post.ts> (a function with typed inputs; its response is checked against the schema)

Create multiple new orders in a single request

## Request body

- BatchPlaceOrdersRequest: Batch place order request. TODO: Maximum 20 orders per request TODO: Rate limiting (10 reqs per sec, 20 * 10 = 200 orders in one sec)
  - `await_outcome` boolean: If true, gateway waits up to a server-defined timeout (currently 3s) for final engine outcomes and maps them into `exit_info`. If false (default), `exit_info` reports edge outcomes (validation + publish ack).
  - `request` PlaceOrderRequest[], required
    - `close_on_trigger` boolean
    - `expire_time` string, date-time, nullable
    - `margin_mode` 'Cross' | 'Isolated', required
    - `order_link_id` string
    - `order_type` 'Limit' | 'Market', required: Order type: Limit, Market.
    - `post_only` boolean
    - `price` string, required
    - `qty` string, required
    - `reduce_only` boolean
    - `side` 'Sell' | 'Buy', required: Order side: buy or sell.
    - `slippage_tolerance` union
      - object
        - `tick_size` integer, required
      - object
        - `percent` number, double, required
    - `smp_group` integer, nullable: Self-match prevention group id. Orders with the same `(user_id, smp_group)` are eligible for SMP checks.
    - `smp_type` 'CancelMaker' | 'CancelTaker' | 'CancelBoth': Self Match Prevention strategy.
    - `sub_account_address` string, required
    - `symbol` string, required
    - `time_in_force` union, required: Time in Force instructions.
      - 'GTC': Good Till Cancel
      - 'IOC': Immediate or Cancel
      - 'FOK': Fill or Kill
      - object: Good Till Date
        - `GTD` integer, required: Good Till Date
      - 'Day': Good For Day
    - `tpsl` TpSl
      - `mode` 'Full' | 'Partial', required
      - `stop_loss` union
        - object
          - `market` object, required
            - `trigger_by` 'LastPrice' | 'IndexPrice' | 'MarkPrice', required
            - `trigger_price` string, required
        - object
          - `limit` object, required
            - `limit_price` string, required
            - `trigger_by` 'LastPrice' | 'IndexPrice' | 'MarkPrice', required
            - `trigger_price` string, required
      - `take_profit` union
        - object
          - `market` object, required
            - `trigger_by` 'LastPrice' | 'IndexPrice' | 'MarkPrice', required
            - `trigger_price` string, required
        - object
          - `limit` object, required
            - `limit_price` string, required
            - `trigger_by` 'LastPrice' | 'IndexPrice' | 'MarkPrice', required
            - `trigger_price` string, required
    - `trigger` ConditionalOrder
      - `trigger_by` 'LastPrice' | 'IndexPrice' | 'MarkPrice', required
      - `trigger_direction` 'Up' | 'Down', required
      - `trigger_price` string, required: The price level that activates the order.

## Response `200`

Orders placed

- BatchPlaceOrdersResponse: Response of batch place orders.
  - `exit_info` ExitMessage[], required: Information about the exit status of each order in the batch.
    - union
      - object
        - `Error` object, required
          - `code` integer, required
          - `msg` string, required
      - object
        - `Success` object, required
          - `code` integer, required
          - `msg` string, required
  - `result` PlaceOrderResponse[], required
    - `order_id` string, uuid, required
    - `order_link_id` string
  - `time` string, date-time, required

## Changes

- **2026-07-14** `8af7c5b6108c`: 3 info
  - the request property `request/items/close_on_trigger` became optional
  - the request property `request/items/post_only` became optional
  - the request property `request/items/reduce_only` became optional
- **2026-05-28** `75ffe546b73a`: 1 info
  - added the new optional request property `await_outcome`
- **2026-01-29** `16fe50636aa5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/ekidenfi/apis/ekiden-gateway/changes/api/v1/order/place-batch/post.md)

---

[API](https://skmtc.dev/ekidenfi/apis/ekiden-gateway.md) - [All operations](https://skmtc.dev/ekidenfi/apis/ekiden-gateway/llms.txt) - [OpenAPI document](https://skmtc.dev/ekidenfi/apis/ekiden-gateway/revisions/fad9eecaba2e?raw)
