Orders

Dry Run

Validate an order without placing it.

Available to: All authenticated users

Environments: Demo, Live

Rate Limit: 500 requests per hour, 1-second back-off, counts all requests

Submit one or more orders (up to four) for validation against the account's pre-trade risk settings without actually placing them. The response includes a rejectReason if the batch would be rejected, so you can surface issues to the trader before they submit a real order.

Use this to check whether an order would pass margin requirements, position limits, and other risk checks before committing to a live trade.

The optional extraPreTradeRisk field lets you apply additional risk constraints beyond the account's default settings during validation.

Common Failure Scenarios

  • The account does not exist (returns HTTP 404)
  • The caller doesn't have access to the account (returns HTTP 401)
  • The request contains more than four orders
  • Invalid contractId in one or more orders
post/order/dryrun

Request

  • Base URL: https://demo.tradovateapi.com/v1
  • URL: https://demo.tradovateapi.com/v1/order/dryrun
  • Auth: HTTP bearer

Request body

accountIdinteger required

Response

DryRunResponse

errorTextstring

Non-empty if the request failed

rejectReason'AccountClosed' | 'AdvancedTrailingStopUnsupported' | 'AnotherCommandPending' | 'BackMonthProhibited' | 'ExecutionProviderNotConfigured' | 'ExecutionProviderUnavailable' | 'HomeStateRestricted' | 'InvalidContract' | 'InvalidPrice' | 'KeyInformationDocumentRequired' | 'LiquidationOnly' | 'LiquidationOnlyBeforeExpiration' | 'MaxOrderQtyIsNotSpecified' | 'MaxOrderQtyLimitReached' | 'MaxPosLimitMisconfigured' | 'MaxPosLimitReached' | 'MaxTotalPosLimitReached' | 'MinTradeDurationNotElapsed' | 'MultipleAccountPlanRequired' | 'NoQuote' | 'NotEnoughLiquidity' | 'OtherExecutionRelated' | 'ParentRejected' | 'RiskCheckTimeout' | 'SSFNFAComplianceRequired' | 'SSFNFAComplianceRequiredJointOnly' | 'SSFRiskDisclosureAcknowledgmentRequired' | 'SessionClosed' | 'Success' | 'TooLate' | 'TradingLocked' | 'TrailingStopNonOrderQtyModify' | 'Unauthorized' | 'UnknownReason' | 'Unsupported'

AccountClosed, AdvancedTrailingStopUnsupported, AnotherCommandPending, BackMonthProhibited, ExecutionProviderNotConfigured, ExecutionProviderUnavailable, HomeStateRestricted, InvalidContract, InvalidPrice, KeyInformationDocumentRequired, LiquidationOnly, LiquidationOnlyBeforeExpiration, MaxOrderQtyIsNotSpecified, MaxOrderQtyLimitReached, MaxPosLimitMisconfigured, MaxPosLimitReached, MaxTotalPosLimitReached, MinTradeDurationNotElapsed, MultipleAccountPlanRequired, NoQuote, NotEnoughLiquidity, OtherExecutionRelated, ParentRejected, RiskCheckTimeout, SSFNFAComplianceRequired, SSFNFAComplianceRequiredJointOnly, SSFRiskDisclosureAcknowledgmentRequired, SessionClosed, Success, TooLate, TradingLocked, TrailingStopNonOrderQtyModify, Unauthorized, UnknownReason, Unsupported

commentstring

Changes

No recorded changes to this operation across all 1 revision of this API.