Skip to content

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.

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

Required Headers

Authorization: Bearer <session_token>
x-device-id: <device_id>
x-app-version: 0.4.5
x-device-os: sdk
Cookie: deviceId=<device_id>
Content-Type: application/json

All examples on this page assume the request is being sent to the UAT V3 REST flow with the headers above. Keep field names in camel case exactly as shown, such as refId, deliveryType, validityType, entryPrice, and isMultiLeg.

Basic Usage

curl --location 'https://uatapi.nubra.io/sentinel/orders/create' \
--header 'Authorization: Bearer {{session_token}}' \
--header 'x-device-id: {{x_device_id}}' \
--header 'x-app-version: 0.4.5' \
--header 'x-device-os: sdk' \
--header 'Cookie: deviceId={{x_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.

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",
      "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": 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",
      "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",
      "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 tags for grouping and traceability

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 gtt bucket in GET sentinel/orders
  • the returned order object may normalize executionMode
  • goodTillDate may need to be confirmed through GET sentinel/orders instead of relying only on the create-response echo
  • icebergInfo may not be echoed back identically for every iceberg variant
  • for target exits, keep targetProfitTriggerPrice greater than or equal to targetProfitLimitPrice

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
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": 9946,
      "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": ["rest-api-v3", "basic-usage"],
      "ltp": 133360,
      "orderPrice": 127000,
      "timestamps": {
        "intentCreatedAt": "2026-06-15T08:27:31.191134998Z",
        "sentToColoAt": "2026-06-15T08:27:31.19804133Z"
      },
      "intentOrderType": "REGULAR",
      "side": "BUY"
    }
  ]
}

Important Rules

  • MARKET orders were accepted in validation when entryPrice was omitted and validityType was set to IOC.
  • Future-dated GTE orders should use deliveryType: "CNC". An intraday GTE order 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 normalized exitConfig array.
  • Use hyphenated or plain tags in stratTags. Avoid underscores in tag names such as abc_def; prefer names such as abc-def.
NEO Assistant