curl --request GET \
--url https://web-api.dev.soxai.site/api/groups/{group_id}/members/me \
--header 'Authorization: Bearer <token>'import requests
url = "https://web-api.dev.soxai.site/api/groups/{group_id}/members/me"
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}/members/me', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"uid": "user123",
"groupId": "b7d1f0c9a2e4d6f8b0c1",
"role": "admin",
"status": "active",
"displayName": "Mom",
"joinedAt": "2026-08-03T09:30:00+00:00",
"masterHidden": false,
"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
},
"sharingScope": "group_only"
}{
"error": "http-error",
"error_msg": "Invalid authentication credentials. <reason>"
}{
"error": "forbidden",
"error_msg": "Not enough permission"
}{
"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>"
}Get the caller's own membership in a group
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.
The caller’s own membership: displayName, role, masterHidden and the stored
sharedFields.
The read-back counterpart of PUT .../members/me (SOX-67), returning the same
shape so the sharing-settings screen parses one payload whether it just saved
or is reopening. GroupView cannot serve this: an owner always sees all of
their own data (spec §3.5), so visibleFields on the self card is the whole
catalog no matter what the owner shares — it is a viewer mask, never a
read-back of sharedFields.
Parameters
group_id(path, required) - the group whose membership is read back.
Response
200returns the caller’s membership:displayName,role,masterHiddenand the storedsharedFields. It is the same shapePUT .../members/meaccepts.
Errors
- None. A group that does not exist is not a
404here: the answer is built from the caller’s own membership record, which is absent either way, so both cases are the403named under Authorization.
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.
curl --request GET \
--url https://web-api.dev.soxai.site/api/groups/{group_id}/members/me \
--header 'Authorization: Bearer <token>'import requests
url = "https://web-api.dev.soxai.site/api/groups/{group_id}/members/me"
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}/members/me', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"uid": "user123",
"groupId": "b7d1f0c9a2e4d6f8b0c1",
"role": "admin",
"status": "active",
"displayName": "Mom",
"joinedAt": "2026-08-03T09:30:00+00:00",
"masterHidden": false,
"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
},
"sharingScope": "group_only"
}{
"error": "http-error",
"error_msg": "Invalid authentication credentials. <reason>"
}{
"error": "forbidden",
"error_msg": "Not enough permission"
}{
"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
Path Parameters
Response
The caller's own membership, in the shape PUT .../members/me accepts.