List all workspaces (platform support only)
const url = 'http://localhost:8000/api/me/accounts/?activity=agility&sort=last_session';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'http://localhost:8000/api/me/accounts/?activity=agility&sort=last_session' \ --header 'Authorization: Bearer <token>'Cross-tenant list of every workspace, for the platform support master account (is_platform_admin). Enriched per row with session_count (real, non-demo), distinct_activities, last_session_at, plan and quota_balance so support can find and triage an account without opening each one.
Filters: ?q= (name / owner email / workspace id substring), ?activity=, ?exercise= (narrow to workspaces with ≥1 matching session). Sort via ?sort= — sessions_desc (default), sessions_asc, name, last_session. Paginated with the standard { results, count, next, previous } envelope (limit/offset, default limit=50, max 200).
Auth: platform support only — a normal coach gets 403.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Only workspaces with ≥1 non-demo session of this activity.
Only workspaces with ≥1 non-demo session of this exercise (combine with activity).
Number of results to return per page.
The initial index from which to return the results.
Substring match on team name, owner email, or workspace id (case-insensitive).
Row ordering. Default sessions_desc.
Responses
Section titled “Responses”object
One workspace row on GET /api/me/accounts/ (platform support only,
#904). Enriches the plain switcher row with session count, the
activities the workspace actually uses, last activity, plan and quota
so support can find + triage an account without opening each one.
object
Workspace (Team) UUID.
Workspace display name.
Email of the workspace owner. Empty when not resolvable.
True for the workspace the support account is currently switched into.
Number of real (non-demo) sessions uploaded under this workspace.
Sorted list of activities this workspace has sessions for (excludes demo clips).
Timestamp of the workspace’s most recent real session, or null.
Live session-quota balance from the append-only ledger.
Status of the workspace’s latest subscription, or null.
Current plan tier, or null when the workspace has no subscription.
object
Plan display name, e.g. ‘Professional’.
Plan tier slug — ‘free’ / ‘starter’ / ‘professional’ / ‘organization’ / ‘strategic’.
Sessions the plan grants per cycle.
Example
{ "count": 123, "next": "http://api.example.org/accounts/?offset=400&limit=100", "previous": "http://api.example.org/accounts/?offset=200&limit=100"}object
Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).
Examplegenerated
{ "detail": "example"}object
Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).
Examplegenerated
{ "detail": "example"}