Place Order
Place an order.
Available to: All authenticated users
Environments: Demo, Live
Rate Limit: 1,500 requests per hour, 1-second back-off, counts all requests
Places an order on one of your accounts. Identify the account with either accountSpec (the account name) or accountId (the integer ID) — one is required — and set the action (Buy or Sell), the symbol, the orderQty, and the orderType. The price fields you must supply depend on the order type: a Limit or Stop order needs a price, and a StopLimit needs both price and stopPrice. On success, the response includes the new orderId.
Set isAutomated to true for any order placed by code or an automated process, and false only for an order a human places directly. Misreporting this can violate exchange policies.
Order placement is subject to market, exchange, and risk-management rules, so a successful HTTP response doesn’t guarantee acceptance. When an order is rejected, the response carries a failureReason and failureText explaining why; otherwise you receive an orderId.
Common Failure Scenarios
- A risk limit blocks the order (for example,
MaxPosLimitReachedorMaxOrderQtyLimitReached). - The contract or price is invalid (
InvalidContract,InvalidPrice). - The trading session is closed or trading is locked (
SessionClosed,TradingLocked). - The market has no quote or insufficient liquidity (
NoQuote,NotEnoughLiquidity).
Error Messages
See the failureReason enum in the response schema for the complete list of values.
Authentication
Bearer authentication of the form Bearer <token>, where token is your auth token.
Request
Operator ID for the order. Send it only if NinjaTrader configured an allow-list of operator IDs for your user. In that case it’s required on every order and must exactly match one approved value. If no allow-list is configured, omit it: a supplied value is denied. Organizations using passthrough also omit it, and NinjaTrader fills it in. Up to 64 characters. See Operator ID (customTag50) and Passthrough.