#Пакет операций над комментариями
POST /v1/tasks/:taskId/comments/batch
Массовое создание, обновление или удаление комментариев одной задачи. До 50 элементов за вызов. Каждый элемент обрабатывается независимо — ошибка одного не отменяет остальные.
#Параметры
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
taskId (path) |
number | да | ID задачи |
#Поля запроса (body)
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
action |
string | ★ | Тип операции: create, update или delete |
items |
array | при create / update |
Список элементов (до 50). Для create: [{ message: string }]. Для update: [{ id: number, message: string }] |
ids |
number[] | при delete |
Идентификаторы комментариев для удаления (до 50) |
#Примеры
#curl — личный ключ
curl -X POST "https://vibecode.bitrix24.tech/v1/tasks/289/comments/batch" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"action": "create",
"items": [
{ "message": "Шаг 1: подготовил черновик." },
{ "message": "Шаг 2: отправил на ревью." }
]
}'
#curl — OAuth-приложение
curl -X POST "https://vibecode.bitrix24.tech/v1/tasks/289/comments/batch" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"action": "create",
"items": [
{ "message": "Шаг 1: подготовил черновик." },
{ "message": "Шаг 2: отправил на ревью." }
]
}'
#JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/tasks/289/comments/batch', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
action: 'create',
items: [
{ message: 'Шаг 1: подготовил черновик.' },
{ message: 'Шаг 2: отправил на ревью.' },
],
}),
})
const { success, data } = await res.json()
data.forEach((item) => {
if (item.success) console.log(`#${item.index} → id=${item.id}`)
else console.log(`#${item.index} → ошибка: ${item.error}`)
})
#JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/tasks/289/comments/batch', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
action: 'create',
items: [
{ message: 'Шаг 1: подготовил черновик.' },
{ message: 'Шаг 2: отправил на ревью.' },
],
}),
})
const { success, data } = await res.json()
#Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | Всегда true — даже если все элементы упали, верхний уровень success. Смотрите статус каждого в data[i] |
data |
array | Массив результатов в том же порядке, что и items / ids запроса |
data[].index |
number | Индекс элемента (0-based) |
data[].success |
boolean | Результат конкретной операции |
data[].id |
number | null | ID комментария при create / update (для create на новой карточке может быть null — см. `POST /v1/tasks/:taskId/comments`) |
data[].error |
string | Код ошибки для упавшего элемента (GONE, BATCH_ITEM_VALIDATION, BITRIX_ERROR, INVALID_PARAMS) |
data[].message |
string | Текст ошибки для упавшего элемента |
#Пример ответа
action: create на новой карточке — обе записи попали в чат задачи:
{
"success": true,
"data": [
{ "index": 0, "success": true, "id": 36571 },
{ "index": 1, "success": true, "id": 36573 }
]
}
action: update на новой карточке — каждая попытка обновления превращается в GONE (метод недоступен):
{
"success": true,
"data": [
{
"index": 0,
"success": false,
"error": "GONE",
"message": "Bitrix24 disabled update/delete for task comments in the new task card. To remove a comment, delete the source task or ask a portal admin to remove the message via the chat UI."
}
]
}
#Пример ответа при ошибке
400 — некорректное значение action:
{
"success": false,
"error": {
"code": "INVALID_BATCH_ACTION",
"message": "Action must be one of: create, update, delete"
}
}
#Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 | INVALID_PARAMS |
taskId не положительное целое |
| 400 | INVALID_BATCH_ACTION |
action не равен create, update или delete |
| 400 | BATCH_ITEM_VALIDATION |
items (или ids при delete) пустой или не массив |
| 400 | BATCH_LIMIT_EXCEEDED |
В одном запросе передано более 50 элементов |
| 403 | SCOPE_DENIED |
API-ключ не имеет скоупа task |
| 401 | TOKEN_MISSING |
API-ключ не имеет настроенных токенов |
Ошибки отдельных элементов приходят внутри data[i].error:
| Код | Описание |
|---|---|
GONE |
Только для update / delete на новой карточке — операция недоступна на стороне Битрикс24 |
BATCH_ITEM_VALIDATION |
Элемент не прошёл валидацию (например, нет id или message, неверный тип) |
INVALID_PARAMS |
message отсутствует или превышает лимит длины |
BITRIX_ERROR |
Битрикс24 вернул ошибку для конкретного элемента (текст в message) |
Полный список общих ошибок API — Ошибки.
#Известные особенности
Верхний success всегда true, если запрос прошёл валидацию. Несколько упавших элементов внутри не превращают весь ответ в ошибку — это сделано специально, чтобы клиент мог обработать частичный результат. Перед использованием результата всегда проверяйте data[i].success для каждого элемента.
GONE приходит для каждого элемента отдельно. На новой карточке update / delete каждого элемента возвращает GONE, но общий ответ остаётся 200 success — весь пакет не отклоняется. В смешанных сценариях часть элементов на старой карточке проходит, часть на новой возвращает GONE.
#Смотрите также
- Создать комментарий — одиночный POST
- Обновить комментарий — одиночный PATCH (тот же контракт по карточкам)
- Удалить комментарий — одиночный DELETE
- Универсальный batch — объединение разных entity-операций в один HTTP-вызов
- Задачи — родительская сущность