Dry Run

### Validate an order without placing it. **Available to:** All authenticated users **Environments:** Demo, Live **[Rate Limit](/overview/core-concepts/rate-limits):** 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

Authentication

AuthorizationBearer

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

Request

This endpoint expects an object.
accountIdlongRequired
orderslist of objectsRequired
extraPreTradeRiskobjectOptional

Response

DryRunResponse
errorTextstring<=8192 characters

Non-empty if the request failed

rejectReasonenum
AccountClosed, AdvancedTrailingStopUnsupported, AnotherCommandPending, BackMonthProhibited, ExecutionProviderNotConfigured, ExecutionProviderUnavailable, InvalidContract, InvalidPrice, KeyInformationDocumentRequired, LiquidationOnly, LiquidationOnlyBeforeExpiration, MaxOrderQtyIsNotSpecified, MaxOrderQtyLimitReached, MaxPosLimitMisconfigured, MaxPosLimitReached, MaxTotalPosLimitReached, MultipleAccountPlanRequired, NoQuote, NotEnoughLiquidity, OtherExecutionRelated, ParentRejected, RiskCheckTimeout, SSFRiskDisclosureAcknowledgmentRequired, SessionClosed, Success, TooLate, TradingLocked, TrailingStopNonOrderQtyModify, Unauthorized, UnknownReason, Unsupported
commentstring<=8192 characters
detailsobject
feesobject