Skip to main content
A firm governs an issued account two ways, and they are not the same tool. The five risk controls are automatic: they watch the account and fire on their own. A halt is manual: it blocks new orders until you say otherwise. Reach for the controls to define the evaluation; reach for a halt when something about this account, right now, needs to stop. Everything here runs with your partner key against /api/partner/ routes, and reaches only accounts your firm issued.
1

Read the current state

Get an account’s risk controls returns the five controls as stored, plus whether trading is blocked and by what.
account is required — a missing one is a 400. The settings object carries each control’s enabled flag and value, plus updatedAt.
2

Write all five in one call

Set an account’s risk controls replaces the whole set. Enforcement is live from the write: the risk monitor re-arms immediately.
An enabled control needs a positive, in-range value or the write is a 400. A disabled control’s value is ignored and stored as null — there is no half-set control. The response returns the state as stored, so your system can mirror it rather than assume it.
3

Halt an account, and lift your own halt

Halt trading blocks all new orders until your firm resumes. Resume is the mirror image.
Both are idempotent: halting an already-halted account answers halted: true again, and resuming one that is already trading answers halted: false.
4

Reset when you want the account flat and clean

A halt stops new risk; it does not close anything. Reset an issued account is the call that clears open positions and working orders and returns the balance to its starting figure.

The five controls

The end-of-day window is the one control that is not about money. Its value is a count of whole minutes before the 16:00 CT close, and the contract accepts 1 through 240 — anything outside that range is a 400, not a clamp. Four hours is the ceiling because the control is a close-out-before-the-bell instrument, not a session policy.

What firing does

The same thing, whichever control fired: flatten, then lock. The risk monitor closes the account’s positions and blocks new orders, exactly as if the trader had set the control themselves. Nothing about a firm-written control is enforced differently from a trader-written one — it is the same monitor reading the same settings row. After a control fires, halted is true and lockReason names what fired.

Halt, resume, reset — which one

Two refusals hold this together, and both are 409:
  • Halt refuses when someone else already holds the lock. If the account is locked by a risk control that fired or by an evaluation breach, the halt answers 409 and replaces nothing — because clearing your halt later must never release a lock you never owned.
  • Resume refuses when the lock is not yours. It clears a firm_halt and nothing else. A risk lock or an eval_breach stands, and lockReason in the error names what is actually holding it.
A halt deliberately leaves positions open: stopping new risk should not force an exit at whatever the current price happens to be. If you want the account flat, reset it.

How this differs from a trader’s own controls

They are the same five numbers in the same settings row — one set, two viewers, last write wins. What differs is the key, the naming, and the reach. One field belongs to the trader alone: the “prevent changes while locked” preference is not on the partner surface at all, and your write leaves it untouched.

Where to go deeper