Опросы
Управляйте опросами, работайте со скрытыми переменными и настройками
Обзор
API позволяет не только получать список опросов, но и полностью управлять их жизненным циклом: создавать опросы, настраивать структуру вопросов, менять темы, настраивать логику переходов, публиковать, архивировать и работать со скрытыми переменными. Все эндпоинты требуют авторизации через Bearer токен.
Скачайте markdown‑версию раздела «Опросы (Quizzes)» для использования в ChatGPT / других LLM:
Создание и редактирование опроса
Полный цикл: создать опрос → добавить и настроить вопросы (типы, настройки) → сохранить → применить тему → опубликовать. Ниже — эндпоинты, типы вопросов и их параметры.
1. Создать опрос
Создаёт новый опрос в указанной папке рабочего пространства текущего пользователя. Проверяются наличие воркспейса, папки и дневной лимит создания опросов.
Тело запроса (JSON)
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| folder_id | integer | Да | ID папки рабочего пространства, в которой будет создан опрос. |
curl -X POST "https://api.webask.io/api/v3/service/quiz" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"folder_id": 5}'
Пример успешного ответа (201)
{
"id": 124,
"workspace_id": 1,
"name": "Опрос #12",
"virtual_id": "abc12xyz",
"url_preview": "https://example.com/quiz/124/preview",
"url_shared": "https://example.com/q/abc12xyz",
"is_published": false
}
Основные ошибки
| HTTP | Код | Описание |
|---|---|---|
| 400 |
workspace_not_found,
folder_not_found
|
Не найдено рабочее пространство пользователя или указанная папка. |
| 401 |
user_not_authenticated
|
Не передан или недействителен токен авторизации. |
| 403 |
quiz_limit_today
|
Превышен дневной лимит создания опросов для пользователя. |
| 422 |
validation_error
|
Ошибка валидации тела запроса (например, не указан folder_id).
|
2. Вопросы опроса (типы и настройки)
После POST /quiz опрос пустой. Вопросы добавляются и редактируются через
POST /quiz/{id}/save: передаёте ids (порядок) и
entities (конфигурация каждого вопроса). Рекомендуется брать структуру из GET /quiz/{id} (поле widgets), вносить изменения и отправлять обратно.
Сохраняет структуру вопросов опроса: передаётся массив ids (порядок экранов)
и объект entities (конфигурация каждого вопроса). Формат совпадает с полем
widgets в ответе GET /quiz/{id}.
Рекомендуется брать текущую структуру из ответа, вносить изменения и отправлять обратно.
Тело запроса (JSON)
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
| ids | array | Да | Порядок ID экранов/вопросов (см. ниже) |
| entities | object | Да | Конфигурация каждого вопроса: ключ = ID из ids |
Параметр ids
Порядок элементов задаёт порядок показа вопросов респонденту.
| Значение | Описание |
|---|---|
| welcome | Экран приветствия (начальный) |
| submit | Экран завершения с кнопкой отправки |
| UUID | ID обычного вопроса (например a1b2c3d4-e5f6-7890-abcd-ef1234567890) |
Основные поля (есть во всех вопросах)
| Поле | Тип | Описание |
|---|---|---|
| type | string | Обязательно. Тип вопроса (см. таблицу ниже) |
| title | string | Заголовок вопроса |
| withTitle | boolean | Показывать заголовок (default: true) |
| description | string | Описание под заголовком |
| withDescription | boolean | Показывать описание (default: true) |
| isRequired | boolean | Обязательный ответ (default: false) |
| isBlocked | boolean | Вопрос заблокирован (default: false) |
| multimedia | object \| null | Картинка/видео/аудио в заголовке (см. ниже) |
| filling_time_enabled | boolean | Таймер на ответ |
| filling_time_seconds | integer | Время на ответ в секундах |
Типы вопросов
| type | Название | Описание |
|---|---|---|
| welcome | Экран приветствия | Начальный экран |
| yesno | Да/Нет | Бинарный выбор |
| choice | Выбор варианта | Один или несколько вариантов |
| dropdown | Выпадающий список | Выбор из списка |
| ranking | Ранжирование | Расположение по приоритету |
| slider | Слайдер | Значение на шкале |
| rating | Рейтинг | Звёзды, сердечки и т.д. |
| scale | Шкала | Числовая шкала |
| input | Текстовый ввод | Произвольный текст |
| Ввод email | ||
| phone | Телефон | Ввод телефона |
| datetime | Дата/время | Выбор даты |
| matrix | Матрица | Табличный выбор |
| message | Сообщение | Информационный блок |
| file | Загрузка файла | Загрузка файлов |
| html | HTML блок | Произвольный HTML |
| submit | Экран завершения | Кнопка отправки |
Объект multimedia (медиа в заголовке)
| Поле | Описание |
|---|---|
| type | img, video, audio |
| imgUrl | URL изображения |
| videoUrl | URL видео |
| imgLocation | blocks (внутри) или background (фоном) |
| videoSettings | controls, autoplay |
Поля по типам вопросов
Валидация
- Каждый ID в ids уникален
- Каждый ID из ids есть в entities как ключ
- Каждый ключ entities присутствует в ids
- У каждого вопроса обязательно поле type (строка)
curl -X POST "https://api.webask.io/api/v3/service/quiz/123/save" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ids": ["welcome", "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "submit"],
"entities": {
"welcome": { "type": "welcome", "title": "Добро пожаловать", "welcomeLabel": "Начать" },
"a1b2c3d4-e5f6-7890-abcd-ef1234567890": { "type": "rating", "title": "Оцените сервис", "ratingCount": 5, "ratingFigure": "star" },
"submit": { "type": "submit", "submitLabel": "Отправить" }
}
}'
Ошибки
| HTTP | Описание |
|---|---|
| 400 | Опрос не найден (not_found) |
| 401 | Не авторизован |
| 403 | Нет доступа к опросу |
| 422 | Ошибка валидации ids/entities или полей вопроса |
| 500 | Ошибка при сохранении на сервере |
Получить список опросов
Получает список всех ваших опросов. В API v3 поддерживаются сортировка и пагинация.
Query‑параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| sort | string | Нет | Поле сортировки: created_at, updated_at, name, id |
| order | string | Нет | Направление сортировки: desc, asc (по умолчанию: desc) |
| limit | integer | Нет | Количество записей (минимум 1). По умолчанию — все. |
| offset | integer | Нет | Смещение для пагинации (минимум 0, по умолчанию 0). |
curl -X GET "https://api.webask.io/api/v3/service/quiz?sort=name&order=asc&limit=10&offset=0" \
-H "Authorization: Bearer YOUR_TOKEN"
[
{
"id": "ID опроса",
"name": "название",
"url_shared": "адрес опроса",
"is_published": true,
"folder": {
"id": 384,
"workspace_id": 384,
"user_id": 12,
"name": "Мои опросы",
"pos": 1,
"is_default": true,
"created_at": "2022-04-01T08:37:14.000000Z",
"updated_at": "2022-04-27T15:46:27.000000Z",
"deleted_at": null
}
}
]
Получить данные опроса
Получает детальную информацию о конкретном опросе.
curl -X GET https://api.webask.io/api/v3/service/quiz/123 \
-H "Authorization: Bearer YOUR_TOKEN"
{
"id": "ID опроса",
"answer_count": "количество ответов",
"name": "название",
"url_shared": "адрес опроса",
"widgets": "структура вопросов (ids, entities)",
"hidden_options": "скрытая переменная",
"folder": {
"id": 384,
"workspace_id": 384,
"user_id": 12,
"name": "Мои опросы",
"pos": 1,
"is_default": true,
"created_at": "2022-04-01T08:37:14.000000Z",
"updated_at": "2022-04-27T15:46:27.000000Z",
"deleted_at": null
}
}
Управление опросами
Ниже приведён полный жизненный цикл опроса через API: от настройки структуры вопросов до применения темы, публикации и настройки логики переходов.
Полный цикл опроса (кратко)
Сохраняет структуру вопросов опроса: порядок экранов (ids) и
их конфигурацию (entities). Формат совпадает с полем
widgets в ответе GET /quiz/{id}.
Рекомендуется брать текущую структуру, вносить изменения и отправлять обратно.
curl -X POST "https://api.webask.io/api/v3/service/quiz/123/save" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"ids": ["welcome", "question-1", "submit"],
"entities": {
"welcome": { "type": "welcome", "...": "..." },
"question-1": { "type": "choice", "title": "...", "...": "..." },
"submit": { "type": "submit", "...": "..." }
}
}'
Применяет визуальную тему к локальной версии опроса: цвета, фон, шрифты и другие настройки оформления берутся из выбранной темы. Тело запроса не требуется, передаются только параметры пути.
curl -X POST "https://api.webask.io/api/v3/service/quiz/123/applyTheme/925" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Публикует опрос: копирует текущую локальную версию (вопросы, настройки) в публичную и делает её
доступной по публичной ссылке url_shared.
Аналог кнопки «Опубликовать» в интерфейсе конструктора.
curl -X POST "https://api.webask.io/api/v3/service/quiz/123/publish" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Сохраняет логические условия опроса: переходы между экранами, условия по ответам, баллам и т.п.
Тело запроса — объект conditions с
сохранённой логикой. Пустой объект очищает логику.
curl -X POST "https://api.webask.io/api/v3/service/quiz/123/conditions" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"conditions": {
"...": "структура логики, как в конструкторе"
}
}'
Добавление заметки к опросу
Добавляет заметку к опросу (максимум 1000 символов).
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| notes | string | Да | Текст заметки (максимум 1000 символов) |
curl -X POST https://api.webask.io/api/v3/service/quiz/123/note \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"notes": "Текст заметки (максимум 1000 символов)"
}'
{
"status": true,
"notes": "Текст заметки"
}
Дублирование опроса
Дублирует опрос с возможностью указать новое название.
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| name | string | Нет | Название копии (опционально) |
curl -X POST https://api.webask.io/api/v3/service/quiz/123/duplicate \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Название копии (опционально)"
}'
{
"status": true,
"quiz": {
"id": 123,
"name": "Копия: Название опроса",
"url_shared": "https://example.com/abc123",
"is_published": false,
"created_at": "2024-01-01T12:00:00Z",
"updated_at": "2024-01-01T12:00:00Z",
"folder": {
"id": 1,
"name": "Моя папка"
}
}
}
Переименование опроса
Переименовывает опрос.
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| name | string | Да | Новое название опроса |
curl -X POST https://api.webask.io/api/v3/service/quiz/123/rename \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Новое название опроса"
}'
{
"status": true,
"name": "Новое название опроса"
}
Создание шаблона из опроса
Превращает опрос в шаблон для повторного использования.
curl -X POST https://api.webask.io/api/v3/service/quiz/123/template \
-H "Authorization: Bearer YOUR_TOKEN"
{
"status": true
}
Архивирование опроса
Архивирует или разархивирует опрос.
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| archive | boolean | Да | true - архивировать, false - разархивировать |
curl -X POST https://api.webask.io/api/v3/service/quiz/123/archive \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"archive": true
}'
{
"status": true,
"archive_at": "2024-01-01T12:00:00Z",
"is_archived": true
}
Перемещение опроса
Перемещает опрос в другую папку.
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| folder_id | integer | Да | ID папки для перемещения |
curl -X POST https://api.webask.io/api/v3/service/quiz/123/move \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"folder_id": 5
}'
{
"status": true,
"folder_id": 5,
"folder": {
"id": 5,
"name": "Новая папка"
}
}
Удаление опроса
Удаляет опрос и все связанные с ним данные.
curl -X DELETE https://api.webask.io/api/v3/service/quiz/123 \
-H "Authorization: Bearer YOUR_TOKEN"
{
"status": true
}
Архивные опросы
Получает список всех архивных опросов.
curl -X GET https://api.webask.io/api/v3/service/quiz/archived \
-H "Authorization: Bearer YOUR_TOKEN"
[
{
"id": 123,
"name": "Архивный опрос",
"url_shared": "https://example.com/abc123",
"is_published": false,
"created_at": "2024-01-01T12:00:00Z",
"updated_at": "2024-01-01T12:00:00Z",
"archive_at": "2024-01-02T12:00:00Z",
"folder": {
"id": 1,
"name": "Моя папка"
}
}
]