curl --request DELETE \
--url https://web-api.dev.soxai.site/api/groups/{group_id}/members \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"uids": [
"user_123"
]
}
'import requests
url = "https://web-api.dev.soxai.site/api/groups/{group_id}/members"
payload = { "uids": ["user_123"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({uids: ['user_123']})
};
fetch('https://web-api.dev.soxai.site/api/groups/{group_id}/members', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success_count": 1,
"success_uids": [
"user456"
],
"failed_count": 1,
"failed_uids": [
"user789"
]
}{
"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>"
}Remove several members from a group
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.
Remove several members at once — the batch form of
DELETE /api/groups/{group_id}/members/{uid}, which stays as-is for clients
that remove one member at a time (SOX-64 item 3).
Soft per-uid failure: uids that cannot be removed (an admin, an unknown uid, or
the caller — who must use self-leave) come back under failed_uids with their
reason while the rest are still removed, so one bad uid does not sink the batch.
Parameters
group_id(path, required) - the group to remove from.- Body (
GroupMembersRemove):uids, between 1 and 50 entries.
Response
200{"success_count", "success_uids", "failed_count", "failed_uids"}. Duplicates collapse to one attempt and first-seen order is kept, so the answer lines up with the request.- A uid that cannot be removed does not sink the batch: it comes back under
failed_uidswith its reason - an admin, a uid that is not a member, or the caller themselves - while the rest are still removed.
Errors
- None beyond the
403below. Every per-uid failure is folded into the200, which is what distinguishes this fromDELETE /api/groups/{group_id}/members/{uid}: that one answers400and404for the same conditions.
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: the
adminrole of this group. A non-member receives403 not a member of this group, and a plain member403 group admin required.
curl --request DELETE \
--url https://web-api.dev.soxai.site/api/groups/{group_id}/members \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"uids": [
"user_123"
]
}
'import requests
url = "https://web-api.dev.soxai.site/api/groups/{group_id}/members"
payload = { "uids": ["user_123"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({uids: ['user_123']})
};
fetch('https://web-api.dev.soxai.site/api/groups/{group_id}/members', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success_count": 1,
"success_uids": [
"user456"
],
"failed_count": 1,
"failed_uids": [
"user789"
]
}{
"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
Body
Response
Per-uid outcome of the batch. A uid that cannot be removed comes back under failed_uids while the rest are still removed.