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

Опросы

Опросы в Ленте через API не создаются: в REST API Битрикс24 создание опроса в Ленте официально не поддерживается. Существующие опросы можно читать и управлять ими. В чате опрос можно создать через API.

Скоуп: vote | Базовый URL: https://vibecode.bitrix24.tech/v1 | Авторизация: X-Api-Key

Доступ

Все операции требуют скоуп vote. При создании в личном диалоге, когда dialogId — ID пользователя или me, дополнительно нужен im, для chatN достаточно vote. Права текущего пользователя в Битрикс24 продолжают действовать. Опросом чата управляет автор сообщения, в Ленте нужны права управления постом.

Ключ Чтение Запись
КлючОбычный ключ «только чтение» ЧтениеВсе четыре GET-операции ЗаписьЗапрещена
КлючКлюч Коворка «портал только для чтения» ЧтениеЗапрещено ЗаписьЗапрещена
КлючКлюч компании ЧтениеЗапрещено ЗаписьЗапрещена

Все четыре GET-операции читают опрос и подписывают пользователя на события Битрикс24, поэтому для ключа Коворка с запретом записи в портал они недоступны. Методы опросов также недоступны через пакетные запросы.

Как найти опрос

В списке постов (GET /v1/posts) выберите записи с hasPoll: true. Затем передайте ID постов в GET /v1/polls?postIds=42.

В сообщениях чата (GET /v1/chats/:dialogId/messages) опрос отмечен полем data.messages[].params.componentId = "VoteMessage". Значение params.componentParams.id — это voteId, номер опроса Битрикс24. Для поиска прикрепления передавайте ID сообщения, а не voteId, в GET /v1/polls?messageIds=42.

В полученном объекте id — идентификатор прикрепления (pollId в путях API). Он отличается от voteId, ID поста и ID сообщения. Если прикрепление не распознано, source может отсутствовать.

Объект опроса

Поле Тип Описание
Полеid Типnumber ОписаниеID прикрепления для pollId
ПолеvoteId Типnumber ОписаниеНомер опроса Битрикс24
Полеsource Типobject ОписаниеНеобязательно: {type: "post", postId} или {type: "chatMessage", messageId}
Полеstatus Типstring Описаниеactive или finished
Полеanonymous Типboolean ОписаниеАнонимный опрос
ПолеallowRevote Типboolean ОписаниеРазрешено переголосование
ПолеresultsHidden Типboolean ОписаниеПризнак скрытия результатов в Битрикс24
ПолеresultsVisible Типboolean ОписаниеДоступны ли итоги текущему пользователю по правилам Битрикс24
ПолеvotersCount Типnumber | null ОписаниеСчётчик участников
Полеquestions Типarray ОписаниеТолько активные вопросы и ответы, в порядке сортировки Битрикс24
Полеquestions[].id Типnumber ОписаниеID вопроса
Полеquestions[].text Типstring ОписаниеТекст вопроса
Полеquestions[].multipleChoice Типboolean ОписаниеМожно выбрать несколько ответов
Полеquestions[].required Типboolean ОписаниеОтвет обязателен
Полеquestions[].votesCount Типnumber | null ОписаниеСчётчик голосов вопроса
Полеquestions[].answers Типarray ОписаниеВарианты ответа
Полеquestions[].answers[].id Типnumber ОписаниеID ответа для голосования и списка участников
Полеquestions[].answers[].text Типstring ОписаниеТекст ответа
Полеquestions[].answers[].votesCount Типnumber | null ОписаниеСчётчик голосов ответа
Полеquestions[].answers[].percent Типnumber | null ОписаниеПроцент из Битрикс24
ПолеmyVote.voted Типboolean ОписаниеГолосовал ли текущий пользователь
ПолеmyVote.answerIds Типnumber[] ОписаниеВыбранные текущим пользователем ответы
Полеpermissions.canVote Типboolean ОписаниеМожно проголосовать
Полеpermissions.canRevote Типboolean ОписаниеМожно переголосовать
Полеpermissions.canManage Типboolean ОписаниеМожно управлять опросом

Результаты и анонимность

Итоги закрыты при resultsHidden: true или пока опрос активен, пользователь может голосовать и ещё не голосовал. Исключение — автор опроса, если Битрикс24 сообщает об авторстве: так бывает в опросах чатов на поддерживающих версиях портала. Права управления постом или сообщением итоги не открывают. Автору опроса Ленты скрытые итоги доступны в интерфейсе Битрикс24. При недостающих данных о правах итоги закрываются, а завершённый опрос без скрытия итогов доступен. При resultsVisible: false поля votersCount, questions[].votesCount, questions[].answers[].votesCount и percent равны null, а у ответов voters: [] и votersComplete: false во всех ответах API с объектом опроса.

В анонимном опросе проголосовавших не видно никому, включая автора и администратора: счётчики доступны, если resultsVisible: true. В результатах voters всегда пуст и votersComplete равен false. Для открытого опроса результаты содержат ограниченную выборку участников по каждому ответу, полный список читается отдельной операцией. Счётчики не кэшируются.

Отчёт Excel и ссылки на итоги через API не отдаются. Выгрузить отчёт можно в интерфейсе Битрикс24.

Безопасное выполнение записи

idempotencyKey при создании — только UUID. Повтор с тем же ключом и тем же телом на поддерживающей версии портала возвращает уже созданный опрос в data.poll. Поле data.voteId при повторе приходит новым числом, которое не находит ни один опрос, поэтому номер опроса берите из data.poll.voteId. Новый опрос — новый ключ. Битрикс24 не сравнивает тела: не меняйте вопрос, ответы или настройки при повторе. Если ключ не задан, сервер генерирует новый UUID для каждого запроса. Защита от дублей зависит от версии портала.

Платформа не повторяет записи автоматически. При 502 POLL_CREATE_OUTCOME_UNKNOWN сначала посмотрите чат: сообщение могло появиться. При других 502 …_OUTCOME_UNKNOWN прочитайте опрос и решите, нужна ли повторная запись. Не создавайте новый ключ сразу после неизвестного исхода.

При переголосовании в Ленте, если опрос правят в момент голоса, Битрикс24 может стереть прежний голос — так же, как в интерфейсе. После ошибки проверьте myVote.

Удаление

Отдельного удаления опроса нет. Удалите содержащий его пост или сообщение существующим маршрутом.

Быстрый старт

Прочитать опрос по ID прикрепления:

Terminal
curl -H "X-Api-Key: YOUR_API_KEY" "https://vibecode.bitrix24.tech/v1/polls/25"

Поля ответа — Получить опрос.

Полный пример

Создать опрос в чате, проголосовать, прочитать итоги и остановить опрос:

javascript
const BASE = 'https://vibecode.bitrix24.tech/v1'
const headers = { 'X-Api-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' }

async function call(method, path, body) {
  const res = await fetch(`${BASE}${path}`, {
    method,
    headers: body ? headers : { 'X-Api-Key': headers['X-Api-Key'] },
    body: body ? JSON.stringify(body) : undefined,
  })
  const json = await res.json()
  if (!json.success) throw new Error(`${res.status} ${json.error.code}: ${json.error.message}`)
  return json
}

// 1. Создать опрос в чате
const created = await call('POST', '/chats/chat5/polls', {
  question: 'When?',
  answers: ['Now', 'Later'],
  idempotencyKey: crypto.randomUUID(),
})
const poll = created.data.poll
console.log('Опрос', poll.id, 'в сообщении', created.data.messageId)

// 2. Проголосовать за первый ответ
const firstAnswer = poll.questions[0].answers[0].id
await call('POST', `/polls/${poll.id}/vote`, { answerIds: [firstAnswer] })

// 3. Прочитать итоги
const results = await call('GET', `/polls/${poll.id}/results`)
for (const answer of results.data.questions[0].answers) {
  console.log(answer.text, answer.votesCount, `${answer.percent}%`)
}

// 4. Остановить опрос
await call('POST', `/polls/${poll.id}/stop`)
const finished = await call('GET', `/polls/${poll.id}`)
console.log('Статус:', finished.data.status)

Справочник эндпоинтов

Метод Путь Bitrix24 метод Описание
МетодPOST Путь/v1/chats/:dialogId/polls Bitrix24 методvote.Integration.Im.send ОписаниеСоздать опрос в чате
МетодGET Путь/v1/polls/:pollId Bitrix24 методvote.AttachedVote.get ОписаниеПолучить опрос
МетодGET Путь/v1/polls Bitrix24 методvote.AttachedVote.getMany ОписаниеНайти опросы по постам или сообщениям
МетодGET Путь/v1/polls/:pollId/results Bitrix24 методvote.AttachedVote.getWithVoted ОписаниеРезультаты опроса
МетодGET Путь/v1/polls/:pollId/answers/:answerId/voters Bitrix24 методvote.AttachedVote.getAnswerVoted ОписаниеСписок проголосовавших за ответ
МетодPOST Путь/v1/polls/:pollId/vote Bitrix24 методvote.AttachedVote.vote ОписаниеПроголосовать или переголосовать
МетодDELETE Путь/v1/polls/:pollId/vote Bitrix24 методvote.AttachedVote.recall ОписаниеОтозвать голос
МетодPOST Путь/v1/polls/:pollId/stop Bitrix24 методvote.AttachedVote.stop ОписаниеОстановить опрос
МетодPOST Путь/v1/polls/:pollId/resume Bitrix24 методvote.AttachedVote.resume ОписаниеВозобновить опрос

Коды ошибок

Ошибки опросов

HTTP Код Описание
HTTP400 КодINVALID_ANSWERS ОписаниеНабор answerIds не подходит к вопросам опроса
HTTP403 КодPOLL_ACCESS_DENIED ОписаниеБитрикс24 запретил операцию с опросом
HTTP403 КодCHAT_ACCESS_DENIED ОписаниеНет доступа к чату, в котором создаётся опрос
HTTP403 КодRESULTS_HIDDEN ОписаниеИтоги закрыты по правилам Битрикс24
HTTP404 КодPOLL_NOT_FOUND ОписаниеОпрос не найден или недоступен ключу
HTTP404 КодANSWER_NOT_FOUND ОписаниеБитрикс24 явно отказал в доступе к списку участников ответа
HTTP404 КодCHAT_NOT_FOUND ОписаниеНе удалось определить личный диалог
HTTP409 КодPOLL_FINISHED ОписаниеБитрикс24 сообщил, что опрос завершён
HTTP409 КодPOLL_CREATE_IN_PROGRESS ОписаниеСоздание с этим idempotencyKey ещё выполняется
HTTP409 КодIDEMPOTENCY_KEY_CONFLICT ОписаниеidempotencyKey уже использован другим пользователем или в другом чате
HTTP502 КодPOLL_CREATE_OUTCOME_UNKNOWN, POLL_VOTE_OUTCOME_UNKNOWN, POLL_RECALL_OUTCOME_UNKNOWN, POLL_STOP_OUTCOME_UNKNOWN, POLL_RESUME_OUTCOME_UNKNOWN ОписаниеЗапись ушла в Битрикс24, а исход не подтверждён. Порядок действий — раздел «Безопасное выполнение записи» выше

Системные ошибки

HTTP Код Описание
HTTP400 КодINVALID_PARAMS ОписаниеНекорректный ID в пути или параметр запроса
HTTP401 КодTOKEN_MISSING ОписаниеНет пользовательской сессии Битрикс24
HTTP403 КодSCOPE_DENIED ОписаниеНет скоупа vote или, для личного диалога, im
HTTP403 КодCOWORK_READONLY ОписаниеОперация запрещена для ключа Коворка «портал только для чтения»
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеКлюч разрешает только чтение
HTTP422 КодBITRIX_ERROR ОписаниеБитрикс24 отклонил запрос

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

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