/accounts/with-risk-statusEvery account of the caller as a full record — challenge, phase, status, balances and enabled options — with its risk snapshot attached.
- Authenticated with an API key, only accounts that have
api_tradingenabled are included. - Interactive sessions share one budget here with the risk-status endpoints; an API key is limited by its own read limits instead.
https://api.upscale.tradeExamples
curl --request GET 'https://api.upscale.trade/accounts/with-risk-status' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY'const response = await fetch("https://api.upscale.trade/accounts/with-risk-status", {
method: "GET",
headers: {
"Accept": "application/json",
"Authorization": "Bearer YOUR_API_KEY"
},
});
console.log(response.status, await response.text());import requests
response = requests.request(
"GET",
"https://api.upscale.trade/accounts/with-risk-status",
headers={"Accept":"application/json","Authorization":"Bearer YOUR_API_KEY"},
timeout=30,
)
print(response.status_code, response.text)Responses
Unauthorized
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.
defaultResponseapplication/json
Array of AccountWithRiskStatusResponse
accountIdstring · uuidrequiredTrader account identifier.
- 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})$
00000000-0000-4000-8000-000000000000userIdstring · uuidrequiredOwner of the account.
- 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})$
00000000-0000-4000-8000-000000000000paymentIdstring · uuid · nullablerequiredPayment the challenge behind this account was bought with. Null for accounts that were not purchased.
- 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})$
00000000-0000-4000-8000-000000000000challengeIdstring · nullablerequiredChallenge the account runs. Null for demo and tournament accounts.
challenge1tournamentIdstring · uuid · nullablerequiredTournament the account was created for. Null outside tournament accounts.
- 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})$
00000000-0000-4000-8000-000000000000typestring · enumrequiredAccount kind: a paid challenge (real), a demo account, or a tournament entry.
"demo" "real" "tournament"demoinitialPhasestringrequiredPhase the account started in.
active_evaluationcurrentPhasestringrequiredPhase the account is in now: active_evaluation, active_verification, funded, or funded_success once it has enough profitable days.
active_evaluationstatusstring · enumrequiredAccount status. Trading is possible on active; the trading_locked_* statuses only allow closing, and the rest stop trading entirely.
"pending" "active" "archived" "archive_expired" "failed" "frozen" "suspended" "closed" "trading_locked_by_funded_limit" "trading_locked_by_instant_funded_limit" "phase_transition_pending" "transition_review"activeprofitTargetstring · nullablerequiredProfit the settled balance needs to pass the current phase, in percent of the initial balance — not fp9. Null when the phase has no target.
5maxDailyDrawdownstring · nullablerequiredDaily drawdown limit of the current phase, in percent of the initial balance — not fp9. The loss is counted from dayStartEquity. Null when the phase has no daily limit.
5maxTotalDrawdownstring · nullablerequiredTotal drawdown limit of the current phase, in percent of the initial balance — not fp9. Null when the phase has no total limit.
10maxTrailingTotalDrawdownstring · nullablerequiredTrailing drawdown limit of the current phase, in percent of the highest equity reached — not fp9. Null when the phase has no trailing limit.
6drawdownBasestring · fp9 · nullablerequiredEquity the funded-phase drawdown is measured from, fp9 raw. Null while it is measured from the initial balance.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxDrawdownStopstring · fp9 · nullablerequiredEquity level at which the funded-phase drawdown fails the account, fp9 raw. Null while it is derived from the initial balance.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000minTradingDaysnumber · nullablerequiredProfitable days (profitableDays) required before the current phase can be passed. Null when the phase has no minimum.
3suspendedUntilstring · date-time · nullablerequiredWhen a suspension of the account lifts. Null when it is not suspended.
2023-10-01T00:00:00.000ZaccountBalancestring · fp9requiredBalance without the unrealised pnl of open positions, fp9 raw.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000initialAccountBalancestring · fp9requiredBalance the account was opened with, fp9 raw — the nominal size of the challenge.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxEquitystring · fp9 · nullablerequiredHighest equity the account has reached, fp9 raw. Null before the first trade.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000dayStartEquitystring · fp9 · nullablerequiredEquity the current trading day opened at, fp9 raw.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000profitableDaysnumberrequiredProfitable days counted in the current withdrawal period.
0prevPeriodProfitableDaysnumberrequiredProfitable days counted in the previous withdrawal period.
0archivedAtstring · date-time · nullablerequiredStart of the account archive period.
2026-05-01T12:30:00.000ZarchiveRestoreAvailableUntilstring · date-time · nullablerequiredUnarchive deadline, independent of paid Restore.
2026-05-01T12:30:00.000ZcreatedAtstring · date-timerequiredWhen the account was created.
2026-05-01T12:30:00.000ZfailureReasonstring · enum · nullablerequiredRule that failed the account. Null while it has not failed.
"archive_expired" "max_total_drawdown" "max_trailing_total_drawdown" "max_daily_drawdown"archive_expiredfundedAtstring · date-time · nullablerequiredWhen the account reached the funded phase. Null before that.
2026-05-01T12:30:00.000ZfailedAtstring · date-time · nullablerequiredWhen the account failed. Null while it has not.
2026-05-01T12:30:00.000ZtransitionReviewAtstring · date-time · nullablerequiredWhen the phase transition was sent for manual review. Null when no review is pending.
2026-05-01T12:30:00.000ZcurrentWithdrawalPeriodStartedAtstring · date-time · nullablerequiredStart of the running withdrawal period. Null while none is running.
2026-05-01T12:30:00.000ZfundedLimitUnlockedAtstring · date-time · nullablerequiredWhen the account last came out of a managed-capital lock; trading days of the period are counted from here. Null when it was never locked.
2026-05-01T12:30:00.000ZmaxWithdrawalAmountstring · fp9requiredLargest amount that may be withdrawn from the account right now, fp9 raw.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000payoutBaselineBalancestring · fp9requiredBalance the next payout is measured from, fp9 raw. Equal to the initial balance until the first payout moves it.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000isActiveWithdrawalInPeriodbooleanrequiredWhether a withdrawal request is already in flight for the current period.
trueprofitSplitPercentnumberrequiredShare of the profit paid out to the trader, in percent.
80debtstring · fp9requiredOutstanding promo-discount debt of the account, fp9 raw. Withheld from the next payout; 0 when there is none.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000dailyDrawdownProtectionobject · nullablerequiredDaily drawdown protection of the account. Null when the account does not carry the option.
Object · 1 field
usedAtstring · date-time · nullablerequiredWhen the protection was consumed. Null while it is still available.
2026-05-01T12:30:00.000ZView example
{
"usedAt": "2026-05-01T12:30:00.000Z"
}aiFailedReportbooleanrequiredWhether an automated report has been produced for the failure of this account.
trueapiTradingbooleanrequiredWhether the account may be traded with a personal API key. Requests made with a key are refused on accounts where this is false.
trueavailableMarketsstring · enumrequiredMarket category the account may trade: crypto, rwa, or all.
"crypto" "rwa" "all"cryptoantifraudStatusstring · enumrequiredAntifraud state of the account; anything other than normal marks it for review.
"normal" "test_account" "balance_exceeded" "manually_flagged" "manually_cleared"normaltradingLockReasonstring · nullablerequiredWhy trading is locked: auto for the managed-capital limit hit on promotion, otherwise the reason an administrator gave. Null when the account is not locked.
stringtournamentobject · nullablerequiredTournament the account belongs to. Null for accounts outside a tournament.
Object · 5 fields
idstring · uuidrequiredTournament identifier.
- 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})$
00000000-0000-4000-8000-000000000000statusstring · enumrequiredStage the tournament is in.
"active" "completed"activestartDatestring · date-timerequiredWhen the tournament opens for trading.
2026-05-01T12:30:00.000ZendDatestring · date-timerequiredWhen the tournament closes.
2026-05-01T12:30:00.000ZfinalRecalcDonebooleanrequiredWhether final standings have been recomputed after the close.
trueView example
{
"id": "00000000-0000-4000-8000-000000000000",
"status": "active",
"startDate": "2026-05-01T12:30:00.000Z",
"endDate": "2026-05-01T12:30:00.000Z",
"finalRecalcDone": true
}restoreobjectrequiredWhether a failed funded account can be brought back, and until when.
Object · 2 fields
restoreAvailablebooleanrequiredWhether the failed funded account can be restored right now.
truerestoreAvailableUntilstring · date-time · nullablerequiredWhen the restore window closes. Null when there is no window.
2026-05-01T12:30:00.000ZView example
{
"restoreAvailable": true,
"restoreAvailableUntil": "2026-05-01T12:30:00.000Z"
}riskStatusobjectrequiredLive risk snapshot of this account, the same payload the risk-status endpoints return.
Object · 15 fields
accountIdstring · uuidrequiredTrader account the snapshot belongs to.
- 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})$
00000000-0000-4000-8000-000000000000tradingDaysnumberrequiredProfitable days of the current withdrawal period — the same counter as profitableDays of the account, not the days with trades. A day counts when equity grows by at least 0.5% of the initial balance; minTradingDays is compared against this number.
0currentBalancestring · fp9requiredAccount balance without the unrealised pnl of open positions, fp9 raw.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000currentEquitystring · fp9requiredBalance plus the unrealised pnl of open positions, fp9 raw. This is what drawdown rules are measured against.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000dayStartEquitystring · fp9requiredEquity the current trading day opened at, fp9 raw — the base of the daily drawdown limit.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxEquitystring · fp9 · nullablerequiredHighest equity the account has ever reached, fp9 raw — the base of the trailing drawdown. Null before the first trade.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000periodStartEquitystring · fp9 · nullablerequiredEquity the current withdrawal period opened at, fp9 raw. Null while no period is running.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxPeriodDailyEquityDeltastring · fp9 · nullablerequiredLargest single-day equity gain inside the current period, fp9 raw — the numerator of the consistency rule. Null while no day has closed in profit.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000maxPeriodDailyEquityDeltaAtstring · date-time · nullablerequiredDay that produced maxPeriodDailyEquityDelta. Null together with it.
2026-05-01T12:30:00.000ZconsistencyRuleAppliesbooleanrequiredWhether the consistency rule is part of the rules of this account in its current phase.
trueconsistencyRuleMetboolean · nullablerequiredWhether the rule is currently satisfied. Null while the period is not in profit and the ratio cannot be computed.
trueconsistencyRuleRatiostring · fp9 · nullablerequiredShare of the period profit made on its best day, fp9 raw fraction. Null together with consistencyRuleMet.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000consistencyRuleLimitstring · fp9requiredLargest share of period profit one day may account for, fp9 raw fraction (300000000 = 30%). A ratio above it fails the rule.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000payoutBaselineBalancestring · fp9requiredBalance the next payout is measured from, fp9 raw. Equal to the initial account size until the first payout moves it.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000isPayoutBaselineRequirementMetbooleanrequiredWhether equity is above payoutBaselineBalance — the condition for being eligible to request a payout.
trueView example
{
"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
}[
{
"accountId": "00000000-0000-4000-8000-000000000000",
"userId": "00000000-0000-4000-8000-000000000000",
"paymentId": "00000000-0000-4000-8000-000000000000",
"challengeId": "challenge1",
"tournamentId": "00000000-0000-4000-8000-000000000000",
"type": "demo",
"initialPhase": "active_evaluation",
"currentPhase": "active_evaluation",
"status": "active",
"profitTarget": "5",
"maxDailyDrawdown": "5",
"maxTotalDrawdown": "10",
"maxTrailingTotalDrawdown": "6",
"drawdownBase": "1000000000",
"maxDrawdownStop": "1000000000",
"minTradingDays": 3,
"suspendedUntil": "2023-10-01T00:00:00.000Z",
"accountBalance": "1000000000",
"initialAccountBalance": "1000000000",
"maxEquity": "1000000000",
"dayStartEquity": "1000000000",
"profitableDays": 0,
"prevPeriodProfitableDays": 0,
"archivedAt": "2026-05-01T12:30:00.000Z",
"archiveRestoreAvailableUntil": "2026-05-01T12:30:00.000Z",
"createdAt": "2026-05-01T12:30:00.000Z",
"failureReason": "archive_expired",
"fundedAt": "2026-05-01T12:30:00.000Z",
"failedAt": "2026-05-01T12:30:00.000Z",
"transitionReviewAt": "2026-05-01T12:30:00.000Z",
"currentWithdrawalPeriodStartedAt": "2026-05-01T12:30:00.000Z",
"fundedLimitUnlockedAt": "2026-05-01T12:30:00.000Z",
"maxWithdrawalAmount": "1000000000",
"payoutBaselineBalance": "1000000000",
"isActiveWithdrawalInPeriod": true,
"profitSplitPercent": 80,
"debt": "1000000000",
"dailyDrawdownProtection": {
"usedAt": "2026-05-01T12:30:00.000Z"
},
"aiFailedReport": true,
"apiTrading": true,
"availableMarkets": "crypto",
"antifraudStatus": "normal",
"tradingLockReason": "string",
"tournament": {
"id": "00000000-0000-4000-8000-000000000000",
"status": "active",
"startDate": "2026-05-01T12:30:00.000Z",
"endDate": "2026-05-01T12:30:00.000Z",
"finalRecalcDone": true
},
"restore": {
"restoreAvailable": true,
"restoreAvailableUntil": "2026-05-01T12:30:00.000Z"
},
"riskStatus": {
"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
}
}
]