Get end-of-day account snapshots
Returns every account that traded during a CME trading day, with their end-of-day balances and performance.
Pre-computed: This data is written by the trade engine at market close. Queries are fast — no joins, no aggregations.
What you get per account:
- Starting and ending balances
- Daily P&L and total P&L
- High water mark
- Fill count and contracts traded
- Status changes and violation reasons
CME trading day: 17:00 CT previous day → 16:00 CT current day.
Server-side account scoping:
Pass ?accountId=<uuid> or ?accountId=<uuid>,<uuid>,... (up to 100) to
retrieve snapshots for exactly the accounts you care about — no need to pull
the whole org and filter locally. Useful for multi-tenant setups where each
tenant maps to a subset of accounts. IDs outside your organization return
404 ACCOUNT_NOT_FOUND, so the scoping is safe by construction.
Knowing when snapshots are ready:
The response includes latestCompletedTradingDay — the most recent trading
day for which EOD snapshots exist for your organization. Poll it, or better:
subscribe to the snapshot.ready webhook event, which fires once per
organization per trading day the moment the EOD batch is written (see the
webhooks docs). No more scheduling a guess and getting zero rows.
Use cases:
- Daily performance reports
- Reconciliation with your internal systems
- Compliance and risk monitoring
- Partner dashboards
Authorizations
JWT Bearer token for user session auth. Format: "Bearer {token}". Used by User and Organization endpoints.
Query Parameters
CME trading day (YYYY-MM-DD). Defaults to today.
^\d{4}-\d{2}-\d{2}$Filter by account status
in_progress, passed, failed, not_started, expired Scope results to specific accounts: one account UUID or a comma-separated list (max 100). Every ID must belong to your organization, otherwise 404 ACCOUNT_NOT_FOUND.
Results per page (default: 50, max: 100)
1 <= x <= 100Pagination offset
x >= 0Cursor for pagination. Pass the nextCursor value from the previous response to get the next page. When using cursor, do not send offset — it will be ignored.
How it works: The cursor is an opaque string that points to the last item you received. The server uses it to efficiently fetch the next set of results without scanning previous pages.
Backwards compatible: If you don't send a cursor, offset/limit pagination works as before.
Related topics
Reconcile a trading day in one callTime Machine — revert an account to a trading dayRegister a webhook endpointWebhooksList roles (system presets + your custom roles)