For AI agents: markdown of this page — /docs-content-en/polls/vote.md documentation index — /llms.txt

Vote or revote

POST /v1/polls/:pollId/vote

Votes or replaces the current user's vote. Before writing, validates active questions: each required question needs an answer; a single-choice question accepts at most one answer.

Legacy text answers (TEXT/TEXTAREA) cannot be selected through the API: 400 INVALID_ANSWERS. In a legacy question you cannot select more than one radio answer or more than one dropdown answer, even with multipleChoice: true: Bitrix24 would keep only the first, so such a ballot is rejected with 400 INVALID_ANSWERS before recording.

Scope: vote. Key restrictions: Polls.

Parameters

Parameter Type Required Default Description
ParameterpollId (path) Typenumber Requiredyes Default— DescriptionPositive attachment ID: the id field from poll discovery, rather than voteId

Request body

Field Type Required Description
FieldanswerIds Typenumber[] Requiredyes DescriptionNon-empty array of unique positive integer IDs of active answers from questions[].answers[].id

When revoting in the Feed, a concurrent poll edit may erase the previous vote in Bitrix24, just as in the interface. Check myVote after an error.

The write is attempted once, without automatic replay. After an unknown outcome, read the poll and decide whether another write is needed.

Examples

curl — personal key

Terminal
curl -X POST "https://vibecode.bitrix24.com/v1/polls/7/vote" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"answerIds": [22]}'

curl — OAuth application

Terminal
curl -X POST "https://vibecode.bitrix24.com/v1/polls/7/vote" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"answerIds": [22]}'

JavaScript — personal key

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/polls/7/vote', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"answerIds": [22]}),
})
const result = await res.json()

JavaScript — OAuth application

javascript
const res = await fetch('https://vibecode.bitrix24.com/v1/polls/7/vote', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"answerIds": [22]}),
})
const result = await res.json()

Response fields

Field Type Description
Fieldsuccess Typeboolean Descriptiontrue on success
Fielddata Typeobject DescriptionPoll object

Response example

Illustrative response based on the normalizer and test fixtures; not a live Bitrix24 response.

JSON
{
  "success": true,
  "data": {
    "id": 7,
    "voteId": 8,
    "status": "active",
    "anonymous": true,
    "allowRevote": true,
    "resultsHidden": true,
    "resultsVisible": true,
    "votersCount": 3,
    "questions": [
      {
        "id": 10,
        "text": "First",
        "multipleChoice": false,
        "required": false,
        "votesCount": 0,
        "answers": [
          {
            "id": 11,
            "text": "One",
            "votesCount": 0,
            "percent": 0
          },
          {
            "id": 12,
            "text": "Two",
            "votesCount": 0,
            "percent": 0
          }
        ]
      },
      {
        "id": 20,
        "text": "Second",
        "multipleChoice": true,
        "required": true,
        "votesCount": 2,
        "answers": [
          {
            "id": 22,
            "text": "A",
            "votesCount": 2,
            "percent": 100
          },
          {
            "id": 23,
            "text": "B",
            "votesCount": 0,
            "percent": 0
          }
        ]
      }
    ],
    "myVote": {
      "voted": true,
      "answerIds": [
        22
      ]
    },
    "permissions": {
      "canVote": false,
      "canRevote": true,
      "canManage": true
    }
  }
}

Errors

HTTP Code Cause and action
HTTP400 CodeINVALID_PARAMS Cause and actionInvalid ID or request parameter
HTTP401 CodeTOKEN_MISSING Cause and actionNo Bitrix24 user session
HTTP403 CodeSCOPE_DENIED Cause and actionRequired scope is missing
HTTP403 CodeCOWORK_READONLY Cause and actionOperation forbidden for a Cowork portal-readonly key
HTTP403 CodeWRITE_BLOCKED_READONLY_KEY Cause and actionThe key permits reads only
HTTP404 CodePOLL_NOT_FOUND Cause and actionPoll missing or inaccessible
HTTP400 CodeINVALID_ANSWERS Cause and actionRequired answers missing, or extra or inactive answers selected
HTTP409 CodePOLL_FINISHED Cause and actionThe poll has finished
HTTP403 CodePOLL_ACCESS_DENIED Cause and actionBitrix24 denied the operation
HTTP422 CodeBITRIX_ERROR Cause and actionBitrix24 rejected the request, for example because the method is unavailable in this version
HTTP502 CodePOLL_VOTE_OUTCOME_UNKNOWN Cause and actionOutcome unknown: read the poll first

Other authentication refusals, limits and shared errors: error codes.

JSON
{
  "success": false,
  "error": {
    "code": "INVALID_PARAMS",
    "message": "Invalid poll parameters."
  }
}