Firm-wide reporting
Counts, pass rate, net P&L, a leaderboard and a feed of every breach and pass across your whole book.
Firm-wide views. Analytics answers “how is this account doing”; these answer “how is the firm doing” without you fetching every account and aggregating it yourself.
Overview
/v1/reports/overviewPlannedscope · accounts:read{
"accounts": {
"total": 1184, "active": 402, "passed": 96,
"breached": 588, "archived": 98, "unassigned": 41
},
"pass_rate": 0.1404,
"net_realized_pnl": -184203.55,
"equity_under_management": 4120550.18,
"traders": 903,
"credits": { "granted": 1250, "used": 1184, "remaining": 66 }
}pass_ratenumbernet_realized_pnlnumberequity_under_managementnumberunassignedintegerWatch `credits.remaining` here
This is the field worth putting on your own internal dashboard. Running out mid-onboarding means a trader who paid you cannot be given an account until you buy more. See limits.
Leaderboard
/v1/reports/leaderboardPlannedscope · accounts:readAccounts ranked by a metric you choose. What most firms put on a public page or a trader-facing widget.
sortstringgain (default), profit_factor, drawdown or net_pnl.statusstringactive or passed. Omit for all.limitintegerDo not publish this response as-is
It contains trader_email. If you are rendering a public leaderboard, map to a display name your trader consented to — an email address is personal data, and publishing one because it happened to be in the payload is the kind of mistake that is hard to undo.
Decisions feed
/v1/reports/decisionsPlannedscope · accounts:readEvery breach and pass, newest first, cursor-paginated — with the rule that fired and the equity state at the moment it did. Useful for a daily digest or a back-office queue.
{
"data": [
{
"account": 10000042,
"trader_id": "3d21…",
"decision": "breached",
"reason": "daily drawdown 5.2% exceeded the 5% limit (equity 9480.00, day start 10000.00)",
"equity": 9480,
"decided_at": "2026-09-27T14:02:19Z"
}
],
"next_cursor": null
}Prefer webhooks for this
Polling this feed to find out about breaches works, but webhooks tell you within seconds and cost you no rate limit. Use the feed to backfill after an outage, and webhooks for the live path.