> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tradara.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Read live risk state

> GET /v1/firm-control/accounts/{account_id}/risk-state — ingest live max-loss floor, caps, peaks, and lockout for one account.

Use this after provisioning, a payout cap change, or a migration withdrawal to confirm the account's **live** risk configuration. The response comes from the risk engine that is currently enforcing the account — not a delayed projection.

```http theme={null}
GET /v1/firm-control/accounts/{account_id}/risk-state
```

`operationId: getFirmAccountRiskState`

Requires `accounts:read`. A firm API key is automatically scoped to its firm.

```bash theme={null}
curl -sS "$TRADARA_BASE_URL/v1/firm-control/accounts/$ACCOUNT_ID/risk-state" \
  -H "X-Tradara-Api-Key: $TRADARA_API_KEY"
```

### Response — `200 OK`

```json theme={null}
{
  "item": {
    "account_id": "4f26b5a3-4dea-4e3a-aabd-6c1459fb6fab",
    "max_drawdown_mode": "realtime_balance",
    "max_drawdown_value": "1000",
    "max_drawdown_limit": "100",
    "max_drawdown_lock_ceiling": "25100.00",
    "starting_balance": "25000",
    "balance": "24111.25",
    "equity": "24111.25",
    "highest_realized_balance": "25011.25",
    "max_loss_limit_trigger": "24011.25",
    "daily_loss_limit_trigger": "23750",
    "is_locked": false,
    "user_risk_halt": false,
    "updated_at": "2026-09-18T12:00:00Z"
  }
}
```

### Fields to check

| Field                          | What to verify                                                                                                                                                                               |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `max_drawdown_mode`            | Static vs trailing, and whether the floor uses balance or equity.                                                                                                                            |
| `max_drawdown_value`           | Dollar **allowance** (for example `1000` for a \$1,000 max loss).                                                                                                                            |
| `max_drawdown_limit`           | Trailing **cap** as an offset from starting balance. `"0"` is starting balance; `"100"` is starting balance plus \$100. Omitted when the trailing floor is uncapped or the mode is `static`. |
| `max_drawdown_lock_ceiling`    | Resolved dollar cap (`starting_balance + max_drawdown_limit`).                                                                                                                               |
| `max_loss_limit_trigger`       | Live **floor**. This is the line risk-engine enforces. For trailing modes it is `min(peak − allowance, ceiling)` when a cap is set.                                                          |
| `daily_loss_limit_trigger`     | Live daily-loss floor, when the plan has a DLL.                                                                                                                                              |
| `is_locked` / `lockout_reason` | Whether order entry is currently blocked.                                                                                                                                                    |

To **move** the trailing cap, use [Set max loss limit](/prop-firm/operations/max-loss-limit). This GET does not change anything.

## Errors

| HTTP  | Meaning                                                                            |
| ----- | ---------------------------------------------------------------------------------- |
| `403` | Caller lacks `accounts:read`.                                                      |
| `404` | Account is unknown or not in your firm.                                            |
| `502` | Could not reach accounts or risk-engine.                                           |
| `503` | Risk-engine has not loaded this account yet. Retry shortly after create or unlock. |
