> For the complete documentation index, see [llms.txt](https://docs.openalgo.in/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.openalgo.in/api-documentation/v1/orders-api/splitorder.md).

# SplitOrder

Split a large order into multiple smaller orders to reduce market impact or comply with freeze quantity limits.

## Endpoint URL

```http
Local Host   :  POST http://127.0.0.1:5000/api/v1/splitorder
Ngrok Domain :  POST https://<your-ngrok-domain>.ngrok-free.app/api/v1/splitorder
Custom Domain:  POST https://<your-custom-domain>/api/v1/splitorder
```

## Sample API Request

```json
{
  "apikey": "<your_app_apikey>",
  "strategy": "Python",
  "symbol": "YESBANK",
  "exchange": "NSE",
  "action": "SELL",
  "quantity": "105",
  "splitsize": "20",
  "pricetype": "MARKET",
  "product": "MIS"
}
```

## Sample cURL Request

```bash
curl -X POST http://127.0.0.1:5000/api/v1/splitorder \
  -H 'Content-Type: application/json' \
  -d '{
  "apikey": "<your_app_apikey>",
  "strategy": "Python",
  "symbol": "YESBANK",
  "exchange": "NSE",
  "action": "SELL",
  "quantity": "105",
  "splitsize": "20",
  "pricetype": "MARKET",
  "product": "MIS"
}'
```

## Sample API Response

```json
{
  "status": "success",
  "split_size": 20,
  "total_quantity": 105,
  "results": [
    {
      "order_num": 1,
      "orderid": "250408001021467",
      "quantity": 20,
      "status": "success"
    },
    {
      "order_num": 2,
      "orderid": "250408001021459",
      "quantity": 20,
      "status": "success"
    },
    {
      "order_num": 3,
      "orderid": "250408001021466",
      "quantity": 20,
      "status": "success"
    },
    {
      "order_num": 4,
      "orderid": "250408001021470",
      "quantity": 20,
      "status": "success"
    },
    {
      "order_num": 5,
      "orderid": "250408001021471",
      "quantity": 20,
      "status": "success"
    },
    {
      "order_num": 6,
      "orderid": "250408001021472",
      "quantity": 5,
      "status": "success"
    }
  ]
}
```

## Request Body

| Parameter      | Description                                               | Mandatory/Optional | Default Value |
| -------------- | --------------------------------------------------------- | ------------------ | ------------- |
| apikey         | Your OpenAlgo API key                                     | Mandatory          | -             |
| strategy       | Strategy identifier                                       | Mandatory          | -             |
| symbol         | Trading symbol                                            | Mandatory          | -             |
| exchange       | Exchange code accepted by the shared validation constants | Mandatory          | -             |
| action         | Order action: BUY or SELL                                 | Mandatory          | -             |
| quantity       | Positive numeric quantity to split                        | Mandatory          | -             |
| splitsize      | Size of each split order                                  | Mandatory          | -             |
| pricetype      | Price type: MARKET, LIMIT, SL, SL-M                       | Optional           | MARKET        |
| product        | Product type: MIS, CNC, NRML                              | Optional           | MIS           |
| price          | Order price (for LIMIT orders)                            | Optional           | 0             |
| trigger\_price | Trigger price (for SL orders)                             | Optional           | 0             |

## Response Fields

| Field           | Type   | Description                       |
| --------------- | ------ | --------------------------------- |
| status          | string | "success" or "error"              |
| split\_size     | number | Size used for splitting           |
| total\_quantity | number | Total quantity processed          |
| results         | array  | Array of individual order results |

### Results Array Fields

| Field      | Type   | Description                        |
| ---------- | ------ | ---------------------------------- |
| order\_num | number | Order sequence number (1, 2, 3...) |
| orderid    | string | Order ID from broker               |
| quantity   | number | Quantity for this order            |
| status     | string | "success" or "error"               |
| message    | string | Error message (on failure)         |

## How Split Orders Work

For a total quantity of 105 with splitsize of 20:

```
Order 1: 20 units
Order 2: 20 units
Order 3: 20 units
Order 4: 20 units
Order 5: 20 units
Order 6: 5 units (remainder)
-----------------
Total: 105 units
```

## Notes

* **Maximum 100 orders** per split request
* The last order contains the **remainder** (quantity % splitsize)
* Live child orders are placed sequentially using a delay derived from `ORDER_RATE_LIMIT`; analyzer mode prefetches one quote and uses the sandbox path.
* Fractional total quantities are accepted only for `CRYPTO`; non-crypto total quantities must be whole numbers. `splitsize` is always a positive integer.
* Use for:
  * **Large F\&O orders**: Splitting to stay within freeze quantity limits
  * **Reducing market impact**: Spreading execution over multiple orders
  * **TWAP strategies**: Time-weighted average price execution
* If splitsize is larger than quantity, a single order is placed
* All split orders share the same price type and price

Freeze quantities change and are loaded from `data/qtyfreeze.csv`; do not hard-code the example values from older releases.

***

**Back to**: [API Documentation](/api-documentation/v1.md)
