Place Single Order¶
Use this page for one Trading API V3 single-instrument order through the REST API.
Trading API V3 uses the intent-order payload model. Even for one order, the request body is still sent inside an orders array with exactly one item.
Nubra Trading API V3 supports the same main single-order families documented in the Python SDK V3 track. In REST, the same workflows are expressed directly through the payload shape, including market, limit, AMO-style, trigger, iceberg, timed, and good-till patterns.
stratTags
A single-order payload can pass exactly one tag inside stratTags. Use hyphen-separated tag names only, such as rest-api-v3-basic-usage. Do not use underscores, spaces, colons, plus signs, timestamps, or other special characters.
Scope
Use this page only for one independent single-instrument order.
A single order:
- sets
refId - sets
qty - sets
side - sets
deliveryType - sets
isMultiLeg: false - does not send
legs
For several independent orders in one request, use Place Multi Order. For one strategy order made from legs, use Place Strategy Order.
Endpoint¶
Method: POST
Endpoint: sentinel/orders/create
Base URLs¶
| Environment | Base URL |
|---|---|
| PROD | https://api.nubra.io |
| UAT | https://uatapi.nubra.io |
Headers¶
Authorization: Bearer <session_token>
x-device-id: <device_id>
Content-Type: application/json
All examples on this page use the REST header style above. Send requests to the PROD or UAT base URL that matches where the account has been mapped to OMS V3. Keep field names in camel case exactly as shown, such as refId, deliveryType, validityType, entryPrice, and isMultiLeg.
Basic Usage¶
curl --location 'https://api.nubra.io/sentinel/orders/create' \
--header 'Authorization: Bearer <session_token>' \
--header 'x-device-id: <device_id>' \
--header 'Content-Type: application/json' \
--data '{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY",
"entryPrice": 127000,
"stratTags": ["rest-api-v3-basic-usage"]
}
]
}'
Successful create requests return HTTP 201 Created on this REST V3 flow.
The placement response returns a normalized Trading API V3 order object inside orders[]. This response includes the generated intentOrderId, resolved refData, any supplied stratTags, and the first available lifecycle timestamps.
For stratTags, pass exactly one tag inside the list. Use hyphen-separated tag names only, such as rest-api-v3-basic-usage. Do not use underscores, spaces, colons, plus signs, timestamps, or other special characters.
Example Order Patterns¶
- market order
- limit order
- AMO order
- trigger or stoploss order (price based entry or exit)
- iceberg order
- good-till order
- timed entry or exit order (time based entry or exit)
Use the tabs below as the main single-order families. The detailed sections later on this page expand the same payload families further.
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "MARKET",
"validityType": "IOC",
"isMultiLeg": false,
"executionMode": "ENTRY_AND_EXIT",
"stratTags": ["rest-api-v3-single-market"]
}
]
}
Use this pattern when the order should execute as a market order. In the current REST flow, MARKET orders should use validityType: "IOC" and should not send entryPrice.
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY",
"entryPrice": 127000,
"stratTags": ["rest-api-v3-single-limit"]
}
]
}
Use this pattern for a standard single-instrument limit order.
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY",
"entryPrice": 120000,
"stratTags": ["momentum-breakout"]
}
]
}
Use this pattern when the order should later be grouped or retrieved through client-defined strategy labels. These tags are returned in the create response and can also be used with Get Orders query filters.
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY",
"entryPrice": 127000,
"stratTags": ["rest-api-v3-amo-limit"]
}
]
}
Use this pattern for a standard limit order placed after market hours. Trading API V3 does not require a separate AMO payload field.
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY_AND_EXIT",
"entryPrice": 127000,
"entryConfig": {
"triggers": {
"ltp": {
"atOrAbove": { "value": 127000 }
}
}
},
"exitConfig": {
"stoplossParams": {
"stoplossTriggerPrice": { "value": 126500 },
"stoplossLimitPrice": { "value": 126400 }
}
},
"stratTags": ["rest-api-v3-trigger-stoploss"]
}
]
}
Use this family when the entry is trigger-based, when the order carries a stoploss exit, or when both are required.
{
"orders": [
{
"refId": 72329,
"qty": 1000,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY",
"entryPrice": 127000,
"icebergInfo": {
"maxQtyPerLeg": 100
},
"stratTags": ["rest-api-v3-iceberg"]
}
]
}
Use this family when the order quantity should be sliced using icebergInfo.
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "CNC",
"priceType": "LIMIT",
"validityType": "GTE",
"isMultiLeg": false,
"executionMode": "ENTRY",
"goodTillDate": "2026-10-31T15:10:00Z",
"entryPrice": 127000,
"stratTags": ["rest-api-v3-gte"]
}
]
}
Use this pattern for future-dated good-till orders. For this validated flow, future-dated GTE should be paired with deliveryType: "CNC".
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY_AND_EXIT",
"entryPrice": 127000,
"entryConfig": {
"entryTime": "2026-06-17T09:20:00Z"
},
"exitConfig": {
"exitTime": "2026-06-17T09:25:00Z"
},
"stratTags": ["rest-api-v3-timed-entry-exit"]
}
]
}
Use this family when the order should become active at a scheduled time, exit at a scheduled time, or both.
Replace the sample entryTime and exitTime values before running the payload. They are illustrative placeholders and should be updated to valid times for your current trading session.
Iceberg Orders¶
Use icebergInfo when a larger order should be split into smaller visible slices. Choose either maxQtyPerLeg or numberOfLegs; do not send both in the same order.
{
"orders": [
{
"refId": 72329,
"qty": 1000,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY",
"entryPrice": 127000,
"icebergInfo": {
"maxQtyPerLeg": 100
}
}
]
}
Use this pattern when you want each visible iceberg slice to be capped at a fixed quantity.
{
"orders": [
{
"refId": 72329,
"qty": 1000,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY",
"entryPrice": 127000,
"icebergInfo": {
"numberOfLegs": 10
}
}
]
}
Use this pattern when you want Trading API V3 to split the total quantity across a fixed number of iceberg slices.
Trigger Order Patterns¶
- trailing stop-loss exit
- trigger entry above the current price
- trigger entry below the current price
- trigger entry with stop-loss exit
- target-only exit
- stop-loss and target exit
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY_AND_EXIT",
"entryPrice": 127000,
"exitConfig": {
"stoplossParams": {
"stoplossTriggerPrice": { "value": 126500 },
"stoplossLimitPrice": { "value": 126400 },
"stoplossTrailJump": 5
}
}
}
]
}
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY",
"entryPrice": 127000,
"entryConfig": {
"triggers": {
"ltp": {
"atOrAbove": { "value": 127000 }
}
}
}
}
]
}
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY",
"entryPrice": 127000,
"entryConfig": {
"triggers": {
"ltp": {
"atOrBelow": { "value": 126900 }
}
}
}
}
]
}
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY_AND_EXIT",
"entryPrice": 127000,
"entryConfig": {
"triggers": {
"ltp": {
"atOrAbove": { "value": 127000 }
}
}
},
"exitConfig": {
"stoplossParams": {
"stoplossTriggerPrice": { "value": 126500 },
"stoplossLimitPrice": { "value": 126400 }
}
}
}
]
}
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY_AND_EXIT",
"entryPrice": 127000,
"exitConfig": {
"targetParams": {
"targetProfitTriggerPrice": { "value": 127500 },
"targetProfitLimitPrice": { "value": 127400 }
}
}
}
]
}
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY_AND_EXIT",
"entryPrice": 127000,
"exitConfig": {
"stoplossParams": {
"stoplossTriggerPrice": { "value": 126500 },
"stoplossLimitPrice": { "value": 126400 }
},
"targetParams": {
"targetProfitTriggerPrice": { "value": 127500 },
"targetProfitLimitPrice": { "value": 127400 }
}
}
}
]
}
Timed Entry / Exit Patterns¶
- timed entry
- timed exit
- timed entry with timed exit
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY",
"entryPrice": 127000,
"entryConfig": {
"entryTime": "2026-06-17T09:20:00Z"
}
}
]
}
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY_AND_EXIT",
"entryPrice": 127000,
"exitConfig": {
"exitTime": "2026-06-17T09:25:00Z"
}
}
]
}
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"isMultiLeg": false,
"executionMode": "ENTRY_AND_EXIT",
"entryPrice": 127000,
"entryConfig": {
"entryTime": "2026-06-17T09:20:00Z"
},
"exitConfig": {
"exitTime": "2026-06-17T09:25:00Z"
}
}
]
}
GTE Patterns¶
Use validityType: "GTE" for good-till orders.
- good-till limit order
- good-till order with price-based entry trigger
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "CNC",
"priceType": "LIMIT",
"validityType": "GTE",
"isMultiLeg": false,
"executionMode": "ENTRY",
"goodTillDate": "2026-10-31T15:10:00Z",
"entryPrice": 127000
}
]
}
{
"orders": [
{
"refId": 72329,
"qty": 1,
"side": "BUY",
"deliveryType": "CNC",
"priceType": "LIMIT",
"validityType": "GTE",
"isMultiLeg": false,
"executionMode": "ENTRY",
"goodTillDate": "2026-10-31T15:10:00Z",
"entryPrice": 127000,
"entryConfig": {
"triggers": {
"ltp": {
"atOrAbove": { "value": 127000 }
}
}
}
}
]
}
Execution Modes¶
| Value | Use |
|---|---|
ENTRY |
Entry-only order without managed exit controls |
ENTRY_AND_EXIT |
Entry order with target, stop-loss, trailing stop-loss, timed exit, or a combination of these |
EXIT |
Exit-only modification or exit-only workflow where the order is meant to manage the exit leg or exit controls |
Single Order Fields¶
| Field | Type | Required | Description |
|---|---|---|---|
orders |
array | Yes | Wrapper array. For this page, send exactly one order item |
orders[].refId |
int | Yes | Instrument reference id |
orders[].qty |
int | Yes | Order quantity |
orders[].side |
enum | Yes | BUY or SELL |
orders[].deliveryType |
enum | Yes | IDAY or CNC |
orders[].priceType |
enum | Yes | LIMIT or MARKET |
orders[].validityType |
enum | Yes | DAY, IOC, or GTE depending on the order family |
orders[].isMultiLeg |
boolean | Yes | Must be false for independent single orders |
orders[].executionMode |
enum | Yes | ENTRY or ENTRY_AND_EXIT depending on the payload |
orders[].entryPrice |
int | Conditional | Required for LIMIT orders. Omit for MARKET orders |
orders[].goodTillDate |
string | Conditional | Required for GTE orders |
orders[].entryConfig |
object | Conditional | Entry trigger or entry-time configuration |
orders[].exitConfig |
object | Conditional | Stoploss, target, exit-time, or other exit controls |
orders[].icebergInfo |
object | Conditional | Iceberg slicing configuration |
orders[].stratTags |
array | Optional | Client-defined strategy tag for grouping and traceability. Pass exactly one tag inside the list. Tag names must use hyphen-separated text only, such as abc-def. Do not use underscores, spaces, colons, plus signs, timestamps, or other special characters |
Order Condition Fields¶
| Field | Type | Description |
|---|---|---|
entryConfig.triggers.ltp.atOrAbove.value |
int | Entry trigger above a price |
entryConfig.triggers.ltp.atOrBelow.value |
int | Entry trigger below a price |
entryConfig.entryTime |
string | Scheduled entry time in ISO format |
exitConfig.exitTime |
string | Scheduled exit time in ISO format |
exitConfig.stoplossParams.stoplossTriggerPrice.value |
int | Stop-loss trigger price |
exitConfig.stoplossParams.stoplossLimitPrice.value |
int | Stop-loss limit price |
exitConfig.stoplossParams.stoplossTrailJump |
int | Trailing stop-loss jump |
exitConfig.targetParams.targetProfitTriggerPrice.value |
int | Target trigger price |
exitConfig.targetParams.targetProfitLimitPrice.value |
int | Target limit price |
Response Behaviour Notes¶
- successful create requests return HTTP
201 Created - good-till orders are returned under the
gttbucket inGET sentinel/orders - the returned order object may normalize
executionMode goodTillDatemay need to be confirmed throughGET sentinel/ordersinstead of relying only on the create-response echoicebergInfomay not be echoed back identically for every iceberg variant- for target exits, keep
targetProfitTriggerPricegreater than or equal totargetProfitLimitPrice
Order Response Fields¶
| Field | Meaning |
|---|---|
intentOrderId |
Trading API V3 order id used for modify, cancel, and tracking |
status |
Current order state such as OPEN, CANCELLED, or GTE |
intentOrderType |
Normalized response family such as REGULAR, TRIGGER, or FLEXI |
orderQty |
Final order quantity accepted for the item |
orderPrice |
Final normalized entry price |
ltp |
Market price snapshot attached to the response |
stratTags |
Client-defined strategy tag echoed back for downstream grouping and retrieval. Tag values use hyphen-separated text only. |
refData |
Instrument metadata returned alongside the order |
timestamps |
Lifecycle timestamps such as create and send-to-exchange times |
Response Shape¶
{
"message": "order creation request pushed successfully",
"orders": [
{
"intentOrderId": 11303,
"exchange": "NSE",
"status": "OPEN",
"isMulti": false,
"legs": null,
"refId": 72329,
"refData": {
"refId": 72329,
"exchange": "NSE",
"asset": "ICICIBANK",
"stockName": "ICICIBANK",
"displayName": "ICICIBANK",
"lotSize": 1,
"tickSize": 10
},
"filledQty": 0,
"orderQty": 1,
"deliveryType": "IDAY",
"priceType": "LIMIT",
"validityType": "DAY",
"executionMode": "ENTRY",
"stratTags": ["momentum-breakout"],
"ltp": 136010,
"orderPrice": 120000,
"timestamps": {
"intentCreatedAt": "2026-06-22T05:00:45.054721358Z",
"sentToColoAt": "2026-06-22T05:00:45.060222428Z"
},
"intentOrderType": "REGULAR",
"side": "BUY"
}
]
}
Important Rules¶
MARKETorders were accepted in validation whenentryPricewas omitted andvalidityTypewas set toIOC.- Future-dated
GTEorders should usedeliveryType: "CNC". An intradayGTEorder was rejected with the message:Intraday orders cannot have an expiry beyond today. Use Delivery (CNC) instead. - Trigger-based and timed payloads are normalized in the response model. For example, a trigger plus stoploss request may come back with
intentOrderType: "TRIGGER"and a normalizedexitConfigarray. - Pass only one tag inside
stratTags, for example["abc-def"]. - Use hyphen-separated tag names only, for example
abc-def. Do not use underscores, spaces, colons, plus signs, timestamps, or other special characters.