# Place Order

## POST /api/oms/place-order

Place Order

to place the order

### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| Authorization | header | string | Yes | Access token in the following format:  Bearer <api_key>:<access_token>  Both values are required. The `api_key` is your app credential from the Apps Section. The `access_token` is obtained from the authentication endpoint and is valid for 24 hours. |

### Request Body (application/x-www-form-urlencoded)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| symId | string | Yes | Unique identifier of the symbol |
| qty | number | Yes | No of shares to buy or sell. For derivatives, pass the quantity by multiplying with lot size. Example: To buy 1 lot of NIFTY option, pass the quantity as 50. |
| side | string ("buy" | "sell") | Yes | Order side 'buy' or 'sell' |
| type | string ("limit" | "market" | "stoplimit" | "stopmarket") | Yes | Price type of an order |
| product | string ("delivery" | "intraday" | "normal") | Yes | Product type of an order. 'delivery' is applicable for equities. 'normal' is applicable for derivatives. 'intraday' is applicable for both equity and derivatives |
| limitPrice | number | No | This is required only for limit and stop limit orders |
| trigPrice | number | No | This is required only for stoploss limit and stoploss market orders |
| validity | string ("day" | "ioc" | "eos" | "gtc") | Yes | Validity of an order, EOS is applicable for BSE scrips only |
| discQty | number | No | Disclosed quantity of an order |
| amo | boolean | No | Pass this field as true to place an amo order. |
| mktProt | number | No | Market order protection percentage. Applicable only for market orders |
| remarks | string | No | Any tag or message to track in orderbook.Allowed length upto 10 Characters. Please note remarks more than 10 characters will be stripped out. |

### Responses

#### 200 — OK

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| s | string ("ok" | "no-data" | "error") | No |  |
| d | object | No |  |
| d.msg | string | No |  |
| d.orderId | string | No |  |
| msg | string | No |  |

#### 400 — Bad Request

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| s | string ("error") | No | Response status. Always `error` for error responses. |
| msg | string ("Internal Error occurred. Kindly try again." | "Input validation failed. Kindly check your input contains required fields for the request") | No | Error message describing which field failed validation or why the request was rejected. |

#### 401 — Unauthorized — one of: (1) invalid or expired access token — tokens expire after 24 hours, re-authenticate to get a new one; (2) `Authorization` header missing or malformed — use format `Bearer <api_key>:<access_token>`.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| s | string ("error") | No | Response status. Always `error` for error responses. |
| msg | string ("Unauthorized") | No | Error message. |

#### 429 — Too Many Requests — place order rate limit exceeded (10 req/sec per auth token).

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| s | string ("error") | No | Response status. Always `error` for error responses. |
| msg | string | No | Error message indicating the rate limit was exceeded. |

#### 500 — Internal Server Error — retry with backoff; contact support if it persists.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| s | string ("error") | No | Response status. Always `error` for error responses. |
| msg | string | No | Error message. |