For AI agents: markdown of this page — /docs-content-en/entities/workgroups/update.md documentation index — /llms.txt
Update a workgroup
PATCH /v1/workgroups/:id
Updates the specified workgroup fields. Returns the full group object after the update. Fields not mentioned in the body remain unchanged.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
Parameterid (path) |
Typenumber | Required★ | DescriptionWorkgroup identifier. List: GET /v1/workgroups |
Request fields (body)
Pass only the fields you need to change. The rest keep their current values.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
Fieldname |
Typestring | Requiredno | Defaultcurrent value | DescriptionWorkgroup name |
Fielddescription |
Typestring | Requiredno | Defaultcurrent value | DescriptionDescription |
FieldownerId |
Typenumber | Requiredno | Defaultcurrent value | DescriptionIdentifier of the new group owner. List: GET /v1/users |
FieldsubjectId |
Typenumber | Requiredno | Defaultcurrent value | DescriptionSubject identifier |
Fieldactive |
Typeboolean | Requiredno | Defaultcurrent value | DescriptionWhether the group is active |
Fieldvisible |
Typeboolean | Requiredno | Defaultcurrent value | DescriptionWhether it is visible in shared lists |
Fieldopened |
Typeboolean | Requiredno | Defaultcurrent value | DescriptionWhether it is open for joining without an invitation |
Fieldarchived |
Typeboolean | Requiredno | Defaultcurrent value | DescriptionWhether the group is archived |
FieldisProject |
Typeboolean | Requiredno | Defaultcurrent value | DescriptionWhether it is a project. A collab group does not accept false — 422 BITRIX_ERROR |
Fieldkeywords |
Typestring | Requiredno | Defaultcurrent value | DescriptionKeywords for search |
The fields id, subjectName, membersCount, dateCreate, dateUpdate, dateActivity, siteId, imageUrl, isExtranet are read-only. Passing any of them in the body returns 400 READONLY_FIELD.
isExtranet is derived from the group's site bindings in Bitrix24. The names isExtranet, IS_EXTRANET, is_extranet and isextranet are rejected before the group is changed, whether the value is false or true, even if it repeats the current value. Remove this field from write bodies; reads still return the actual flag.
In POST /v1/workgroups/batch with action: create or action: update, this field causes 400 BATCH_ITEM_VALIDATION before the entire batch is sent. In POST /v1/batch, the rejected operation receives READONLY_FIELD in data.errors.<id>; the HTTP status is 400 if all operations are rejected, or 200 for a mixed result, with valid sibling operations executed.
Examples
curl — personal key
curl -X PATCH "https://vibecode.bitrix24.com/v1/workgroups/85" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"description": "Updated team description",
"opened": true,
"archived": false
}'
curl — OAuth application
curl -X PATCH "https://vibecode.bitrix24.com/v1/workgroups/85" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"description": "Updated team description",
"opened": true,
"archived": false
}'
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/workgroups/85', {
method: 'PATCH',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
description: 'Updated team description',
opened: true,
archived: false,
}),
})
const { success, data } = await res.json()
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/workgroups/85', {
method: 'PATCH',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
description: 'Updated team description',
opened: true,
archived: false,
}),
})
const { success, data } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
Fieldsuccess |
Typeboolean | DescriptionAlways true on success |
Fielddata |
Typeobject | DescriptionThe full workgroup object after the update — see all fields in Get a workgroup |
Response example
{
"success": true,
"data": {
"id": 85,
"siteId": "s1",
"name": "Marketing 2026",
"description": "Updated team description",
"dateCreate": "2026-05-12T08:14:21.000Z",
"dateUpdate": "2026-05-26T05:58:08.000Z",
"active": true,
"visible": true,
"opened": true,
"archived": false,
"subjectId": 1,
"ownerId": 1,
"keywords": "project,team",
"membersCount": 7,
"dateActivity": "2026-05-26T05:58:08.000Z",
"subjectName": "Workgroups",
"isProject": false,
"isExtranet": false
}
}
Error response example
Bitrix24 does not distinguish "the group does not exist" from "no permission to update":
{
"success": false,
"error": {
"code": "BITRIX_ERROR",
"message": "User has no permissions to update group"
}
}
Errors
| HTTP | error.code |
Description |
|---|---|---|
| HTTP400 | error.codeREADONLY_FIELD |
DescriptionA read-only field was passed in the body (id, subjectName, membersCount, dateCreate, dateUpdate, dateActivity, siteId, imageUrl, isExtranet) |
| HTTP422 | error.codeBITRIX_ERROR |
DescriptionBitrix24 declined the update. The text is in error.message. Typical reasons: validation error, value conflict, no permission to change, no workgroup with the specified id (the last two cases return the same message) |
| HTTP401 | error.codeMISSING_API_KEY |
DescriptionThe X-Api-Key header was not passed in the request |
| HTTP401 | error.codeINVALID_API_KEY |
DescriptionThe key is not recognized — no such key exists on the platform |
| HTTP403 | error.codeSCOPE_DENIED |
DescriptionThe key does not have the sonet_group scope |
Full list of common API errors — Errors.
Known specifics
- The
User has no permissions to update groupmessage is returned both when there is no workgroup with the specifiedidand when you have no permission to change it. To tell these two cases apart, make an additionalGET /v1/workgroups/:idrequest: a404response means the group does not exist, and a successful response means you have no permission to change it.