Create a group
require_user_auth)
Name for the group. Must be unique within the organization.
User ID of the group owner (typically the authenticated coach).
Optional description of the group’s purpose.
Visibility setting. One of
"public" or "private".Organization ID. Automatically resolved from the authenticated user’s profile if omitted.
200 OK
Get a group
Returns details for a specific group. The authenticated user must be a member of the group or have a coach/admin role.The unique group identifier.
200 OK
Update a group
Updates group metadata and membership. Membership changes are audit-logged automatically.The unique group identifier.
New group name.
Updated description.
Updated privacy setting:
"public" or "private".Full replacement member list (array of user ID strings). Additions and removals are detected automatically and recorded in the audit log.
200 OK
Delete a group
Permanently deletes a group. The deletion is audit-logged.The unique group identifier.
200 OK
List groups
Returns groups visible to the authenticated user. Coaches receive all groups belonging to their organization. Regular athletes receive only the groups they own.Number of groups to return.
200 OK
When the caller is a coach the response also includes organization-level summary fields.
Total active athletes in the organization (coaches only).
Number of active athletes not assigned to any group (coaches only).
Get group activities
Returns completed activities for all members of a group, suitable for rendering an activity feed on the group detail page.The unique group identifier.
Number of activities to return.
Inclusive start date filter in
YYYY-MM-DD format.Inclusive end date filter in
YYYY-MM-DD format.Comma-separated list of activity sub-types to filter (e.g.
"easy-run,tempo").Get group stats
Returns aggregated training statistics for the group over a time range.The unique group identifier.
Preset range:
7d, 14d, 30d, 60d, 90d, or custom.Unix timestamp for the range start. Required when
range=custom.Unix timestamp for the range end. Required when
range=custom.IANA timezone string for date bucketing (e.g.
"America/New_York"). Defaults to the authenticated user’s profile timezone.200 OK
Total distance in meters across all members in the period.
Total number of completed activities.
Percentage of group members who logged at least one activity in the period.
Daily breakdown. Each entry has a
date key plus one key per active user ID containing distance (km), duration (minutes), vdot_load, and nexrex_ete_plus (training load score).Error codes
| Status | Meaning |
|---|---|
400 | Validation error — missing or invalid fields |
401 | Missing or invalid authentication |
403 | Access denied — not a group member, coach, or admin |
404 | Group not found |
409 | Conflict — a group with this name already exists |
500 | Internal server error |