# Get the risk status of the trader account

`GET /accounts/{accountId}/risk-status`

The risk snapshot the trading engine keeps for the account: current balance and equity, day-start and max equity, the trading-day counter,
the consistency-rule state and the payout baseline.

- Read live from the shard that holds the account, so open positions are already reflected in the equity.
- Interactive sessions get a budget for this endpoint apart from the other ones; an API key is limited by its own read limits instead.

## Authorization

bearer: http · bearer (required). Personal API key, prefixed with `usk_`.

## Parameters

- path: accountId (string · uuid; required). Trader account identifier. Must belong to the caller.

Type: string · uuid

format: uuid

## Example · cURL

```bash
curl --request GET 'https://api.upscale.trade/accounts/{accountId}/risk-status' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY'
```

## Example · JavaScript

```javascript
const response = await fetch("https://api.upscale.trade/accounts/{accountId}/risk-status", {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_API_KEY"
  },
});
console.log(response.status, await response.text());
```

## Example · Python

```python
import requests

response = requests.request(
    "GET",
    "https://api.upscale.trade/accounts/{accountId}/risk-status",
    headers={"Accept":"application/json","Authorization":"Bearer YOUR_API_KEY"},
    timeout=30,
)
print(response.status_code, response.text)
```

## Response 200 · AccountsRiskStatusResponse

**200** application/json — Response

Schema: AccountsRiskStatusResponse

Type: object

Required fields: accountId, tradingDays, currentBalance, currentEquity, dayStartEquity, maxEquity, periodStartEquity, maxPeriodDailyEquityDelta, maxPeriodDailyEquityDeltaAt, consistencyRuleApplies, consistencyRuleMet, consistencyRuleRatio, consistencyRuleLimit, payoutBaselineBalance, isPayoutBaselineRequirementMet

Required field types: accountId (string · uuid; required), tradingDays (number; required), currentBalance (string · int32; required), currentEquity (string · int32; required), dayStartEquity (string · int32; required), maxEquity (string · int32 · nullable; required), periodStartEquity (string · int32 · nullable; required), maxPeriodDailyEquityDelta (string · int32 · nullable; required), maxPeriodDailyEquityDeltaAt (string · date-time · nullable; required), consistencyRuleApplies (boolean; required), consistencyRuleMet (boolean[]; required), consistencyRuleRatio (string · int32 · nullable; required), consistencyRuleLimit (string · int32; required), payoutBaselineBalance (string · int32; required), isPayoutBaselineRequirementMet (boolean; required)

- accountId (string · uuid; required)

accountId example: 00000000-0000-4000-8000-000000000000

accountId.Type: string · uuid

accountId.Trader account the snapshot belongs to.

accountId.format: uuid

accountId.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

- tradingDays (number; required)

tradingDays example: 0

tradingDays.Type: number

tradingDays.Number of days the account has traded on — counted against the minimum trading days of the challenge.

- currentBalance (string · int32; required)

currentBalance example: 1000000000

currentBalance.Type: string · int32

currentBalance.Account balance without the unrealised pnl of open positions, fp9 raw.

currentBalance.format: int32

currentBalance.pattern: ^(?:-?[1-9][0-9]*|0)$

- currentEquity (string · int32; required)

currentEquity example: 1000000000

currentEquity.Type: string · int32

currentEquity.Balance plus the unrealised pnl of open positions, fp9 raw. This is what drawdown rules are measured against.

currentEquity.format: int32

currentEquity.pattern: ^(?:-?[1-9][0-9]*|0)$

- dayStartEquity (string · int32; required)

dayStartEquity example: 1000000000

dayStartEquity.Type: string · int32

dayStartEquity.Equity the current trading day opened at, fp9 raw — the base of the daily drawdown limit.

dayStartEquity.format: int32

dayStartEquity.pattern: ^(?:-?[1-9][0-9]*|0)$

- maxEquity (string · int32 · nullable; required)

maxEquity example: 1000000000

maxEquity.Type: string · int32 · nullable

maxEquity.Highest equity the account has ever reached, fp9 raw — the base of the trailing drawdown. Null before the first trade.

maxEquity.format: int32

maxEquity.pattern: ^(?:-?[1-9][0-9]*|0)$

- periodStartEquity (string · int32 · nullable; required)

periodStartEquity example: 1000000000

periodStartEquity.Type: string · int32 · nullable

periodStartEquity.Equity the current withdrawal period opened at, fp9 raw. Null while no period is running.

periodStartEquity.format: int32

periodStartEquity.pattern: ^(?:-?[1-9][0-9]*|0)$

- maxPeriodDailyEquityDelta (string · int32 · nullable; required)

maxPeriodDailyEquityDelta example: 1000000000

maxPeriodDailyEquityDelta.Type: string · int32 · nullable

maxPeriodDailyEquityDelta.Largest single-day equity gain inside the current period, fp9 raw — the numerator of the consistency rule. Null while no day has closed in profit.

maxPeriodDailyEquityDelta.format: int32

maxPeriodDailyEquityDelta.pattern: ^(?:-?[1-9][0-9]*|0)$

- maxPeriodDailyEquityDeltaAt (string · date-time · nullable; required)

maxPeriodDailyEquityDeltaAt example: 2026-05-01T12:30:00.000Z

maxPeriodDailyEquityDeltaAt.Type: string · date-time · nullable

maxPeriodDailyEquityDeltaAt.Day that produced `maxPeriodDailyEquityDelta`. Null together with it.

maxPeriodDailyEquityDeltaAt.format: date-time

- consistencyRuleApplies (boolean; required)

consistencyRuleApplies example: true

consistencyRuleApplies.Type: boolean

consistencyRuleApplies.Whether the consistency rule is part of the rules of this account in its current phase.

- consistencyRuleMet (boolean[]; required)

consistencyRuleMet example: [
  true
]

consistencyRuleMet.Type: boolean[]

consistencyRuleMet.Whether the rule is currently satisfied. Null while the period is not in profit and the ratio cannot be computed.

consistencyRuleMet.[]Type: boolean

- consistencyRuleRatio (string · int32 · nullable; required)

consistencyRuleRatio example: 1000000000

consistencyRuleRatio.Type: string · int32 · nullable

consistencyRuleRatio.Share of the period profit made on its best day, fp9 raw fraction. Null together with `consistencyRuleMet`.

consistencyRuleRatio.format: int32

consistencyRuleRatio.pattern: ^(?:-?[1-9][0-9]*|0)$

- consistencyRuleLimit (string · int32; required)

consistencyRuleLimit example: 1000000000

consistencyRuleLimit.Type: string · int32

consistencyRuleLimit.Largest share of period profit one day may account for, fp9 raw fraction (`300000000` = 30%). A ratio above it fails the rule.

consistencyRuleLimit.format: int32

consistencyRuleLimit.pattern: ^(?:-?[1-9][0-9]*|0)$

- payoutBaselineBalance (string · int32; required)

payoutBaselineBalance example: 1000000000

payoutBaselineBalance.Type: string · int32

payoutBaselineBalance.Balance the next payout is measured from, fp9 raw. Equal to the initial account size until the first payout moves it.

payoutBaselineBalance.format: int32

payoutBaselineBalance.pattern: ^(?:-?[1-9][0-9]*|0)$

- isPayoutBaselineRequirementMet (boolean; required)

isPayoutBaselineRequirementMet example: true

isPayoutBaselineRequirementMet.Type: boolean

isPayoutBaselineRequirementMet.Whether equity is above `payoutBaselineBalance` — the condition for being eligible to request a payout.

Example



```json
{
  "accountId": "00000000-0000-4000-8000-000000000000",
  "tradingDays": 0,
  "currentBalance": "1000000000",
  "currentEquity": "1000000000",
  "dayStartEquity": "1000000000",
  "maxEquity": "1000000000",
  "periodStartEquity": "1000000000",
  "maxPeriodDailyEquityDelta": "1000000000",
  "maxPeriodDailyEquityDeltaAt": "2026-05-01T12:30:00.000Z",
  "consistencyRuleApplies": true,
  "consistencyRuleMet": [
    true
  ],
  "consistencyRuleRatio": "1000000000",
  "consistencyRuleLimit": "1000000000",
  "payoutBaselineBalance": "1000000000",
  "isPayoutBaselineRequirementMet": true
}
```

## Response 401

**401**  — Unauthorized

## Response 403

**403**  — The account belongs to another user (`account_access_denied`), or the request is authenticated with an API key while `api_trading` is disabled on the account (`api_trading_not_enabled`).

## Response 404

**404**  — No account with this identifier.

## Response 429

**429**  — Rate limit of the API key exceeded (`api_key_rate_limit_exceeded`). `Retry-After` says when to come back; the body carries the bucket (`read` / `write`), the window that tripped, its limit and `retryAt`.