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

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

POST /v1/feedback/:id/comments

Добавляет комментарий к обращению. К комментарию можно приложить вложения.

Параметры

Параметр Тип Обяз. Описание
Параметр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 Типobject ОписаниеСозданный комментарий
Полеdata.id Типstring ОписаниеUUID комментария. В карточке обращения этот же ID приходит в comments[].id
Поле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": "NEW",
    "previousStatus": "NEW"
  }
}

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

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

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

Ошибки

HTTP Код Описание
HTTP400 КодVALIDATION_ERROR Описаниеbody короче 2 или длиннее 20000 символов, либо attachmentIds длиннее 5
HTTP403 КодFEEDBACK_SCOPE_REQUIRED ОписаниеКомментарий к чужому обращению без скоупа vibe:feedback. Автор своего обращения проходит без скоупа — см. «Известные особенности»
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеКлюч только для чтения — см. права доступа
HTTP404 КодNOT_FOUND ОписаниеОбращение не существует или недоступно ключу
HTTP409 КодFEEDBACK_CLOSED ОписаниеКомментарий автора к обращению, закрытому окончательно (ARCHIVED или WITHDRAWN). Обращение в статусе RESOLVED комментарий автора переоткрывает — см. «Известные особенности»
HTTP429 КодRATE_LIMITED ОписаниеБольше 20 комментариев в минуту. Счётчик общий на владельца ключа, а не на ключ. Действующее значение — в заголовке x-ratelimit-limit. Заголовок Retry-After — через сколько секунд повторять
HTTP401 КодMISSING_API_KEY ОписаниеНе передан заголовок X-Api-Key

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

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

Комментарий к чужому обращению меняет статус. Такой комментарий записывается как ответ платформы (authorType: PLATFORM) и по умолчанию переводит обращение в AWAITING_USER. Другой статус задаётся полем status в теле — значения как в обновлении. Поля feedbackStatus и previousStatus в ответе показывают статус после и до комментария.

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

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

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

Комментарий автора меняет статус только там, где ждали ответа. Из AWAITING_USER обращение переходит в NEEDS_REVIEW. На остальных открытых статусах — NEW, REVIEWING, NEEDS_REVIEW — статус сохраняется: разбор и так за командой. Поле updatedAt обновляется в любом случае, поэтому очередь, отсортированная по нему, покажет свежий ответ независимо от статуса.

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

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