Update the caller's own membership settings
curl --request PUT \
--url https://web-api.dev.soxai.site/api/groups/{group_id}/members/me \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"displayName": "Jane",
"sharedFields": {
"sleep_score": true
},
"masterHidden": false
}
'import requests
url = "https://web-api.dev.soxai.site/api/groups/{group_id}/members/me"
payload = {
"displayName": "Jane",
"sharedFields": { "sleep_score": True },
"masterHidden": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({displayName: 'Jane', sharedFields: {sleep_score: true}, masterHidden: false})
};
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": "bad-request",
"error_msg": "displayName must not be empty"
}{
"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>"
}Family Groups
Update the caller's own membership settings
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 changes state that every Sandbox caller shares. It is published here because the Sandbox runs the same build; use it in Production. See Sandbox.
Update the caller’s own display name and sharing settings in this group. Sharing is per membership, so the same account can share different metrics in different groups.
Parameters
group_id(path, required) - the group whose membership is edited.- Body (
GroupMemberUpdate): every field is optional and only the ones sent are written.displayNamemust not be empty when sent;sharedFieldsis the per-metric selection ({"all": true}shares everything);masterHidden: truehides the caller from every other member at once, whateversharedFieldssays.
Response
200returns the membership as it now stands, the same shapeGET .../members/mereturns.
Errors
| Status | Condition |
|---|---|
| 400 | displayName was sent empty |
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.
PUT
/
api
/
groups
/
{group_id}
/
members
/
me
Update the caller's own membership settings
curl --request PUT \
--url https://web-api.dev.soxai.site/api/groups/{group_id}/members/me \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"displayName": "Jane",
"sharedFields": {
"sleep_score": true
},
"masterHidden": false
}
'import requests
url = "https://web-api.dev.soxai.site/api/groups/{group_id}/members/me"
payload = {
"displayName": "Jane",
"sharedFields": { "sleep_score": True },
"masterHidden": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({displayName: 'Jane', sharedFields: {sleep_score: true}, masterHidden: false})
};
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": "bad-request",
"error_msg": "displayName must not be empty"
}{
"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
HTTPBearerSoxaiApiKey
Body
application/json
Response
The membership as it now stands, the same shape GET .../members/me returns.