Place Order

View as Markdown
### Place an order. **Available to:** All authenticated users **Environments:** Demo, Live **[Rate Limit](/api/authentication#request-rate-limits-and-time-penalties):** 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`. ```js // Demo environment; for Live use https://live.tradovateapi.com/v1 const URL = 'https://demo.tradovateapi.com/v1' const body = { accountSpec: yourUserName, accountId: yourAccountId, action: "Buy", symbol: "MYMM1", orderQty: 1, orderType: "Market", isAutomated: true } const result = await fetch(`${URL}/order/placeorder`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${myAccessToken}` }, body: JSON.stringify(body) }).then(res => res.json()) // { orderId } on success ``` <Warning> 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. </Warning> 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, `MaxPosLimitReached` or `MaxOrderQtyLimitReached`). - 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** | `failureReason` | Trigger | |-----------------|---------| | `MaxPosLimitReached` | The order would exceed the account's position limit. | | `MaxOrderQtyLimitReached` | The order quantity exceeds the account's maximum order size. | | `InvalidContract` | The `symbol` doesn't resolve to a tradable contract. | | `InvalidPrice` | The price is missing or invalid for the order type. | | `SessionClosed` | The trading session is closed. | | `Unauthorized` | The user isn't permitted to trade this account or contract. | See the `failureReason` enum in the response schema for the complete list of values.

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Request

This endpoint expects an object.
actionenumRequired
Buy, Sell
symbolstringRequired<=64 characters
orderQtyintegerRequired
orderTypeenumRequired
Limit, LimitIfTouched, MIT, Market, MarketLimit, MarketStopWithProtection, MarketWithProtection, QTS, Stop, StopLimit, TrailingStop, TrailingStopLimit
accountSpecstringOptional<=64 characters
accountIdlongOptional
clOrdIdstringOptional<=64 characters
pricedoubleOptional
stopPricedoubleOptional
limitIfTouchedPricedoubleOptional
maxShowintegerOptional
pegDifferencedoubleOptional
timeInForceenumOptional
Day, FOK, GTC, GTD, IOC
expireTimedatetimeOptional
textstringOptional<=64 characters
activationTimedatetimeOptional
customTag50stringOptional<=64 characters
isAutomatedbooleanOptional

Response

PlaceOrderResult
failureReasonenum
AccountClosed, AdvancedTrailingStopUnsupported, AnotherCommandPending, BackMonthProhibited, ExecutionProviderNotConfigured, ExecutionProviderUnavailable, InvalidContract, InvalidPrice, KeyInformationDocumentRequired, LiquidationOnly, LiquidationOnlyBeforeExpiration, MaxOrderQtyIsNotSpecified, MaxOrderQtyLimitReached, MaxPosLimitMisconfigured, MaxPosLimitReached, MaxTotalPosLimitReached, MultipleAccountPlanRequired, NoQuote, NotEnoughLiquidity, OtherExecutionRelated, ParentRejected, RiskCheckTimeout, SSFNFAComplianceRequired, SSFNFAComplianceRequiredJointOnly, SSFRiskDisclosureAcknowledgmentRequired, SessionClosed, Success, TooLate, TradingLocked, TrailingStopNonOrderQtyModify, Unauthorized, UnknownReason, Unsupported
failureTextstring<=8192 characters
orderIdlong