Get one family group
curl --request GET \
--url https://web-api.dev.soxai.site/api/groups/{group_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://web-api.dev.soxai.site/api/groups/{group_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://web-api.dev.soxai.site/api/groups/{group_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"groupId": "b7d1f0c9a2e4d6f8b0c1",
"groupName": "Shibata family",
"status": "active",
"role": "admin",
"createdAt": "2026-08-03T09:30:00+00:00",
"memberCount": 2,
"sharedFields": {
"sleep_score": true,
"health_score": true,
"activity_score": false,
"sleep_total_time_exclude_awake": false,
"activity_steps": true,
"heat_stroke_severity": true,
"last_sync_time": true
},
"masterHidden": false,
"sharedFieldNames": [
"activity_steps",
"health_score",
"heat_stroke_severity",
"last_sync_time",
"sleep_score"
],
"members": [
{
"uid": "user123",
"displayName": "Mom",
"role": "admin",
"joinedAt": "2026-08-03T09:30:00+00:00",
"isSelf": true,
"visibleFields": [
"activity_steps",
"health_score",
"heat_stroke_severity",
"last_sync_time",
"sleep_score"
]
},
{
"uid": "user456",
"displayName": "Dad",
"role": "member",
"joinedAt": "2026-08-05T02:10:00+00:00",
"isSelf": false,
"visibleFields": [
"sleep_score"
]
}
],
"watching": true,
"groupType": "family",
"createdBy": "user123"
}{
"error": "http-error",
"error_msg": "Invalid authentication credentials. <reason>"
}{
"error": "forbidden",
"error_msg": "Not enough permission"
}{
"error": "not-found",
"error_msg": "group not found"
}{
"error": "unprocessable-entity",
"error_msg": "body.<field>: <validation message>"
}{
"error": "rate-limited",
"error_msg": "Rate limit exceeded. Retry after <n> seconds."
}{
"error": "internal-server-error",
"error_msg": "Failed to fetch data: <error_message>"
}Family Groups
Get one family group
Not callable with a Sandbox key
A request authenticated with a Sandbox soxai-api-key is answered 403 This endpoint is not available in the sandbox., because it is internal or operational, outside the Sandbox surface. It is published here because the Sandbox runs the same build; use it in Production. See Sandbox.
One group by id — the same keys as a GET /api/groups entry plus groupType
and createdBy. Member identity comes with the entry (members, SOX-82);
member health data lives in GroupView.
Parameters
group_id(path, required) - the group to describe.
Response
200returns the same keys as aGET /api/groupsentry, plusgroupType,createdByandmembers, the roster’s identities.
Errors
| Status | Condition |
|---|---|
| 404 | The group does not exist. Only an active member of some other group reaches this: a non-member is refused with 403 first |
Authorization
- Scheme:
Authorization: Bearer <idToken>orsoxai-api-key: <api key>. - Authority inside a group comes from the caller’s own membership record, never from a SOXAI
role: an
Admin,PartnerAdminorOrgAdminclaim grants nothing here. - Required: an active member of the group. A caller who is not one receives
403 not a member of this group, whether or not the group exists.
GET
/
api
/
groups
/
{group_id}
Get one family group
curl --request GET \
--url https://web-api.dev.soxai.site/api/groups/{group_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://web-api.dev.soxai.site/api/groups/{group_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://web-api.dev.soxai.site/api/groups/{group_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"groupId": "b7d1f0c9a2e4d6f8b0c1",
"groupName": "Shibata family",
"status": "active",
"role": "admin",
"createdAt": "2026-08-03T09:30:00+00:00",
"memberCount": 2,
"sharedFields": {
"sleep_score": true,
"health_score": true,
"activity_score": false,
"sleep_total_time_exclude_awake": false,
"activity_steps": true,
"heat_stroke_severity": true,
"last_sync_time": true
},
"masterHidden": false,
"sharedFieldNames": [
"activity_steps",
"health_score",
"heat_stroke_severity",
"last_sync_time",
"sleep_score"
],
"members": [
{
"uid": "user123",
"displayName": "Mom",
"role": "admin",
"joinedAt": "2026-08-03T09:30:00+00:00",
"isSelf": true,
"visibleFields": [
"activity_steps",
"health_score",
"heat_stroke_severity",
"last_sync_time",
"sleep_score"
]
},
{
"uid": "user456",
"displayName": "Dad",
"role": "member",
"joinedAt": "2026-08-05T02:10:00+00:00",
"isSelf": false,
"visibleFields": [
"sleep_score"
]
}
],
"watching": true,
"groupType": "family",
"createdBy": "user123"
}{
"error": "http-error",
"error_msg": "Invalid authentication credentials. <reason>"
}{
"error": "forbidden",
"error_msg": "Not enough permission"
}{
"error": "not-found",
"error_msg": "group not found"
}{
"error": "unprocessable-entity",
"error_msg": "body.<field>: <validation message>"
}{
"error": "rate-limited",
"error_msg": "Rate limit exceeded. Retry after <n> seconds."
}{
"error": "internal-server-error",
"error_msg": "Failed to fetch data: <error_message>"
}Authorizations
HTTPBearerSoxaiApiKey
Path Parameters
Response
The same keys as a GET /api/groups entry, plus groupType and createdBy.