For AI agents: markdown of this page — /docs-content-en/scrum/tasks/update.md documentation index — /llms.txt
Place or move a task in scrum
PATCH /v1/scrum/tasks/:taskId
Places a task in scrum and moves it between backlog, sprint and epic, sets story points and sort order. Pass only the fields you want to change.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
taskId |
number | yes | Task ID (path parameter). Source: GET /v1/tasks |
Request fields (body)
At least one field is required.
| Field | Type | Description |
|---|---|---|
epicId |
number | Epic binding. 0 — unbind from the epic. Source: GET /v1/scrum/epics |
entityId |
number | Backlog or sprint ID. Resolved automatically — pass it explicitly only to place the task into a specific sprint |
storyPoints |
string | number | Story points, for example "3" or "0.5". An empty string clears them |
sort |
number | Position in the list |
sortFloat |
number | Position in the list. Takes priority over sort |
modifiedBy |
number | ID of the editor. Source: GET /v1/users. The placement's createdBy does not change |
Examples
curl — personal key
curl -X PATCH https://vibecode.bitrix24.com/v1/scrum/tasks/59 \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "epicId": 11, "storyPoints": "3" }'
curl — OAuth app
curl -X PATCH https://vibecode.bitrix24.com/v1/scrum/tasks/59 \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "epicId": 11, "storyPoints": "3" }'
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/scrum/tasks/59', {
method: 'PATCH',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({ epicId: 11, storyPoints: '3' }),
})
const { data } = await res.json()
console.log('Placement:', data)
JavaScript — OAuth app
const res = await fetch('https://vibecode.bitrix24.com/v1/scrum/tasks/59', {
method: 'PATCH',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({ epicId: 11, storyPoints: '3' }),
})
const { data } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
success |
boolean | Always true on success |
data.entityId |
number | ID of the backlog or sprint the task is in |
data.epicId |
number | Epic ID. 0 — the task is not bound to an epic |
data.storyPoints |
string | Story points, for example "3". Empty string — not set |
data.sort |
number | Position in the list |
data.sortFloat |
number | Position in the list. Takes priority over sort |
data.createdBy |
number | ID of the placement author |
data.modifiedBy |
number | ID of the last editor |
Response example
{
"success": true,
"data": {
"entityId": 1,
"storyPoints": "3",
"epicId": 11,
"sort": 255,
"sortFloat": 512,
"createdBy": 1,
"modifiedBy": 1
}
}
Error response example
400 — the task has no workgroup, auto-placement into the backlog is impossible:
{
"success": false,
"error": {
"code": "TASK_NOT_IN_GROUP",
"message": "Task 289 has no workgroup (GROUP_ID), so it cannot be placed in scrum. Move the task into a scrum project first (PATCH /v1/tasks/:id { \"groupId\": N }) or pass entityId explicitly."
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 400 | INVALID_PARAMS |
Empty body, a non-numeric field, or an attempt to set createdBy |
| 400 | TASK_NOT_IN_GROUP |
The task has no workgroup — auto-placement into the backlog is impossible. Move the task into a scrum project via PATCH /v1/tasks/:id { "groupId": N } or pass entityId explicitly |
| 422 | BACKLOG_NOT_RESOLVED |
The task's workgroup is not a scrum project, no backlog found |
| 422 | BITRIX_ERROR |
The task was not found or another Bitrix24 error, for example the groupId of the epic and the task do not match |
| 403 | SCOPE_DENIED |
The key lacks the task scope |
| 403 | WRITE_BLOCKED_READONLY_KEY |
The key is in read-only mode |
| 401 | TOKEN_MISSING |
The key has no configured tokens |
Full list of common API errors — Errors.
Known specifics
- The backlog is resolved automatically. If
entityIdis omitted and the task is not yet in scrum, the API finds the backlog of the task's scrum project by its workgroup and places the task there. A task already placed in scrum keeps its current backlog or sprint. - Access. Only the Bitrix24 user the key acts as, with access to the task's scrum project, can place tasks. Otherwise the Bitrix24 account returns
422 BITRIX_ERRORwith the message "Access denied".