Для AI-агентов: markdown этой страницы — /docs-content/polls/vote.md индекс документации — /llms.txt
Проголосовать или переголосовать
POST /v1/polls/:pollId/vote
Голосует или заменяет голос текущего пользователя. До записи проверяет активные вопросы: для каждого обязательного нужен ответ, для вопроса с одним вариантом — не более одного.
Текстовые ответы старых опросов (TEXT/TEXTAREA) через API не выбираются: 400 INVALID_ANSWERS. В вопросе старого формата нельзя выбрать больше одного ответа-переключателя и больше одного ответа из выпадающего списка, даже при multipleChoice: true: Битрикс24 оставил бы только первый, поэтому такой бюллетень отклоняется 400 INVALID_ANSWERS до записи.
Скоуп: vote. Ограничения ключей — Опросы.
Параметры
| Параметр | Тип | Обяз. | По умолч. | Описание |
|---|---|---|---|---|
ПараметрpollId (path) |
Типnumber | Обяз.да | По умолч.— | ОписаниеПоложительный ID прикрепления: поле id из поиска опросов, не voteId |
Поля запроса (body)
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
ПолеanswerIds |
Типnumber[] | Обяз.да | ОписаниеНепустой массив уникальных положительных целых ID активных ответов из questions[].answers[].id |
При переголосовании в Ленте одновременное редактирование опроса может стереть предыдущий голос в Битрикс24 — так же, как в интерфейсе. После ошибки проверьте myVote.
Запись выполняется один раз, без автоматического повтора. После неизвестного исхода прочитайте опрос и решите, нужна ли повторная запись.
Примеры
curl — личный ключ
curl -X POST "https://vibecode.bitrix24.tech/v1/polls/25/vote" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"answerIds": [85]}'
curl — OAuth-приложение
curl -X POST "https://vibecode.bitrix24.tech/v1/polls/25/vote" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{"answerIds": [85]}'
JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/polls/25/vote', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({"answerIds": [85]}),
})
const result = await res.json()
JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/polls/25/vote', {
method: 'POST',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({"answerIds": [85]}),
})
const result = await res.json()
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
Полеsuccess |
Типboolean | Описаниеtrue при успехе |
Полеdata |
Типobject | ОписаниеОбъект опроса |
Пример ответа
{
"success": true,
"data": {
"id": 25,
"voteId": 33,
"status": "active",
"anonymous": false,
"allowRevote": true,
"resultsHidden": false,
"resultsVisible": true,
"votersCount": 1,
"questions": [
{
"id": 35,
"text": "When?",
"multipleChoice": false,
"required": false,
"votesCount": 1,
"answers": [
{ "id": 85, "text": "Now", "votesCount": 1, "percent": 100 },
{ "id": 87, "text": "Later", "votesCount": 0, "percent": 0 }
]
}
],
"myVote": { "voted": true, "answerIds": [85] },
"permissions": { "canVote": false, "canRevote": true, "canManage": true }
}
}
Пример ответа при ошибке
400 — передан пустой answerIds:
{
"success": false,
"error": {
"code": "INVALID_ANSWERS",
"message": "Provide active answers for every required question and at most one answer for a single-choice question."
}
}
Ошибки
| HTTP | Код | Причина и действие |
|---|---|---|
| HTTP400 | КодINVALID_PARAMS |
Причина и действиеpollId не положительное целое число |
| HTTP401 | КодTOKEN_MISSING |
Причина и действиеНет пользовательской сессии Битрикс24 |
| HTTP403 | КодSCOPE_DENIED |
Причина и действиеНет скоупа vote |
| HTTP403 | КодCOWORK_READONLY |
Причина и действиеОперация запрещена для ключа Коворка «портал только для чтения» |
| HTTP403 | КодWRITE_BLOCKED_READONLY_KEY |
Причина и действиеКлюч разрешает только чтение |
| HTTP404 | КодPOLL_NOT_FOUND |
Причина и действиеОпрос не найден или недоступен |
| HTTP400 | КодINVALID_ANSWERS |
Причина и действиеНе выбраны обязательные ответы, выбран лишний или неактивный вариант |
| HTTP409 | КодPOLL_FINISHED |
Причина и действиеБитрикс24 сообщил, что опрос завершён |
| HTTP403 | КодPOLL_ACCESS_DENIED |
Причина и действиеБитрикс24 запретил операцию |
| HTTP422 | КодBITRIX_ERROR |
Причина и действиеБитрикс24 отклонил запрос, например метод недоступен в этой версии |
| HTTP502 | КодPOLL_VOTE_OUTCOME_UNKNOWN |
Причина и действиеЗапрос ушёл в Битрикс24, а исход не подтверждён: таймаут, обрыв соединения или ответ «Internal server error.». Тем же кодом отклоняется голос в остановленном опросе, голос при этом не записывается. Прочитайте опрос и сверьте status и myVote, прежде чем повторять |
Другие отказы авторизации, лимиты и общие ошибки — Ошибки.