[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-scrum\u002Ftasks\u002Fupdate":3,"docs-tabs-scrum\u002Ftasks\u002Fupdate":6},{"content":4,"lastmod":5},"## Разместить или переместить задачу в скраме\n\n`PATCH \u002Fv1\u002Fscrum\u002Ftasks\u002F:taskId`\n\nРазмещает задачу в скраме и перемещает её между бэклогом, спринтом и эпиком, задаёт стори-поинты и порядок сортировки. Передавайте только изменяемые поля.\n\n## Параметры\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|---------|\n| `taskId` | number | да | ID задачи (path-параметр). Источник: [`GET \u002Fv1\u002Ftasks`](\u002Fdocs\u002Fentities\u002Ftasks\u002Flist) |\n\n## Поля запроса (body)\n\nХотя бы одно поле обязательно.\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `epicId` | number | Привязка к эпику. `0` — отвязать от эпика. Источник: [`GET \u002Fv1\u002Fscrum\u002Fepics`](\u002Fdocs\u002Fscrum\u002Fepics\u002Flist) |\n| `entityId` | number | ID бэклога или спринта. Определяется автоматически — передавайте явно только чтобы положить задачу в конкретный спринт |\n| `storyPoints` | string \\| number | Стори-поинты, например `\"3\"` или `\"0.5\"`. Пустая строка очищает |\n| `sort` | number | Позиция в списке |\n| `sortFloat` | number | Позиция в списке. Приоритетнее `sort` |\n| `modifiedBy` | number | ID автора изменения. Источник: [`GET \u002Fv1\u002Fusers`](\u002Fdocs\u002Fentities\u002Fusers\u002Flist). `createdBy` размещения не изменяется |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X PATCH https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fscrum\u002Ftasks\u002F59 \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"epicId\": 11, \"storyPoints\": \"3\" }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X PATCH https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fscrum\u002Ftasks\u002F59 \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"epicId\": 11, \"storyPoints\": \"3\" }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fscrum\u002Ftasks\u002F59', {\n  method: 'PATCH',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({ epicId: 11, storyPoints: '3' }),\n})\nconst { data } = await res.json()\nconsole.log('Размещение:', data)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fscrum\u002Ftasks\u002F59', {\n  method: 'PATCH',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({ epicId: 11, storyPoints: '3' }),\n})\nconst { data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data.entityId` | number | ID бэклога или спринта, в котором лежит задача |\n| `data.epicId` | number | ID эпика. `0` — задача не привязана к эпику |\n| `data.storyPoints` | string | Стори-поинты, например `\"3\"`. Пустая строка — не заданы |\n| `data.sort` | number | Позиция в списке |\n| `data.sortFloat` | number | Позиция в списке. Приоритетнее `sort` |\n| `data.createdBy` | number | ID автора размещения |\n| `data.modifiedBy` | number | ID автора последнего изменения |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"entityId\": 1,\n    \"storyPoints\": \"3\",\n    \"epicId\": 11,\n    \"sort\": 255,\n    \"sortFloat\": 512,\n    \"createdBy\": 1,\n    \"modifiedBy\": 1\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n400 — у задачи нет рабочей группы, авторазмещение в бэклог невозможно:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"TASK_NOT_IN_GROUP\",\n    \"message\": \"Task 289 has no workgroup (GROUP_ID), so it cannot be placed in scrum. Move the task into a scrum project first (PATCH \u002Fv1\u002Ftasks\u002F:id { \\\"groupId\\\": N }) or pass entityId explicitly.\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `INVALID_PARAMS` | Пустое тело, нечисловое поле или попытка задать `createdBy` |\n| 400 | `TASK_NOT_IN_GROUP` | У задачи нет рабочей группы — авторазмещение в бэклог невозможно. Перенесите задачу в скрам-проект через `PATCH \u002Fv1\u002Ftasks\u002F:id { \"groupId\": N }` или передайте `entityId` явно |\n| 422 | `BACKLOG_NOT_RESOLVED` | Рабочая группа задачи — не скрам-проект, бэклог не найден |\n| 422 | `BITRIX_ERROR` | Задача не найдена или прочая ошибка Битрикс24, например `groupId` эпика и задачи не совпадают |\n| 403 | `SCOPE_DENIED` | У ключа нет скоупа `task` |\n| 403 | `WRITE_BLOCKED_READONLY_KEY` | Ключ в режиме «только чтение» |\n| 401 | `TOKEN_MISSING` | У ключа нет настроенных токенов |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n- **Бэклог определяется автоматически.** Если `entityId` опущен и задача ещё не в скраме, API находит бэклог скрам-проекта задачи по её рабочей группе и кладёт задачу туда. Задача, уже размещённая в скраме, сохраняет текущий бэклог или спринт.\n- **Доступ.** Размещать задачи может только пользователь Битрикс24, от имени которого работает ключ, с доступом к скрам-проекту задачи. Иначе портал вернёт `422 BITRIX_ERROR` с сообщением «Access denied».\n\n## Смотрите также\n\n- [Получить размещение задачи в скраме](\u002Fdocs\u002Fscrum\u002Ftasks\u002Fget)\n- [Список эпиков](\u002Fdocs\u002Fscrum\u002Fepics\u002Flist)\n- [Scrum](\u002Fdocs\u002Fscrum)\n- [Задачи](\u002Fdocs\u002Fentities\u002Ftasks)\n","2026-07-07",{}]