Для AI-агентов: markdown этой страницы — /docs-content/feedback/comments.md индекс документации — /llms.txt

Добавить комментарий

POST /v1/feedback/:id/comments

Добавляет комментарий к обращению. Требует скоуп vibe:feedback. К комментарию можно приложить вложения. Не больше 20 комментариев в минуту на владельца ключа.

Параметры

Параметр Тип Обяз. Описание
id (path) string да UUID обращения

Поля запроса (body)

Поле Тип Обяз. Описание
body string да Текст комментария, 2–20000 символов
status string нет Новый статус обращения, применяется вместе с комментарием. Значения — как в обновлении
attachmentIds array нет До 5 идентификаторов заранее загруженных вложений. Как загрузить — Загрузить вложение

Примеры

curl — личный ключ

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/feedback/a1b2c3d4-1111-2222-3333-444455556666/comments \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "body": "Воспроизвёл на пустом filter, приложил лог запроса." }'

curl — OAuth-приложение

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/feedback/a1b2c3d4-1111-2222-3333-444455556666/comments \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "body": "Воспроизвёл на пустом filter, приложил лог запроса." }'

JavaScript — личный ключ

javascript
const res = await fetch(
  'https://vibecode.bitrix24.tech/v1/feedback/a1b2c3d4-1111-2222-3333-444455556666/comments',
  {
    method: 'POST',
    headers: { 'X-Api-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' },
    body: JSON.stringify({ body: 'Воспроизвёл на пустом filter, приложил лог запроса.' }),
  },
)
const { data } = await res.json()

JavaScript — OAuth-приложение

javascript
const res = await fetch(
  'https://vibecode.bitrix24.tech/v1/feedback/a1b2c3d4-1111-2222-3333-444455556666/comments',
  {
    method: 'POST',
    headers: {
      'X-Api-Key': 'YOUR_APP_KEY',
      'Authorization': 'Bearer USER_SESSION_TOKEN',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ body: 'Воспроизвёл на пустом filter, приложил лог запроса.' }),
  },
)
const { data } = await res.json()

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data.id string UUID комментария
data.authorType string Кто оставил комментарий: USER или PLATFORM
data.body string Текст комментария
data.createdAt string Дата создания (ISO 8601)
data.feedbackStatus string Статус обращения после комментария
data.previousStatus string Статус обращения до комментария

Пример ответа

JSON
{
  "success": true,
  "data": {
    "id": "61ae2a00-a7ac-416f-85cc-99873c767d3b",
    "authorType": "USER",
    "body": "Воспроизвёл на пустом filter, приложил лог запроса.",
    "createdAt": "2026-04-19T11:00:00.000Z",
    "feedbackStatus": "AWAITING_USER",
    "previousStatus": "NEW"
  }
}

Пример ответа при ошибке

403 — комментарий без скоупа vibe:feedback:

JSON
{
  "success": false,
  "error": {
    "code": "FEEDBACK_SCOPE_REQUIRED",
    "message": "Requires management key or vibe:feedback scope"
  }
}

Ошибки

HTTP Код Описание
400 VALIDATION_ERROR body короче 2 или длиннее 20000 символов, либо attachmentIds длиннее 5
403 FEEDBACK_SCOPE_REQUIRED Комментарий к чужому обращению без скоупа vibe:feedback. Автор своего обращения проходит без скоупа — см. «Известные особенности»
404 NOT_FOUND Обращение не существует или недоступно ключу
409 FEEDBACK_CLOSED Комментарий автора к обращению, закрытому окончательно (ARCHIVED или WITHDRAWN). Обращение в статусе RESOLVED комментарий автора ПЕРЕОТКРЫВАЕТ — см. «Известные особенности»
429 RATE_LIMITED Больше 20 комментариев в минуту. Счётчик общий на владельца ключа, а не на ключ. Заголовок Retry-After — через сколько секунд повторять
401 MISSING_API_KEY Не передан заголовок X-Api-Key

Полный список общих ошибок API — Ошибки.

Известные особенности

Комментарий может изменить статус. По умолчанию комментарий переводит обращение в AWAITING_USER. Чтобы задать другой статус, передайте status в теле — значения как в обновлении. Поля feedbackStatus и previousStatus в ответе показывают статус после и до комментария.

Автор комментирует своё обращение без скоупа. Если запрос идёт тем же ключом, которым создано обращение, комментарий проходит без скоупа vibe:feedback: проверка на автора выполняется до проверки скоупа. Скоуп нужен только для комментариев к чужим обращениям.

Автором считается человек, а не ключ. Обращение, созданное другим вашим ключом или заведённое из кабинета, для вас тоже своё: комментарий записывается как сообщение пользователя (authorType: USER), поле resolution не переписывается, а переданный status игнорируется — статус меняют через обновление. Одно условие: такому ключу нужен скоуп vibe:feedback — без скоупа своим считается только тот ключ, которым обращение и создано. Ключ приложения и управляющий ключ под это правило не подпадают вовсе: у них владелец ключа и тот, кто пишет, — разные лица.

Комментарий автора возвращает решённое обращение в работу. Если обращение в статусе RESOLVED, ваш комментарий переводит его в NEEDS_REVIEW и снимает отметку о закрытии (resolvedAt, resolvedBy); текст решения при этом сохраняется. Статусы ARCHIVED и WITHDRAWN остаются закрытыми — на них по-прежнему приходит 409 FEEDBACK_CLOSED.

Поле resolution заполняет только закрывающий комментарий. Комментарий с целевым статусом RESOLVED или ARCHIVED записывает своё тело в resolution; при любом другом статусе поле не меняется. Текст такого комментария всё равно доходит до автора письмом и виден в ленте.

Смотрите также