Skip to main content

Inspect policy before trading

Call GET /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 standard maxLeverage. 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 true copy_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.