# Список проголосовавших за ответ

`GET /v1/polls/:pollId/answers/:answerId/voters`

Возвращает участников, выбравших конкретный ответ, страницами по 50. Видимость определяет Битрикс24, в анонимном опросе личности участников недоступны никому.

Сначала читается опрос для проверки видимости итогов по правилам Битрикс24. При `resultsVisible: false` возвращается `403 RESULTS_HIDDEN`, список участников не запрашивается. Это чтение подписывает пользователя на события, поэтому ключ Коворка «портал только для чтения» получает `403 COWORK_READONLY` до обращения к порталу.

**Скоуп:** `vote`. Ограничения ключей — [Опросы](/docs/polls).

## Параметры

| Параметр | Тип | Обяз. | По умолч. | Описание |
| --- | --- | --- | --- | --- |
| `pollId` (path) | number | да | — | Положительный ID прикрепления: поле `id` из [поиска опросов](/docs/polls/list), не `voteId` |
| `answerId` (path) | number | да | — | Положительный ID из `questions[].answers[].id` [опроса](/docs/polls/get) |
| `page` (query) | number | нет | 1 | Положительное целое. Фиксированная страница — 50 участников |

## Примеры

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

```bash
curl "https://vibecode.bitrix24.tech/v1/polls/25/answers/85/voters?page=1" \
  -H "X-Api-Key: YOUR_API_KEY"
```

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

```bash
curl "https://vibecode.bitrix24.tech/v1/polls/25/answers/85/voters?page=1" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/polls/25/answers/85/voters?page=1', {
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
  },
})
const result = await res.json()
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/polls/25/answers/85/voters?page=1', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})
const result = await res.json()
```

## Поля ответа

| Поле | Тип | Описание |
| --- | --- | --- |
| `success` | boolean | `true` при успехе |
| `data` | array | Участники выбранного ответа |
| `data[].id` | number | ID пользователя |
| `data[].name` | string | Имя |
| `data[].position` | string \| null | Должность |
| `data[].avatarUrl` | string \| null | Ссылка на аватар |
| `meta.page` | number | Текущая страница |
| `meta.pageSize` | number | 50 |
| `meta.total` | number | Общее количество из Битрикс24 |
| `meta.nextPage` | number \| null | Следующая страница, `null` на последней |

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

```json
{
  "success": true,
  "data": [
    { "id": 1317, "name": "Anna Smith", "position": null, "avatarUrl": "https://example.bitrix24.ru/upload/main/avatar.png" }
  ],
  "meta": {
    "page": 1,
    "pageSize": 50,
    "total": 1,
    "nextPage": null
  }
}
```

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

400 — `page` равен нулю:

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

## Ошибки

| HTTP | Код | Причина и действие |
| --- | --- | --- |
| 400 | `INVALID_PARAMS` | `pollId`, `answerId` или `page` не положительное целое число |
| 401 | `TOKEN_MISSING` | Нет пользовательской сессии Битрикс24 |
| 403 | `SCOPE_DENIED` | Нет скоупа `vote` |
| 403 | `RESULTS_HIDDEN` | Итоги закрыты по правилам Битрикс24 |
| 403 | `POLL_ACCESS_DENIED` | Битрикс24 отказал в чтении опроса при проверке видимости итогов |
| 403 | `COWORK_READONLY` | Операция запрещена для ключа Коворка «портал только для чтения» |
| 404 | `POLL_NOT_FOUND` | Опрос не найден или недоступен |
| 404 | `ANSWER_NOT_FOUND` | Битрикс24 явно отказал в доступе к списку участников ответа |
| 422 | `BITRIX_ERROR` | Битрикс24 отклонил запрос. Если ответа с таким `answerId` нет в этом опросе, приходит `b24Code: "403"` с текстом «Internal server error.» — сверьте `answerId` с `questions[].answers[].id` [опроса](/docs/polls/get) |

Другие отказы авторизации, лимиты и общие ошибки — [Ошибки](/docs/errors).

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

- [Опросы](/docs/polls)
- [Получить опрос](/docs/polls/get)
- [Результаты опроса](/docs/polls/results)
