Inspect policy before trading
CallGET /v1/accounts/{account_id}/trading-policy using a read or trade credential.
Only owned, non-archived accounts in the credential’s live or sandbox environment
and account allowlist are visible. Other account IDs return 404.
The response’s data contains a timestamped, advisory snapshot:
The
limits object uses snake_case keys such as max_open_positions,
max_position_value_usd, max_resting_orders, min_order_notional_usd,
order_cooldown_ms, and trades_per_minute.
Trade windows count every order that fills or triggers. A reduce-only order,
such as a take profit or stop loss, is never rejected by a full trade window
when it triggers, so your exits still execute; it still counts toward the
window for your next orders.
Current plan rules replace retired account snapshots for daily loss, drawdown,
consistency, and profit target. Minimum-trading-day account overrides are retired.
Use returned values instead of copying plan numbers into your integration.
A zero percentage disables that rule. The evaluation-inactivity (30 days)
and funded-inactivity (7 days) windows are universal product rules pinned in
code; they are reported for every account except rule-less competition
products and cannot be changed by plan or account.
Market exposure caps
Competition accounts use a separate per-user allowance from other accounts. Matching competition accounts share their own cap for each market, product, and size. Both allowances use the configured cap independently, and competition orders remain subject to exposure rejection. This applies equally to API and website orders. An October Competition account on the Blitz or Whale path has its market leverage ceilings and exposure caps scaled by 4x or 0.5x. Scaled leverage rounds down and never drops below 1x. Orders above the scaled limits are rejected the same way as orders above the standard limits; see October competition. An Elite account trades NAS100 and SP500 at up to 40x, US30 at up to 25x, gold at up to 20x, and oil at up to 10x, and caps each group’s combined open notional at that multiple of its starting balance. Market listings still report each market’s standardmaxLeverage. API and website orders above an Elite limit are rejected with
invalid_leverage or max_total_notional; see
Elite Accounts.
Gold trades on XAU, which counts as gold for these Elite limits. The previous
GOLD market is retiring: it is reduce-only, so its market reports
trading_enabled: false and an order that would open, add to, or flip a
position is rejected with market_unavailable. Reduce-only orders, closes,
and Take Profit and Stop Loss exits on existing GOLD positions keep working;
see Retiring markets.
EUR/USD and USD/JPY trade on Veranta. The previous hyperliquid EUR/USD and
USD/JPY markets are retiring the same way: they report
trading_enabled: false, an order that would open, add to, or flip a position
there is rejected with market_unavailable, and reduce-only orders, closes,
and Take Profit and Stop Loss exits on existing positions keep working.
Forex and index markets on the Veranta and Ostium venues follow their venue’s
trading sessions. While a market is closed, a market order or close
is rejected with market_closed. Limit, Take Profit, and Stop Loss orders can
still be placed, edited, and canceled; they stay open and can fill at the
reopening price. See
Trading hours.
From 15 minutes before a session market’s scheduled weekend close until it
reopens, every open position on it is closed automatically and an order that
would open, add to, or flip a position is rejected with weekend_closure.
Resting entry orders on the market are canceled with cancel reason
venue_policy, and the closed positions report close reason system. See
Weekend auto-close.
A market’s exposure cap limits combined open notional (long plus short) across
accounts of the same challenge model and account size. Each Elite account
instead has its own cap for each market, counting only that account’s
position. The server includes existing exposure and rejects a fill that would
exceed the configured cap. Closing or reducing positions remains allowed.
An existing position keeps its enrolled exposure group through additions,
reductions, and reversals, even if challenge offerings change. A new position
after fully closing uses the current product grouping. This applies equally to
API and website orders; see Asset Exposure Limits.
Exposure-cap enforcement defaults to enabled for newly added markets. A
numerical cap must still be configured; enabling the switch alone does not set
a dollar limit. Check the current market caps
for the applicable limits, and choose your product and account size there to
see the exact cap and maximum leverage that apply to your account.
Treat preflight as advisory
Fetch policy when selecting an account and refresh after a relevant rejection or configuration change. Do not poll this endpoint once per second: it consumes the shared REST read budget. A truecopy_scope_blocked means the credential cannot cover the configured
copy group as a whole. Use a credential authorized for every member in the same
environment, or change the group through the website. A false value does not
cover stale working copied orders left by earlier configurations: modification
and cancellation check those affected accounts again at execution.
The snapshot does not reserve margin, position slots, order slots, trade-window
allowances, or market liquidity. It does not evaluate a proposed order or fetch
fresh prices. Check market metadata and an appropriate quote for market-specific
constraints. Placement and settlement remain authoritative for current balances,
rate-window usage, cooldown, market hours, competition markets, and all other
order-dependent rules. Account evaluation rules can also depend on stage and
fresh equity. The saved slippage-protection maximum is enforced server-side and included here.
Other saved interface preferences, such as display defaults, are not an order policy.