К содержанию
API v3

ИИ-ассистенты

Инструменты MCP

Все инструменты MCP-сервера: что делает каждый, какие параметры принимает и что возвращает

Markdown для нейросетей Актуально на 21.09.2026

Все инструменты

161 инструментов — ровно тот набор, который сервер отдаёт клиенту на запрос tools/list, выгрузка от 10.09.2026. Пометка справа — из самого сервера: по ней ваш клиент решает, спрашивать ли подтверждение перед вызовом.

get_quiz_integrations Состояние интеграций опроса читает
get_tariff_list Список тарифов читает
get_workspace_member_access Доступы участника читает
get_workspace_tariff Тариф аккаунта читает
manage_quiz_analytics Счётчики и пиксели меняет
manage_quiz_zapier Отправка в Zapier меняет
save_workspace_role Роль участника меняет
set_answer_note Пометка у ответа меняет
set_workspace_member_role Смена роли участника меняет
archive_quiz Архив опроса меняет
create_quiz Новый опрос меняет
create_quiz_from_template Опрос из шаблона меняет
delete_quiz Удаление опроса необратимо
duplicate_quiz Копия опроса меняет
generate_ai_quiz Сборка опроса по описанию меняет
get_quiz_versions История публикаций опроса читает
get_workspace_templates Шаблоны аккаунта читает
make_quiz_template Опрос как шаблон меняет
move_quiz Перенос опроса в папку меняет
publish_quiz Публикация опроса меняет
rename_quiz Переименование опроса меняет
restore_quiz Возврат опроса из корзины меняет
restore_quiz_version Возврат к прежней версии опроса меняет
search_quiz_templates Поиск готовых опросов читает
create_booking_block Блокировка времени записи меняет
delete_booking_block Снятие блокировки времени необратимо
delete_favorite_question Удаление вопроса из избранного необратимо
delete_scheduler Удаление расписания записи необратимо
duplicate_scheduler Копия расписания записи меняет
get_booking_journal Журнал записей на встречи читает
get_favorite_questions Избранные вопросы читает
get_schedulers Расписания записи на встречи читает
save_favorite_question Вопрос в избранное меняет
save_scheduler Расписание записи на встречи меняет
update_booking Правка записи на встречу меняет
update_quiz_logic Логика переходов опроса меняет
update_quiz_note Заметка к опросу меняет
update_quiz_settings Настройки опроса меняет
update_quiz_texts Правка стандартных надписей меняет
update_quiz_widgets Вопросы и структура опроса меняет
upload_quiz_media Загрузка файла в опрос меняет
upload_quiz_widget_image Картинка к варианту ответа меняет
create_hidden_option Новая скрытая опция опроса меняет
create_quiz_variable Новая переменная опроса меняет
create_widget_hidden_option Новая скрытая опция вопроса меняет
delete_hidden_option Удаление скрытой опции опроса необратимо
delete_quiz_variable Удаление переменной опроса необратимо
delete_widget_hidden_option Удаление скрытой опции вопроса необратимо
update_hidden_option Правка скрытой опции опроса меняет
update_quiz_variable Правка переменной опроса меняет
update_widget_hidden_option Правка скрытой опции вопроса меняет
create_folder Новая папка меняет
get_workspace_members Участники аккаунта читает
manage_folder_access Доступ участников к папке необратимо
manage_workspace_folder Управление папкой необратимо
set_workspace_member_folders Папки, доступные участнику меняет
apply_quiz_theme Применение темы к опросу меняет
create_theme Новая тема оформления меняет
manage_theme Управление темами оформления необратимо
update_theme Правка темы оформления меняет
export_quiz_print Печатная версия опроса читает
manage_quiz_passwords Пароли к закрытому опросу необратимо
manage_quiz_qr_code QR-код опроса меняет
set_quiz_link Адрес ссылки на опрос меняет
create_answer_tag Новый тег ответов меняет
delete_answer_tag Удаление тега ответов необратимо
delete_quiz_answers Удаление ответов необратимо
get_answer_extra_field_values Значения меток ссылки читает
get_answer_tags Теги ответов аккаунта читает
set_answers_order_mode Порядок вопросов в карточке ответа меняет
tag_answer Теги на ответе меняет
toggle_answer_visibility Скрытие ответа из отчётов меняет
create_report_appearance_preset Новый набор оформления отчёта меняет
delete_report_appearance_preset Удаление набора оформления необратимо
generate_ai_report Умный отчёт меняет
generate_filtered_report Отчёт по фильтрам меняет
get_ai_report Готовый умный отчёт читает
get_workspace_report_appearance Оформление отчётов аккаунта читает
save_quiz_report_filters Сохранение фильтров отчёта меняет
share_ai_report Публичная ссылка на умный отчёт меняет
share_answers_link Публичная ссылка на ответы меняет
share_report_link Публичная ссылка на отчёт меняет
share_summary_link Публичная ссылка на сводку меняет
update_workspace_report_palette Палитра отчётов аккаунта меняет
export_answers_csv Выгрузка ответов в CSV читает
export_answers_spss Выгрузка ответов в SPSS читает
export_answers_word Выгрузка ответов в Word читает
export_answers_xlsx Выгрузка ответов в Excel читает
export_filtered_report_pdf Выгрузка отчёта в PDF читает
export_filtered_report_word Выгрузка отчёта в Word читает
export_summary_pdf Выгрузка сводки в PDF читает
create_quiz_webhook Новый вебхук меняет
delete_quiz_webhook Удаление вебхука необратимо
get_integration_logs Журнал отправок мессенджера читает
get_quiz_crm_fields Поля CRM и текущее сопоставление читает
get_quiz_webhook_logs Журнал доставки вебхука читает
get_quiz_webhooks Вебхуки опроса читает
manage_quiz_amocrm_mapping Сопоставление полей amoCRM меняет
manage_quiz_crm Отправка ответов в CRM меняет
manage_quiz_crm_mapping Сопоставление полей Битрикс24 меняет
manage_quiz_google_sheets Выгрузка в Google Таблицы необратимо
manage_quiz_messenger Уведомления в Telegram и MAX необратимо
resend_integration_logs Досылка в мессенджер меняет
resend_quiz_webhook_log Досылка вебхука меняет
toggle_quiz_webhook Вебхук вкл и выкл меняет
update_quiz_webhook Правка вебхука меняет
add_quiz_email_recipient Новый получатель копий ответов меняет
confirm_quiz_email_recipient Подтверждение адреса получателя меняет
delete_quiz_email_recipient Удаление получателя копий необратимо
get_quiz_email_settings Настройки писем опроса читает
manage_workspace_smtp Своя почтовая служба меняет
save_quiz_email_template Шаблон письма опроса меняет
set_quiz_email_questions Состав вопросов в письме меняет
toggle_quiz_email Письма опроса вкл и выкл меняет
toggle_quiz_email_recipient Получатель копий вкл и выкл меняет
get_mailing_state Состояние рассылок читает
delete_workspace_logo Удаление логотипа аккаунта необратимо
delete_workspace_role Удаление роли участника необратимо
get_workspace_details Сведения об аккаунте читает
get_workspace_domain_status Состояние своего домена читает
get_workspace_hidden_files Скрытые файлы сверх квоты читает
get_workspace_roles Роли участников читает
get_workspace_storage Своё хранилище файлов читает
get_workspace_storage_usage Занятое место читает
invite_workspace_member Приглашение участника меняет
manage_user_sessions Входы в аккаунт необратимо
manage_workspace_domain Свой домен аккаунта меняет
manage_workspace_files Файлы аккаунта необратимо
remove_workspace_member Исключение участника необратимо
resend_workspace_member_invite Повторное приглашение участника меняет
update_user_profile Правка своего профиля меняет
update_workspace_branding Логотип и копирайт аккаунта меняет
upload_workspace_logo Загрузка логотипа аккаунта меняет
verify_workspace_storage Проверка своего хранилища меняет
get_partner_program Партнёрская программа читает
get_respondent_campaigns Заказанные респонденты читает
manage_partner_source Метки партнёрских источников меняет
manage_quiz_payment Приём оплаты в опросе меняет
add_promocodes Добавление промокодов меняет
create_promocode_group Новый список промокодов меняет
get_promocode_list_quizzes Опросы списка промокодов читает
manage_promocode_group Управление списком промокодов необратимо
get_folder_list Список папок читает
get_promocode_codes Коды списка промокодов читает
get_promocode_list Списки промокодов читает
get_quiz_answers Ответы на опрос читает
get_quiz_hidden_options Скрытые опции опроса читает
get_quiz_list Список опросов читает
get_quiz_report Отчёт опроса читает
get_quiz_report_files Файлы из ответов читает
get_quiz_report_filters Сохранённые фильтры отчёта читает
get_quiz_report_inputs Текстовые ответы вопроса читает
get_quiz_structure Структура опроса читает
get_quiz_summary Сводка опроса читает
get_quiz_texts Стандартные надписи опроса читает
get_quiz_variables Переменные опроса читает
get_quiz_widgets_hidden Скрытые опции вопросов читает
get_theme_details Тема оформления читает
get_theme_list Список тем оформления читает
get_user_me Мой профиль читает
get_workspace_list Список аккаунтов читает

Инструменты: формат ответа, права и тарифы

Инструменты (Tools)

Tools — действия, которые выполняются на стороне WebAsk по запросу ИИ-модели.

Формат ответа инструментов

Каждый инструмент возвращает объект с полями:

Поле Тип Описание
content array Массив блоков для отображения: [{"type": "text", "text": "сообщение"}]. Текст сообщения об успехе или об ошибке.
isError boolean false — успех, true — ошибка (валидация, доступ, сохранение и т.д.).
(доп. ключи) При успехе добавляются поля с данными (например quiz, quiz_id, url, updated). При ошибке структуры виджетов может быть массив errors.

В примерах ниже приведён полный успешный ответ (включая content и isError и все возвращаемые данные).

Пример ответа с ошибкой:

JSON
{
  "content": [{"type": "text", "text": "Ошибка валидации: Поле quiz_id обязательно для заполнения."}],
  "isError": true
}

Права и тарифы

Инструменты записи проверяют то же, что и интерфейс конструктора.

Права участника воркспейса. Владелец воркспейса может выдать участнику урезанные права. Если права на действие нет, инструмент отвечает отказом, из которого видно, что делать дальше:

  • имя права и его код — Недостаточно прав: для этого действия нужно право «Удаление опросов» (delete_quiz);
  • значение у роли: allowed (разрешено, но объект в закрытой папке), partially — только свои объекты, причём над чужим объектом это названо прямо, forbidden — запрещено, не задано — считается запрещённым;
  • отличие по папке, если для папки объекта у роли стоит своё значение;
  • причина, из-за которой права не действуют вовсе: приглашение не принято, почта не подтверждена, не участник;
  • кто может право выдать: владелец или участник с member_crud, инструменты save_workspace_role и set_workspace_member_role.

Свои права по всем пространствам ассистент читает заранее из user://me (workspaces[].access), права другого участника — get_workspace_member_access. Расчёт там тот же, что у проверки при вызове.

Тарифный отказ называет закрытую возможность и дописывает, где посмотреть текущий тариф (get_workspace_tariff — лимиты и возможности) и что дают другие (get_tariff_list); сменить тариф может владелец или участник с правом payment.

Таблица прав по инструментам:

Действие Требуемое право
create_quiz create_quiz
duplicate_quiz copy_quiz
delete_quiz delete_quiz
rename_quiz rename_quiz
archive_quiz quiz_archive
move_quiz move_in_folder
update_quiz_settings settings
make_quiz_template template
create_folder create_folder
manage_folder_access (add, remove) invite_members
set_answer_note settings
manage_workspace_folder (rename) rename_folder
manage_workspace_folder (delete) delete_folder
get_quiz_versions, restore_quiz_version settings
manage_quiz_passwords settings
manage_promocode_group, get_promocode_list_quizzes settings
get_answer_extra_field_values view_results
generate_ai_report, get_ai_report, share_ai_report view_results
get_quiz_integrations, get_integration_logs, resend_integration_logs, manage_quiz_messenger, manage_quiz_crm, get_quiz_crm_fields, manage_quiz_crm_mapping, manage_quiz_amocrm_mapping, manage_quiz_google_sheets integrations
manage_quiz_analytics, manage_quiz_zapier integrations
manage_workspace_smtp account_smtp
manage_workspace_domain domain
export_quiz_print, manage_quiz_qr_code, manage_quiz_payment settings
manage_workspace_files (чтение) files_view
manage_workspace_files (удаление) files_delete
get_respondent_campaigns только доступ к аккаунту
get_mailing_state mailing_view
update_user_profile, manage_user_sessions своё, права аккаунта не спрашиваются
create_quiz_from_template create_quiz
restore_quiz delete_quiz
manage_theme (copy, restore) theme
manage_theme (delete) theme_delete
duplicate_quizfolder_id) copy_in_folder
export_answers_spss view_results
create_theme, update_theme, apply_quiz_theme theme
upload_quiz_media, upload_quiz_widget_image files_upload
update_workspace_branding, upload_workspace_logo, delete_workspace_logo account_quiz_settings
update_workspace_report_palette account_quiz_settings
промокоды: create_promocode_group, add_promocodes, get_promocode_list, get_promocode_codes settings
результаты: чтение ответов и отчётов, выгрузки, сводка, публичные ссылки, tag_answer, toggle_answer_visibility, save_quiz_report_filters view_results
запись на встречи: правка расписаний, записей и блокировок settings
запись на встречи: чтение расписаний и журнала view_results
результаты: чтение ответов и отчётов, выгрузки, сводка, публичные ссылки, tag_answer, toggle_answer_visibility, save_quiz_report_filters, set_answers_order_mode view_results

Правка виджетов, логики и текстов опроса отдельного права не требует — как и в конструкторе.

Тарифные ограничения. Проверяются до выполнения действия:

Действие Ограничение
create_quiz, duplicate_quiz лимит числа опросов по тарифу; ошибка называет лимит и текущее значение
create_theme, update_theme своя тема недоступна на бесплатном тарифе
upload_quiz_media, upload_quiz_widget_image загрузка файлов и дисковая квота
upload_workspace_logo, delete_workspace_logo свой логотип доступен не на всех тарифах
update_workspace_branding скрытие копирайта доступно не на всех тарифах
экспорт ответов и отчётов выгрузка результатов
промокоды: создание группы, добавление кодов, чтение списков промокоды доступны не на всех тарифах

Опросы: создание, публикация, версии

Управление опросами

create_quiz

Создаёт новый опрос. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Опрос успешно создан (ID: 1)."}],
  "isError": false,
  "quiz": {
    "id": 1,
    "workspace_id": 5,
    "answer_count": 0,
    "visits": {"visit": 0, "u_visit": 0},
    "ssid": "...",
    "shared": false,
    "isPublished": false,
    "is_archive": false,
    "is_template": false,
    "name": "Новый опрос",
    "virtual_id": null,
    "url_preview": "https://...",
    "url_shared": "https://...",
    "project": null,
    "quiz_data": {"ids": [], "entities": {}},
    "conditions": null,
    "settings": {"lang": "ru", "show_progressbar": true, "show_navigate": true, "numeration": false, "theme_id": 1, "..." : "..."},
    "info": {"info_title": "", "description": "", "og_image": null, "favicon": null},
    "integrations": {}
  }
}
Параметр Тип Описание
folder_id integer (Обязательный) ID папки, в которой будет создан опрос.

rename_quiz

Переименовывает существующий опрос. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Опрос #1 переименован в \"Новое название опроса\"."}],
  "isError": false,
  "quiz_id": 1,
  "name": "Новое название опроса"
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
name string (Обязательный) Новое название опроса (макс. 80 символов).

duplicate_quiz

Создаёт копию опроса со всеми данными и версиями. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Опрос #1 успешно дублирован (новый ID: 2)."}],
  "isError": false,
  "quiz": {
    "id": 2,
    "name": "Копия опроса",
    "url_shared": "https://...",
    "is_published": false,
    "created_at": "2024-01-15T12:00:00.000000Z",
    "updated_at": "2024-01-15T12:00:00.000000Z"
  }
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса для дублирования.
name string (Опционально) Новое название опроса (макс. 80 символов).
folder_id integer (Опционально) Папка для копии. По умолчанию копия ложится рядом с оригиналом; копирование в другую папку требует права copy_in_folder.

archive_quiz

Архивирует или разархивирует опрос. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Опрос архивирован."}],
  "isError": false,
  "quiz_id": 1,
  "archive_at": "2024-01-15 12:00:00",
  "is_archived": true
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
archive boolean (Обязательный) true — архивировать, false — разархивировать.

delete_quiz

Удаляет опрос (мягкое удаление, с возможностью восстановления). Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Опрос #1 удален."}],
  "isError": false,
  "quiz_id": 1
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.

restore_quiz

Возвращает удалённый опрос из корзины — с вопросами, логикой и ответами.

Опрос снова занимает место в тарифном лимите, поэтому при исчерпанном лимите возврат не пройдёт. Живой и чужой опрос в возврат не попадают, о пропущенных приходит skipped_quiz_ids. Архив — другое: его снимает archive_quiz.

Параметр Тип Описание
workspace_id integer (Обязательный) ID workspace.
quiz_ids array (Обязательный) ID опросов, до 100 за раз.

publish_quiz

Публикует опрос: текущая локальная версия становится публичной.

Опрос под оплаченной кампанией за респондентов не публикуется и не откатывается к прежней версии — инструмент отказывает и называет причину. Подробности — в tools-quiz-content.md. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Опрос #1 успешно опубликован."}],
  "isError": false,
  "quiz": {
    "id": 1,
    "workspace_id": 5,
    "answer_count": 0,
    "name": "Мой опрос",
    "url_shared": "https://...",
    "isPublished": true,
    "quiz_data": {"ids": ["uuid-1"], "entities": {"uuid-1": {"type": "question", "title": "Вопрос"}}},
    "conditions": {},
    "settings": {"lang": "ru", "theme_id": 1, "..." : "..."},
    "info": {},
    "integrations": {}
  }
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.

move_quiz

Перемещает опрос в другую папку пользователя. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Опрос перемещен в папку #5."}],
  "isError": false,
  "quiz_id": 1,
  "folder_id": 5
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
folder_id integer (Обязательный) ID целевой папки (folder://list).

make_quiz_template

Создаёт шаблон на основе текущего опроса. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Шаблон успешно создан."}],
  "isError": false,
  "quiz_id": 1
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.

get_quiz_versions

Показывает историю публикаций опроса: каждая публикация оставляет снимок.

Черновик в список не попадает — это текущее состояние, а не история. Снимок с is_live — тот, который сейчас видят респонденты.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
limit integer Сколько снимков вернуть, 1–100. По умолчанию 20.
offset integer Сколько снимков пропустить. Список от новых к старым.

restore_quiz_version

Возвращает содержимое прежнего снимка в черновик — откат неудачной правки.

Респондентов откат сразу не касается: живая версия остаётся прежней, пока опрос не опубликуют заново (publish_quiz). В ответе приходит needs_publish: true.

Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Версия восстановлена в черновик. Чтобы её увидели респонденты, опубликуйте опрос."}],
  "isError": false,
  "quiz_id": 42,
  "restored_from_version_id": 128,
  "live_version_id": 128,
  "needs_publish": true
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
version_id integer (Обязательный) ID снимка из get_quiz_versions.

generate_ai_quiz

Запускает AI-генерацию опроса по пользовательскому описанию. Использует тот же backend flow, что и встроенное создание AI-опроса в приложении: модель сама собирает структуру, виджеты и (опционально) логику переходов. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "AI-опрос успешно создан."}],
  "isError": false
}
Параметр Тип Описание
folder_id integer (Обязательный) ID папки, в которой будет создан опрос (folder://list).
prompt string (Обязательный) Свободное описание того, какой опрос нужно сгенерировать.
ai_type string Тип AI-опроса: quiz (по умолчанию) или test.
with_logic boolean Просить ли AI построить логику переходов между шагами.
project string Произвольная метка проекта (опционально).

get_workspace_templates

Собственные шаблоны аккаунта — те опросы, что сделали шаблонами через make_quiz_template.

Это не общий каталог сервиса, его ищет search_quiz_templates. Возвращённый id принимает create_quiz_from_template наравне с каталожным.

Параметр Тип Описание
workspace_id integer (Обязательный) ID workspace.
limit integer Сколько вернуть, 1–100. По умолчанию 20.
offset integer Сколько пропустить.

search_quiz_templates

Ищет опрос в каталоге готовых. Каталог собран на ru и en — других языков в нём нет.

Без query возвращает каталог целиком. Отдаёт template_id, название и метки — без оформления, чтобы ответ оставался читаемым.

Параметр Тип Описание
lang string (Обязательный) ru или en.
query string Поиск по названию, описанию и меткам.
limit integer Сколько вернуть, 1–100. По умолчанию 30.

create_quiz_from_template

Создаёт свой опрос из шаблона каталога — с вопросами, логикой и оформлением.

Личная тема автора шаблона копируется в аккаунт, чтобы опрос не ссылался на чужую запись. Опрос создаётся черновиком (needs_publish: true). Скопировать по template_id произвольный чужой опрос нельзя: берутся только те, что лежат в каталоге.

Параметр Тип Описание
template_id integer (Обязательный) ID шаблона из search_quiz_templates.
folder_id integer (Обязательный) Папка для нового опроса (folder://list).
name string Своё название. По умолчанию — название шаблона.

Содержимое и структура опроса

Содержимое и структура опроса

Заморозка опроса кампанией. Пока по опросу идёт оплаченная кампания за респондентов, его состав менять нельзя: респонденты проходят то, что оплачено и промодерировано. update_quiz_widgets, update_quiz_texts, update_quiz_logic, а также publish_quiz и restore_quiz_version из tools-quiz-lifecycle.md в этом случае отказывают с пояснением про кампанию. update_quiz_settings, интеграции, темы и работа с ответами остаются доступны — так же, как в конструкторе. До оплаты кампании правки открыты: сумма пересчитывается перед платежом. Замок снимается сам по завершении кампании.

update_quiz_widgets

Сохраняет структуру виджетов опроса. Используется для изменения/добавления любых элементов формы. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Структура виджетов опроса успешно обновлена."}],
  "isError": false,
  "quiz": {
    "id": 1,
    "workspace_id": 5,
    "answer_count": 0,
    "name": "Мой опрос",
    "url_shared": "https://...",
    "isPublished": false,
    "quiz_data": {
      "ids": ["a1b2c3d4-..."],
      "entities": {
        "a1b2c3d4-...": {"type": "question", "title": "Текст вопроса", "..." : "..."}
      }
    },
    "conditions": {},
    "settings": {"lang": "ru", "theme_id": 1, "show_progressbar": true, "..." : "..."},
    "info": {},
    "integrations": {}
  }
}
При ошибке структуры виджетов дополнительно возвращается массив errors (список строк с описанием несоответствий). Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
ids array (Обязательный) Массив UUID виджетов (порядок на странице).
entities object (Обязательный) Ключ-значение: {"uuid": {настройки виджета}}.

Запись идёт всей структурой целиком. Внутри виджета можно передать только изменённые поля — остальные не затрутся. Но состав виджетов передаётся полностью: каждый id из ids должен быть в entities, а виджет, которого нет в ids, из опроса удаляется. Поэтому правка одного поля — это три шага:

  1. get_quiz_structure(quiz_id) — получить ids и entities;
  2. поправить нужное поле в нужной сущности;
  3. update_quiz_widgets(quiz_id, ids, entities) — вернуть структуру обратно.

Структуру, полученную чтением, можно возвращать записью как есть: ничего вычищать из неё не нужно.

Экраны опроса

Тип Что это Как добавить
welcome Экран приветствия Служебный id welcome, всегда первый в ids
submit Экран отправки с кнопкой «Отправить» Служебный id submit, всегда последний в ids
finish Экран благодарности («спасибо», thank you) Новый UUID в ids перед submit + сущность с type: "finish"
screenout Экран отсева Новый UUID в ids + сущность с type: "screenout", переход задаётся update_quiz_logic

Экрана благодарности в опросе по умолчанию нет. Правка полей submit его не создаёт — нужен отдельный виджет finish.

Спецответы вместо обычных вариантов

«Другое / Свой вариант», «Затрудняюсь ответить» и «Ничего из перечисленного» — это настройки виджета, а не пункты списка вариантов:

Спецответ Настройка Типы
Другое / Свой вариант choiceTextOther choice с текстовыми вариантами
Другое dropdownOther dropdown
Затрудняюсь ответить hardToAnswer + hardToAnswerLabel все, кроме экранов, html, message, inline_group
Ничего из перечисленного noneOfAbove + noneOfAboveLabel choice, dropdown

Такой пункт, добавленный в choiceTextEntities / dropdownEntities руками, не даёт поля свободного ввода, не снимает остальные отметки, не попадает в отдельные показатели отчёта (hardToAnswerCount, hardToAnswerPercent) и перемешивается вместе с обычными вариантами. Если настройка при этом включена — респондент видит два одинаковых пункта.

Инструмент такие подписи не запрещает (бывают и осознанные варианты ответа), но возвращает предупреждение в массиве warnings.

Проверка результата

Ответ содержит ключ saved с фактическим составом опроса после записи — по нему сверяется, что изменение применилось, без повторного чтения структуры:

JSON
{
  "content": [{"type": "text", "text": "Структура виджетов опроса успешно обновлена. Сохранено виджетов: 5. Состав: welcome x1, choice x2, finish x1, submit x1."}],
  "isError": false,
  "saved": {"widgets": 5, "types": {"welcome": 1, "choice": 2, "finish": 1, "submit": 1}},
  "warnings": ["Виджет ...: вариант «Другое» повторяет включённый спецответ (choiceTextOther) ..."],
  "quiz": {"...": "..."}
}

update_quiz_texts

Сохраняет пользовательские тексты кнопок и интерфейсных элементов опроса. (Требуется платный тариф). Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Пользовательские тексты опроса успешно обновлены."}],
  "isError": false,
  "message": "OK"
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
texts array (Обязательный) Массив объектов [{"code": "string", "text": "string"}].

update_quiz_settings

Обновляет настройки опроса (название, язык, отображение, навигация, ограничения по времени и числу ответов, капча, тема, скрипты, QR-код, таймер заполнения, IP/устройства и др.). Передаются только те поля, которые нужно изменить. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Настройки опроса обновлены."}],
  "isError": false,
  "updated": ["name", "lang"]
}
Параметр Тип Описание
name string Название опроса (макс. 255 символов).
lang string Язык интерфейса опроса: ru, en, es или pt.
show_progressbar boolean Показывать прогресс-бар прохождения опроса.
show_navigate boolean Показывать навигацию (кнопки назад/вперёд).
numeration boolean Включить нумерацию вопросов.
auto_move_by_enter boolean Переход к следующему вопросу по нажатию Enter.
show_to_robots boolean Доступность страницы опроса для поисковых роботов.
show_by_one boolean Показывать по одному вопросу на экране.
allow_multiple_answer boolean Разрешить повторную отправку ответа (несколько прохождений).
scripts_in_head string Код скриптов в <head>.
scripts_in_body string Код скриптов в <body>.
scripts_in_head_enabled boolean Включить выполнение скриптов в head.
scripts_in_body_enabled boolean Включить выполнение скриптов в body.
closed_quiz_message_enabled boolean Включить сообщение о закрытии опроса.
close_quiz_enabled boolean Опрос закрыт (приём ответов отключён).
limit_time_enabled boolean Включить ограничение по времени доступности опроса.
limit_time_value string Дата/время окончания доступности.
limit_time_value_tz string Значение времени с таймзоной.
limit_time_timezone string Таймзона для ограничения по времени.
limit_answer_count_enabled boolean Включить ограничение максимального числа ответов.
limit_answer_count_value integer Максимальное число ответов.
limit_message_title string Заголовок сообщения при достижении лимита ответов.
limit_message_body string Текст сообщения при достижении лимита ответов.
show_captcha boolean Показывать капчу при отправке ответа.
captcha_public_key string Публичный ключ капчи.
captcha_secret_key string Секретный ключ капчи.
multiple_ip boolean Разрешить прохождение с нескольких IP.
use_password boolean Требовать пароль для доступа к опросу.
session_check_method array Методы проверки сессии: ip, cookie, extra_params.
theme_id integer ID темы оформления воркспейса.
extra_fields array Список скрытых переменных (extra fields).
scoring_switcher boolean Включить переключатель подсчёта баллов в опросе.
block_jump_to_prev_widget boolean Запретить переход к предыдущему вопросу (виджету).
question_required_mode string Режим обязательности вопросов: individual, all_required, all_optional.
question_min_view_mode string Минимальное время просмотра вопроса: individual, all_enabled, all_disabled.
question_min_view_seconds integer Минимальное время просмотра в секундах (при all_enabled).
question_random_order boolean Показывать вопросы в случайном порядке.
disable_auto_redirect boolean Отключить автоматический переход после ответа.
auto_save_progress boolean Автосохранение прогресса: респондент может вернуться и продолжить с того же места.
allow_restart_progress boolean Разрешить вернувшемуся респонденту начать прохождение заново вместо продолжения незавершённого. Работает только вместе с auto_save_progress.
filling_time_enabled boolean Включить таймер времени на заполнение опроса.
filling_time_seconds integer Время на заполнение в секундах.
ip_list_enabled boolean Включить фильтрацию по спискам IP (белый/чёрный список).
ip_whitelist string Белый список IP.
ip_blacklist string Чёрный список IP.
available_devices array Доступные устройства: desktop, mobile, tablet.
info_title string Заголовок (мета).
description string Описание опроса (мета).
qr_code_format string Формат QR-кода.
qr_code_size integer Размер QR-кода в пикселях.
qr_code_color string Цвет QR-кода.
qr_code_background_color string Цвет фона QR-кода.
qr_code_margin integer Отступ QR-кода.
is_change_theme boolean Менять тему оформления по данным из QR-кода.
report_merge_versions boolean Склеивать версии вопросов в отчёте: ответы, собранные разными версиями опроса, показываются одним блоком.
multilogic_sequential_mode boolean Последовательная мульти-логика: несколько групп условий одного вопроса применяются по порядку, а не только первая сработавшая.
matrix_transpose boolean Транспонировать матричные вопросы в отчёте: строки и столбцы меняются местами.
question_random_mode string Что перемешивать при случайном порядке: all — всю анкету, groups — только вопросы, отмеченные полем randomGroupId (каждый набор перемешивается по своим позициям). По умолчанию all.
results_appearance array Оформление отчёта этого опроса: palette_id, custom_colors, bar_color_mode, font_family, show_value_labels, show_grid_lines. null возвращает стандартный вид. Передача этого объекта заодно выключает results_appearance_use_shared — иначе цвета не применились бы, потому что общая палитра аккаунта имеет приоритет. Допустимые значения и текущая палитра аккаунта: get_workspace_report_appearance.
results_appearance_use_shared boolean Следовать общей палитре отчётов аккаунта (update_workspace_report_palette). true — опрос рисует отчёты палитрой аккаунта; свои цвета опроса остаются на месте и вернутся, если выключить.
report_row_options array Настройки строк отчёта: sort_mode (default, asc, desc) и value_format (both, count, percent). null возвращает стандартное поведение.
schedule_enabled boolean Включить доступ к опросу по расписанию (дни недели + интервал времени).
schedule_days array Дни недели, в которые опрос доступен: массив чисел 1–7 по ISO (1 — понедельник, 7 — воскресенье).
schedule_time_from string Начало интервала доступности в формате H:i (например "09:00"). Трактуется в таймзоне schedule_timezone.
schedule_time_to string Конец интервала доступности в формате H:i (например "18:00"). Трактуется в таймзоне schedule_timezone.
schedule_timezone string Таймзона расписания, идентификатор IANA (например "Europe/Moscow").
yandex_analytics_code string Номер счётчика Яндекс.Метрики (макс. 100 символов).
yandex_analytics_is_webvisor boolean Включить Вебвизор в Яндекс.Метрике.
yandex_analytics_is_active boolean Включить отправку событий в Яндекс.Метрику.
google_analytics_code string Идентификатор Google Analytics (макс. 100 символов).
google_analytics_version string Версия Google Analytics (макс. 20 символов).
google_analytics_is_active boolean Включить отправку событий в Google Analytics.
vk_pixel_code string Идентификатор пикселя VK (макс. 100 символов).
vk_pixel_is_active boolean Включить пиксель VK.
fb_pixel_code string Идентификатор пикселя Facebook (макс. 100 символов).
fb_pixel_is_active boolean Включить пиксель Facebook.
sso_active boolean Требовать вход через SSO перед прохождением опроса.
sso_allow_retake boolean Разрешать SSO-респонденту пройти опрос повторно.
answers_allow_edit boolean Разрешить респонденту редактировать уже отправленный ответ. Работает только вместе с SSO (sso_active) или подтверждением e-mail (require_email_verification) — иначе ссылка на редактирование не выдаётся.
require_email_verification boolean Требовать подтверждение e-mail перед отправкой ответа.
anonymous_responses boolean Анонимные ответы: не сохранять данные, идентифицирующие респондента.
anonymous_responses_show_label boolean Показывать респонденту пометку о том, что опрос анонимный.
category_scoring boolean Включить категорийный скоринг: баллы опций суммируются по категориям, победившая категория пишется в ответ.
quiz_categories array Список категорий для категорийного скоринга: массив объектов { "id": "<строка>", "name": "<название>" }. Порядок значим: при равенстве баллов побеждает категория, идущая раньше. Веса категорий задаются у опций виджетов, а не здесь.

update_quiz_logic

Сохраняет логические условия, переходы и скоринг (баллы). Формируется на основе UUID виджетов. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Логика опроса успешно обновлена."}],
  "isError": false,
  "quiz": {
    "id": 1,
    "name": "Мой опрос",
    "quiz_data": {"ids": [], "entities": {}},
    "conditions": {"uuid-1": "uuid-2"},
    "settings": {},
    "info": {}
  }
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
defaultConditions object Переходы по умолчанию — куда идти, если ни одно условие не сработало. Ключ — UUID виджета. Значение — UUID цели строкой либо объектом {"widgetId": "uuid"}. Цель submit завершает опрос.
savedLogic object Разветвлённая логика по ответам: {"uuid": {"rules": [...]}}.
savedScoring object Назначение баллов за варианты ответов.
multiLogicFlags object Флаги логики для конкретных виджетов.

Три правила, без которых маршрут собирается неверно.

1. Безусловный переход задаётся через defaultConditions, а не пустой группой условий.

Группа из savedLogic с пустым conditionsData не означает «переходить всегда» — наоборот, такая группа отбрасывается как всегда-истинная, и вопрос уходит к следующему по порядку. Если из вопроса всегда нужно вести в одно место, это defaultConditions:

JSON
{
  "defaultConditions": { "uuid-вопроса": {"widgetId": "uuid-цели"} },
  "savedLogic": { "uuid-вопроса": [ {"conditionGroupId": "g1", "jumpTo": {"widgetId": "uuid-цели"}, "conditionsData": [ ... ]} ] }
}

В savedLogic держите только переходы по условию: у каждой группы должно быть хотя бы одно условие в conditionsData.

2. Циклы запрещены.

Переход, который замыкает маршрут в кольцо (например, «вернуть на вопрос о формате участия» из вопроса ниже по потоку), инструмент отклоняет с ошибкой о зацикленном переходе. Это не ограничение MCP: конструктор при цикле отключает кнопку публикации, то есть такой опрос нельзя выпустить в принципе.

Если по замыслу человек должен что-то выбрать заново — заведите отдельный вопрос ниже по потоку вместо возврата к пройденному.

Переход назад сам по себе разрешён, если он не создаёт кольца: инструмент вернёт предупреждение о слиянии веток, но сохранит логику.

3. Дисквалификация по квоте — это группа без условий.

Квота — это группа с actionType = screenout, режимом answer_quota и пустым conditionsData. Условие в такой группе делает её обычной дисквалификацией по ответу: правило сработает, но квота считаться не будет. Инструмент на такую пару вернёт предупреждение.

Порог и источник квоты задаются внутри screenoutConfig, а не условиями:

JSON
{
  "conditionGroupId": "g1",
  "actionType": "screenout",
  "jumpTo": {"widgetId": "uuid-экрана-отсева"},
  "conditionsData": [],
  "screenoutConfig": {
    "mode": "answer_quota",
    "sourceWidgetId": "uuid-вопроса",
    "quotaType": "answer_option",
    "quotaLimit": "100",
    "quotaOptionId": "uuid-варианта"
  }
}

update_quiz_note

Добавляет или изменяет внутреннюю заметку опроса. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Заметка опроса обновлена."}],
  "isError": false,
  "quiz_id": 1,
  "notes": "Текст внутренней заметки"
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
notes string (Обязательный) Текст заметки (видна только владельцу).

upload_quiz_media

Загрузка медиа (изображение, видео, аудио) для блока multimedia. (Требуется платный тариф). Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Медиа загружено. url: https://storage.webask.io/... — подставьте в multimedia.imgUrl."}],
  "isError": false,
  "url": "https://storage.webask.io/..."
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
type string (Обязательный) Тип медиа: image, video, audio.
url string Ссылка (если загружается из сети). Укажите url или file_base64.
file_base64 string Содержимое в base64. Укажите url или file_base64.
filename string Имя файла (опционально, для file_base64).

Отказ. Текст отказа называет причину: недопустимый формат (список форматов в сообщении), превышен лимит размера или диска, недоступно на тарифе, не скачалось по url, некорректный base64. Если файл не сохранился по внутренней причине, в текст попадает её короткое описание (до 200 знаков) и пометка, что файл не сохранён — повтор того же запроса даст тот же результат, текст причины нужно передать в поддержку. Полная запись со стектрейсом — в канале mcp и media.

upload_quiz_widget_image

Загрузка картинки для виджета "Выбор из списка" с медиа-вариантами. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Изображение загружено. url: https://storage.webask.io/... — подставьте в choiceImageEntities[].link."}],
  "isError": false,
  "url": "https://storage.webask.io/..."
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
url string Ссылка (если загружается из сети). Укажите url или file_base64.
file_base64 string Картинка в base64. Укажите url или file_base64.
filename string Имя файла (опционально).

Библиотека избранных вопросов

Вопросы, которые автор переиспользует в разных опросах. В библиотеке лежит снимок вопроса, а не ссылка: правка исходного опроса библиотеку не меняет, и наоборот. До 100 вопросов на аккаунт, снимок до 64 КБ.

Инструмент Что делает
get_favorite_questions список; в каждой записи снимок, готовый к передаче в update_quiz_widgets
save_favorite_question добавляет вопрос или перезаписывает сохранённый, если передан favorite_question_id
delete_favorite_question убирает из библиотеки; в опросах вопрос остаётся

Запись на встречи

Респондент отвечает на вопросы и в конце выбирает свободное время. Расписание живёт на уровне аккаунта и подключается к опросам отдельно — одно расписание может обслуживать несколько опросов.

Инструмент Что делает
get_schedulers расписания аккаунта и их настройки
save_scheduler создаёт расписание или правит существующее
duplicate_scheduler копирует расписание без записей
delete_scheduler удаляет расписание вместе с записями и блокировками
get_booking_journal кто записался за период: время, статус, отмены
update_booking подтвердить, отменить, отметить неявку, перенести
create_booking_block закрыть промежуток для записи — отпуск, занятое окно
delete_booking_block снова открыть время

Два способа задать время. weekly — повторяющиеся часы по дням недели, самый частый случай. slots — список конкретных дат и интервалов для разовых встреч. Режим выбирается полем schedule_mode.

Часовые пояса. Часы в weekly, manual_slots и overrides задаются в поясе расписания — респонденту слоты пересчитываются при показе. А границы записей и блокировок задаются в UTC: пояс расписания и пояс респондента различаются, и UTC — единственный способ не промахнуться.

Права. Чтение расписаний и журнала требует права на просмотр результатов — в журнале персональные данные респондентов. Любые правки — права на настройки опроса.

Выключить приём записей можно, не удаляя расписание: save_scheduler с is_active: false. Удаление необратимо и уносит записи.

Переменные опроса и скрытые опции

Переменные опроса

create_quiz_variable

Создаёт новую скрытую переменную (extra field) опроса. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Скрытая переменная создана."}],
  "isError": false,
  "item": {
    "field_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "name": "Имя переменной"
  }
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
name string (Обязательный) Имя переменной.
id string (Опционально) Кастомный UUID переменной.

update_quiz_variable

Обновляет имя скрытой переменной. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Скрытая переменная обновлена."}],
  "isError": false,
  "item": {
    "field_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "name": "Новое имя переменной"
  }
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
field_id string (Обязательный) UUID переменной (quiz://{id}/variables).
name string (Обязательный) Новое имя.

delete_quiz_variable

Удаляет скрытую переменную. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Скрытая переменная удалена."}],
  "isError": false
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
field_id string (Обязательный) UUID переменной.

Скрытые опции

create_hidden_option

Создаёт скрытую служебную опцию всего опроса. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Скрытая опция создана."}],
  "isError": false,
  "item": {
    "id": 10,
    "name": "redirect_url",
    "value": "https://example.com/thanks"
  }
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
name string (Обязательный) Ключ опции (напр. redirect_url).
value string (Обязательный) Значение.

update_hidden_option

Обновляет скрытую служебную опцию опроса. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Скрытая опция обновлена."}],
  "isError": false
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
opt_id integer (Обязательный) ID опции (quiz://{id}/hidden_options).
name string (Обязательный) Ключ опции.
value string (Обязательный) Значение.

delete_hidden_option

Удаляет скрытую опцию опроса. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Скрытая опция удалена."}],
  "isError": false
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
opt_id integer (Обязательный) ID опции (quiz://{id}/hidden_options).

create_widget_hidden_option

Создаёт скрытую служебную опцию конкретного виджета. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Скрытая опция виджета создана."}],
  "isError": false,
  "item": {
    "id": 11,
    "widget_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "name": "custom_key",
    "value": "custom_value"
  }
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
widget_uuid string (Обязательный) UUID виджета.
name string (Обязательный) Ключ опции.
value string (Обязательный) Значение.

update_widget_hidden_option

Обновляет опцию конкретного виджета. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Скрытая опция виджета обновлена."}],
  "isError": false
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
opt_id integer (Обязательный) ID опции.
name string (Обязательный) Ключ опции.
value string (Обязательный) Значение.

delete_widget_hidden_option

Удаляет опцию конкретного виджета. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Скрытая опция виджета удалена."}],
  "isError": false
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
opt_id integer (Обязательный) ID опции.

Папки и доступ к ним

create_folder

Создаёт новую папку для группировки опросов. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Папка успешно создана."}],
  "isError": false,
  "message": "OK"
}
Параметр Тип Описание
workspace_id integer (Обязательный) ID workspace (workspace://list).
name string (Обязательный) Название папки (макс. 255 символов).

manage_workspace_folder

Наводит порядок в папках: переименование, удаление, перестановка.

Удаление папки уносит и все опросы внутри неё вместе с ответами респондентов, поэтому непустая папка удаляется только с confirm_delete_quizzes. Папка по умолчанию не удаляется. Одноимённых папок в аккаунте не заводится.

Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Папка удалена."}],
  "isError": false,
  "message": "OK",
  "data": {"workspace_id": 1, "folder_id": 12, "deleted_quizzes": 3}
}
Параметр Тип Описание
workspace_id integer (Обязательный) ID workspace (workspace://list).
action string (Обязательный) rename, delete или reorder.
folder_id integer ID папки. Обязателен для rename и delete.
name string Новое название (макс. 255 символов). Обязательно для rename.
folder_ids array Полный список ID папок в нужном порядке. Обязателен для reorder.
confirm_delete_quizzes boolean Подтверждение удаления опросов вместе с папкой.

manage_folder_access

Доступ к папке со стороны самой папки: members, add, remove.

Доступ участника к опросам держится на привязке к папкам. Соседний set_workspace_member_folders смотрит с другой стороны — перезаписывает весь список папок одного участника целиком, поэтому для точечной выдачи и снятия годится этот инструмент.

Признак active в списке говорит, принял ли человек приглашение: пока нет, доступ выдан, но им никто не пользуется. Снять доступ у самого себя нельзя — человек остался бы без единственной папки.

Параметр Тип Описание
workspace_id integer (Обязательный) ID workspace.
folder_id integer (Обязательный) ID папки (folder://list).
action string (Обязательный) members, add, remove.
member_id integer ID участника из get_workspace_members. Нужен для add и remove.

Темы оформления

Темы оформления

apply_quiz_theme

Применяет указанную тему оформления к опросу. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Тема #3 применена к опросу #1."}],
  "isError": false,
  "quiz": {
    "id": 1,
    "name": "Мой опрос",
    "url_shared": "https://...",
    "answer_count": 0,
    "quiz_data": {"ids": [], "entities": {}},
    "settings": {"theme_id": 3, "..." : "..."},
    "info": {}
  }
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
theme_id integer (Обязательный) ID темы (публичной или из вашего workspace). (theme://list).

create_theme

Создаёт новую тему в workspace и применяет к опросу. (Требуется платный тариф). Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Тема создана и применена к опросу."}],
  "isError": false,
  "theme_id": 5,
  "name": "Тема 1"
}
Параметр Тип Описание
workspace_id integer (Обязательный) ID рабочего пространства.
quiz_id integer (Обязательный) ID опроса.
name string Название темы (макс. 255 символов).
base_font_id integer ID шрифта (1=Native, 2=Roboto, 3=Open Sans, 44=Golos Text...).
base_font string Имя шрифта строкой (новый способ), напр. Golos Text. Если не задано — берётся по base_font_id/дефолт.
background_type_id integer Тип фона: 1=color_image, 2=gradient.
bg_gradient_vector integer Направление градиента в градусах (0–360).
bg_gradient_start string Начальный цвет градиента в hex (напр. #00d4ff).
bg_gradient_end string Конечный цвет градиента в hex.
buttons_type_id integer Тип кнопок: 1=background, 2=border.
header_color string Цвет заголовка в формате #RRGGBB.
buttons_color string Цвет кнопок в формате #RRGGBB.
buttons_text_color string Цвет текста кнопок в формате #RRGGBB.
buttons_radius integer Радиус скругления кнопок (0–999 px).
bg_color string Цвет фона в формате #RRGGBB (для background_type_id=1).
widget_active_color string Цвет активного элемента виджета в формате #RRGGBB.
bg_image_file_id integer ID загруженного файла фонового изображения.
background_position_id integer Позиция фона (1–9).
background_opacity integer Прозрачность фона (0–100%).
background_lightness integer Яркость фона (-100 – +100).
background_placement_id integer Размещение фона: 1=stretch, 2=drawin, 3=cover.
background_saturate integer Насыщенность фона (-100 – +100).
background_contrast integer Контраст фона (-100 – +100).
bg_logo_file_id integer ID загруженного файла логотипа поверх фона.
bg_logo_position_id integer Позиция логотипа на фоне (min: 1).
bg_logo_size_id integer Размер логотипа (min: 1).
answer_options_radius integer Скругление карточек вариантов ответа в px.
answer_border integer Толщина рамки вариантов ответа в px.
welcome_and_finish_size_id integer Размер текста на приветствии и завершении.
welcome_and_finish_position_id integer Выравнивание текста на приветствии и завершении.
questions_size_id integer Размер текста вопросов.
questions_position_id integer Выравнивание текста вопросов.
container_width string Ширина содержимого: narrow, normal, wide, full.
button_full_width boolean Растянуть кнопку на всю ширину контейнера.
question_transition string Переход между вопросами: slide, fade, zoom, blur, none.
heading_font string Отдельный шрифт заголовков (Google Fonts). Пусто — как у остального текста.
input_style string Стиль полей ввода: box — в рамке, underline — одна линия.
progress_style string Индикатор прогресса: percent, line, steps.
custom_css string Свой CSS для страницы опроса, до 20000 символов.
service_text_enabled boolean Показывать служебный текст — строку для дисклеймера или согласия.
service_text string Служебный текст, до 500 символов. Простая разметка допустима, остальное вырезается.
service_text_placement_id integer Где на экране стоит служебный текст.
service_text_align_id integer Выравнивание служебного текста.
service_text_size integer Размер служебного текста: 12, 14 или 16.
service_text_color string Цвет служебного текста в формате #RRGGBB.
service_text_scope string Где показывать: all, welcome, questions или finish.

update_theme

Обновляет существующую тему (настройки аналогичны create_theme). Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Тема успешно обновлена."}],
  "isError": false,
  "theme": {
    "id": 5,
    "workspace_id": 1,
    "name": "Тема 1",
    "base_font_id": 1,
    "background_type_id": 2,
    "bg_gradient_start": "#00d4ff",
    "bg_gradient_end": "#090979",
    "buttons_type_id": 1,
    "created_at": "...",
    "updated_at": "..."
  }
}
Параметр Тип Описание
workspace_id integer (Обязательный) ID рабочего пространства.
theme_id integer (Обязательный) ID темы (theme://list).
Остальные параметры Аналогичны параметрам create_theme (от name до service_text_scope).

manage_theme

Копия, удаление и возврат темы оформления: copy, delete, restore.

Опросы, которые пользовались удалённой темой, переводятся на тему по умолчанию — и черновики, и опубликованные, у последних сбрасывается кэш рендера. В ответе reassigned_quizzes говорит, скольких это коснулось. Общие темы сервиса аккаунту не принадлежат: их нельзя ни удалить, ни восстановить.

Параметр Тип Описание
workspace_id integer (Обязательный) ID workspace.
action string (Обязательный) copy, delete, restore.
theme_id integer (Обязательный) ID темы из theme://list.

Раздача опроса: ссылка, QR-код, пароли, печать

Адрес ссылки на опрос

set_quiz_link меняет ту часть публичной ссылки, которую видит респондент: вместо машинного адреса — понятный.

Занятый адрес инструмент не подменит молча, а откажет. Со старого адреса заводится переадресация, так что уже разосланные ссылки продолжают работать. Возможность доступна не на всех тарифах.

manage_quiz_qr_code

QR-код опроса: show, generate, delete_logo.

Код собирается по ссылке опубликованного опроса, поэтому неопубликованный опрос получает отказ — кодировать нечего. Незаданные настройки берутся из прошлой сборки, а не из умолчаний. Повторный generate с теми же настройками отдаёт готовый файл и regenerated: false: каждая сборка пишет новый файл и списывает место с тарифа. Пересобрать принудительно — force.

Логотип в центре кода загружают в кабинете: через ассистента картинку не передать. Уже загруженный логотип код учитывает, а убрать его можно — delete_logo; из самого кода он уйдёт после повторной сборки.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
action string (Обязательный) show, generate, delete_logo.
format string png, svg, eps. По умолчанию — как в прошлый раз, иначе png.
size integer Сторона картинки, 100–1000. По умолчанию 320.
color, background string Шестизначный HEX: #000000, #ffffff.
margin integer Поля вокруг кода, 0–10. По умолчанию 1.
force boolean Пересобрать, даже если настройки не менялись.

manage_quiz_passwords

Ведёт список паролей доступа к закрытому опросу: list, add, update, delete.

Пароли хранятся хешами — прочитать заведённый пароль нельзя ни здесь, ни в конструкторе, только заменить новым. В списке видны номер и дата; по номеру в ответах (password_number визита) автор узнаёт, кто из приглашённых отвечал. Поэтому номера не переиспользуются после удаления.

Саму проверку пароля на входе включает настройка use_password в update_quiz_settings.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
action string (Обязательный) list, add, update, delete.
password string Пароль. Для update — новое значение.
passwords array Список паролей для add, до 500 за раз.
password_id integer ID пароля из list. Нужен для update и delete.

export_quiz_print

Собирает печатную версию опроса — самих вопросов, не ответов.

Форматы pdf, word, txt, html; размер шрифта влияет на вёрстку печатной страницы. Возвращает подписанную ссылку на час. PDF собирает headless-браузер, поэтому падает независимо от остальных форматов — отказ приходит с внятным текстом.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
format string pdf (по умолчанию), word, txt, html.
font string little, medium (по умолчанию), large.

Ответы: видимость, теги, пометки, чистка

Ответы и аналитика

toggle_answer_visibility

Скрывает или показывает конкретный ответ респондента. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Видимость ответа обновлена."}],
  "isError": false,
  "answer_id": 100,
  "is_exclude": true
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
answer_id integer (Обязательный) ID ответа.
is_hide boolean (Обязательный) true (скрыть) или false (показать).

tag_answer

Добавляет/синхронизирует теги для выбранного ответа. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Теги ответа обновлены."}],
  "isError": false,
  "result": {
    "attached": [5],
    "detached": []
  }
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
answer_id integer (Обязательный) ID ответа.
tags array (Обязательный) Массив строк-тегов (заменяет старые).

Передайте пустой массив tags, чтобы снять с ответа все теги: инструмент синхронизирует список, открепляя всё, чего в нём нет. Сам ключ tags при этом обязателен.

Теги ответов

tag_answer сопоставляет теги одного ответа по именам, поэтому перед ним стоит прочитать справочник — иначе появятся новые теги вместо существующих.

Инструмент Что делает
get_answer_tags теги аккаунта
create_answer_tag создаёт тег; одноимённый не дублируется
delete_answer_tag удаляет тег вместе со всеми привязками к ответам

Пометка у ответа

set_answer_note ставит короткую пометку у отдельного прохождения — «перезвонить», «дубль», «жалоба». До 100 символов, пустое значение снимает.

Это не заметка к опросу целиком (update_quiz_note) и не тег (tag_answer): пометка живёт у самого ответа и видна в его строке.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
answer_id integer (Обязательный) ID ответа из quiz://{id}/answers.
note string Текст до 100 символов; пусто — снять пометку.

Чистка ответов

delete_quiz_answers убирает ответы в корзину, возвращает их обратно или удаляет насовсем — типичная уборка после тестовых прохождений.

Обычное удаление обратимо: ответ уходит из списка и отчёта, но лежит в корзине. Безвозвратное необратимо, вместе с ответом убираются файлы респондента, и поэтому оно требует явного подтверждения в самом запросе — одного намерения модели мало.

Скрытые и отправленные на модерацию ответы инструмент не трогает, как и конструктор.

По умолчанию действие работает над перечисленными ответами (answer_ids, до 500 за раз). Для «очисти опрос» есть область scope: all — она идёт запросом, а не списком, и потому справляется с десятками тысяч ответов. В этом режиме answer_ids не нужен, зато можно передать excluded_answer_ids — что оставить как есть.

Область all затрагивает всю собранную работу, и списка id, по которому видно объём, в запросе нет — поэтому она требует confirm_purge даже для обычного удаления в корзину. Возврат из корзины ничего не стирает и подтверждения не требует. Скрытые и отправленные на модерацию ответы массовый режим тоже не трогает.

set_answers_order_mode

Порядок вопросов внутри карточки ответа. Тот же порядок получают публичная ссылка на ответы и выгрузка в Word, поэтому настройка меняет и то, что видят другие.

Параметр Тип Описание
quiz_id integer Обязательный. ID опроса.
answers_order_mode string Обязательный. respondent — в том порядке, в каком человек проходил опрос; survey — в порядке вопросов самого опроса.

get_answer_extra_field_values

Показывает, какие значения встречались у метки ссылки в ответах опроса.

Метки цепляют к ссылке — utm_source, идентификатор ученика, номер курса — и они приходят вместе с ответом; по ним отбирают ответы в отчёте. Имена меток отдаёт quiz://{id}/hidden_options, а этот инструмент — значения выбранного имени, с поиском и постранично: у крупного опроса их бывают тысячи. Отбор по меткам доступен не на всех тарифах.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
key string (Обязательный) Имя метки, например utm_source.
search string Поиск среди значений.
page integer Страница, с 1.
per_page integer Значений на странице, 1–100. По умолчанию 20.

Отчёты: фильтры, AI-отчёты, оформление, ссылки

generate_filtered_report

Формирует отчёт по опросу с фильтрацией (даты, виджеты, теги). Возвращает report_uuid. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Фильтрованный отчет сформирован."}],
  "isError": false,
  "data": {
    "report_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "total": 150
  }
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
dateFrom string Начало (формат d.m.Y, напр. 01.01.2024).
dateTo string Конец (формат d.m.Y).
is_complete boolean Учитывать только полные ответы.
widgets array Массив UUID виджетов для отчёта.
tags array Массив тегов.

save_quiz_report_filters

Сохраняет набор фильтров списка ответов или отчёта. Тот же набор читают экран, публичная ссылка, PDF и Word, поэтому он меняет и то, что видят другие. Текущее состояние — в quiz://{id}/report_filters.

Параметр Тип Описание
quiz_id integer Обязательный. ID опроса.
type string Обязательный. answers — список ответов, report — отчёт.
filters object Обязательный. Объект фильтров той же формы, что при чтении.

У типа report в наборе есть ключ statuses — срез по статусам прохождения, то есть по каким ответам считается отчёт: массив из completed (завершившие), unfinished (ушедшие, не дойдя до конца) и screenout (дисквалифицированные). Ключ не передан — прежний срез остаётся: сохранение фильтров без него не сбрасывает вкладку. Пустой массив и неизвестные значения приводятся к [completed]; unfinished и screenout закрыты опцией тарифа и на закрытом тарифе отбрасываются. Срез действует не только на экране — по нему же считаются PDF, Word и отчёт по публичной ссылке. У типа answers ключа нет.

На тарифах без опции сохранённых фильтров набор не сохраняется — инструмент вернёт отказ по тарифу. Срез отчёта — исключение: он сохраняется и без опции, потому что это состояние отчёта, а не платный фильтр.

generate_ai_report

Строит AI-отчёт по ответам опроса.

Отчёт состоит из трёх независимых разделов: текстовый анализ, сравнительный и количественный. Каждый строится отдельно, поэтому текстовый можно пересобрать, не трогая остальные. Работа идёт в очереди — инструмент сообщает, какие разделы поставлены в работу, а готовый текст забирает get_ai_report.

Пока ответов меньше порога (report_ai_v2.min_answer_count), ни один раздел не запускается: приходит отказ с числами, а не пустой успех. Повторный запуск раздела, который уже строится, ничего не ломает — он попадёт в already_running_sections. Тариф ограничивает число опросов с отчётом; пересборка существующего лимит не расходует.

Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Разделы отчёта поставлены в работу. Готовый текст — в get_ai_report."}],
  "isError": false,
  "quiz_id": 42,
  "queued_sections": ["text_analysis", "comparative"],
  "already_running_sections": ["quantitative"],
  "refused_sections": {}
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
section string all (по умолчанию), text_analysis, comparative, quantitative.
locale string Язык отчёта. По умолчанию — язык владельца ключа.

get_ai_report

Отдаёт готовый AI-отчёт — тот самый, что автор видит в разделе результатов.

У каждого из трёх разделов свой статус: готов, строится сейчас или не построен, и почему — мало ответов либо нет подходящих вопросов. Читать отчёт следует этим инструментом: генерация тратит лимит тарифа и упирается в задержку между перезапусками.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.

share_ai_report

Даёт поделиться AI-отчётом: публичной ссылкой или файлом PDF.

Ссылку открывают без входа в аккаунт. Делиться можно только построенным отчётом, и опрос должен быть опубликован: страница отчёта живёт на его адресе. Ссылка требует тарифа на публикацию результатов, PDF — на выгрузку. Ссылка на скачивание PDF действительна час.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
format string link (по умолчанию) или pdf.

Создаёт публичные ссылки для шеринга аналитики с заказчиками (без авторизации). Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Публичная ссылка summary создана."}],
  "isError": false,
  "url": "https://webask.io/results/..."
}
Для share_answers_link также может возвращаться поле shared_url. Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
date_from / date_to string (Для summary и answers). Формат Y-m-d.
type string (Для answers) full, in, not_in, answer.
answerIds array (Для answers) ID ответов.

Оформление отчётов

Цвета и подписи графиков в отчёте настраиваются на двух уровнях.

  • Общая палитра аккаунта — одна на весь воркспейс. Её используют опросы, у которых включён флаг results_appearance_use_shared.
  • Своя палитра опроса — поле results_appearance в update_quiz_settings.

Приоритет у общей: пока флаг включён, свои цвета опроса хранятся, но не применяются, и возвращаются, когда флаг выключают. Поэтому передача results_appearance заодно выключает флаг — иначе правка не дала бы эффекта.

Объект оформления одинаков везде:

Поле Значения
palette_id default, pastel, vivid, ocean, contrast, warm, mono, custom
custom_colors цвета своей палитры, #RRGGBB, от 2 до 14; меньше двух — палитра откатится на default
bar_color_mode single — один цвет на график, palette — свой цвет каждому варианту
font_family название гарнитуры Google Fonts или null
show_value_labels показывать значения на графике
show_grid_lines показывать линии сетки

Настройки строк отчёта задаются отдельным полем report_row_options: sort_mode (default, asc, desc) и value_format (both, count, percent). null в любом из этих полей возвращает стандартный вид.

Действующее оформление опроса приходит в quiz://{id}/structure: results_appearance (своё), results_appearance_use_shared (флаг), report_row_options и effective_results_appearance — то, которое реально применится.

get_workspace_report_appearance

Общая палитра аккаунта, библиотека наборов, значения по умолчанию и списки допустимых значений.

Параметр Тип Описание
workspace_id integer Обязательный. ID воркспейса из workspace://list.

update_workspace_report_palette

Задаёт общую палитру аккаунта. Все опросы с включённым флагом начинают рисовать отчёты ею сразу.

Параметр Тип Описание
workspace_id integer Обязательный. ID воркспейса.
settings object Обязательный. Объект оформления (таблица выше).

create_report_appearance_preset

Сохраняет набор оформления в библиотеку аккаунта, чтобы применять его к другим опросам. Набор — шаблон: его удаление или правка не меняют опросы, к которым его применяли. В воркспейсе можно хранить до 20 наборов.

Параметр Тип Описание
workspace_id integer Обязательный. ID воркспейса.
name string Обязательный. Название, до 40 символов.
settings object Обязательный. Объект оформления.

delete_report_appearance_preset

Удаляет набор из библиотеки. Опросы, к которым его применяли, своё оформление сохраняют.

Параметр Тип Описание
workspace_id integer Обязательный. ID воркспейса.
preset_id integer Обязательный. ID набора из get_workspace_report_appearance.

Выгрузки ответов и отчётов

Экспорт списка ответов и отчёта

Инструменты экспорта: export_answers_csv, export_answers_xlsx, export_answers_word, export_summary_pdf, export_filtered_report_pdf, export_filtered_report_word.

Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Файл CSV готов. Скачать по ссылке (действует 1 час, после скачивания файл удаляется): https://storage.webask.io/..."}],
  "isError": false,
  "quiz_id": 1,
  "format": "csv",
  "download_url": "https://storage.webask.io/..."
}
Ссылка на скачивание действует 1 час. Для вызова любого из этих инструментов используется один обязательный параметр: Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.

export_answers_spss

Выгружает ответы в формат SPSS (.sav) — тот же набор данных, что в CSV и XLSX.

Вместе с ответами в файл идут параметры ссылки, иначе часть колонок осталась бы безымянной. Возвращает подписанную ссылку на час; забытые файлы убирает почасовая уборка. Выгрузка результатов доступна не на всех тарифах.

Параметры те же, что у export_answers_csv и export_answers_xlsx. Если подходящих ответов нет, download_url приходит null — файла не создаётся.

Интеграции: CRM, мессенджеры, таблицы, вебхуки

Интеграции опроса

get_quiz_integrations показывает, куда опрос отправляет ответы кроме почты — Telegram, MAX, AmoCRM, Битрикс24, Zapier, Google Таблицы.

По каждой видно три вещи: подключена ли она, включена ли отправка и разрешает ли её тариф. Поле blocked называет причину, по которой ответы не уходят: not_connected, disabled или blocked_by_tariff; пусто — значит отправка работает.

Подключение остаётся в интерфейсе: это вход в чужой аккаунт или ввод токена. Вебхуки живут отдельными инструментами — там доступны и настройка, и журнал доставки.

manage_quiz_crm

Отправка ответов в CRM: show, activate, deactivate, check для amocrm или bitrix24.

Переключатель отправки и проверка живости подключения. Токен CRM отзывают на её стороне, и со стороны опроса это выглядит как молчащая интеграция — check отвечает отказом, когда доступа нет, а не «связь в порядке». Без подключённого портала любое действие отказывает: подключение требует входа в аккаунт CRM и делается в кабинете. Сопоставление полей здесь не настраивается — см. get_quiz_crm_fields.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
crm string (Обязательный) amocrm или bitrix24.
action string (Обязательный) show, activate, deactivate, check.

get_quiz_crm_fields

Справочники CRM и текущее сопоставление полей. Только чтение.

Отдаёт то же, что человек видит в форме настройки: поля лида, сделки, контакта и компании, воронки со стадиями, ответственных, типы — и рядом сохранённое у опроса сопоставление. Справочники читаются живыми запросами в портал, поэтому вызов не мгновенный и вернёт отказ при отозванном доступе. По умолчанию берутся только lead и contact: каждый раздел — отдельный запрос в CRM.

Менять сопоставление нельзя намеренно: настройки хранятся свободным JSON, форму которого задаёт адаптер доставки, и блок не той формы молча ломает отправку заявок. В ответе стоит mapping_editable: false.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
crm string (Обязательный) amocrm или bitrix24.
sections array lead, deal, contact, company, users, pipelines, types. По умолчанию lead и contact.
deal_category_id integer Номер воронки: стадии принадлежат воронке. Только Bitrix24.

manage_quiz_crm_mapping

Сопоставление полей опроса с полями Bitrix24. Одна сущность за вызов: lead, contact, company, deal.

Сущность заменяется целиком, остальные вызов не трогает; набор полей тоже заменяется целиком, иначе убранное поле осталось бы в настройках. Правка полей не выключает отправку: незаданный enabled берётся из прежних настроек.

Форма настроек — свободный JSON, и её задаёт адаптер доставки, а не валидация запроса (кабинет проверяет из всего блока два поля). Поэтому блок неверной формы не отклоняется, а молча ломает отправку заявок.

Форма блока сущности:

Пример
<entity> = {
    enabled: bool,            // сущность участвует в отправке
    fields: {                 // ключ — имя поля Bitrix24 (TITLE, PHONE, UF_CRM_…)
        <field>: {
            widget_id?: string,     // UUID вопроса: значение берётся из ответа
            static_value?: string   // либо постоянное значение
        }
    },
    category_id?: string,     // воронка, только у deal
    stage_id?: string         // стадия этой воронки, только у deal
}

В поле берётся widget_id, а при его отсутствии static_value. Название сущности обязательно: если TITLE собрать не удалось, адаптер подставляет Lead #<id ответа> или Deal #<id ответа>. У воронки по умолчанию стадия не начинается с C, у воронки N — начинается с CN:.

Инструмент отклоняет до записи: поле, где заданы и вопрос, и постоянное значение (адаптер взял бы вопрос, значение потерялось бы); поле без источника; стадию из чужой воронки; стадию у сущности, кроме сделки. Если стадия всё же отвалилась при сохранении, в ответе stage_dropped.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
entity string (Обязательный) lead, contact, company, deal.
enabled boolean Отправлять ли сущность. Незаданное остаётся прежним.
fields object Имя поля Bitrix24 → {widget_id} или {static_value}. Набор заменяется целиком.
title_type string Field (из ответа) или Static (заданный текст).
title_value string ID вопроса при Field, текст при Static.
company_title_value string То же для названия компании (lead, company).
status string Статус лида (STATUS_ID). Только lead.
add_id_to_title boolean Дописать номер заявки в название. Только lead.
category_id integer Номер воронки, 0 — по умолчанию. Только deal.
default_stage string Стадия. У воронки по умолчанию не с C, у воронки N — с CN:. Только deal.
link_to_lead boolean Привязать сделку к созданному лиду. Только deal.

manage_quiz_amocrm_mapping

Сопоставление полей опроса с полями amoCRM. Отдельный инструмент, потому что форма другая: не «сущность → поля», а «что активно» плюс словари по номерам.

Блоки: deal — сделки в перечисленных воронках, list — контакт (0), компания (1) и каталоги, task — задачи. Один блок за вызов, блок заменяется целиком, соседние не трогаются, незаданные словари остаются прежними — правка стадии не стирает сопоставление полей. Пустой active сохраняется как осмысленное значение «не создавать».

Каждое значение проверяется по живым справочникам портала до записи: воронка существует, стадия принадлежит своей воронке, идентификатор поля есть в справочнике, ответственный есть в списке пользователей. В bind значение обязано быть идентификатором вопроса — постоянных значений эта форма не поддерживает, и текст молча дал бы пустое поле в CRM. Если портал справочники не отдал, инструмент отказывает, а не пишет «на удачу».

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
block string (Обязательный) deal, list, task.
active array Номера воронок; для list0, 1 и номера каталогов. Пустой список — не создавать.
titles object Номер → ID вопроса или текст названия.
statuses object Номер воронки → стадия.
users object Номер воронки → ответственный.
use_price object Номер воронки → отправлять ли баллы в сумму сделки.
bind object ID поля amoCRM → ID вопроса опроса.
subtype object ID поля → уточнение вида значения (например, какой телефон).

manage_quiz_messenger

Настройки отправки ответов в мессенджер: telegram или max.

Отвечает на вопрос «куда именно уходят заявки»: список чатов, групп и людей, тема сообщения, какие вопросы из него исключены, есть ли кнопки. Действия: show, activate, deactivate, delete, toggle_buttons, save_widgets, remove_recipient, test.

Токены здесь не вводят: бот платформенный. activate заводит подключение и отдаёт bot_url — по этой ссылке человек добавляет бота в чат, и до этого шага отправлять некуда. Любое действие кроме activate отвечает отказом, если интеграция не подключена. test отказывает при выключенной отправке и при пустом списке получателей. Выбор темы форума в группе Telegram в инструмент не входит — текущая тема каждого получателя видна в show. Журнал доставки — get_integration_logs.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
messenger string (Обязательный) telegram или max.
action string (Обязательный) Действие из списка выше.
buttons_enabled boolean (Обязательный для toggle_buttons) Кнопки под сообщением.
subject string Тема сообщения, до 70 символов. Применяется при save_widgets.
hidden_widget_ids array ID вопросов, которые НЕ включать в сообщение. Список задаётся целиком: чего в нём нет, то вернётся в сообщение.
recipient_id string (Обязательный для remove_recipient) ID получателя из show.

get_integration_logs

Журнал отправки ответов в мессенджер: telegram или max.

Отдаёт текст отказа (бота выгнали из группы, чат удалён, токен отозван) и unsent_count. Журнал вебхуков — отдельный get_quiz_webhook_logs. Неподключённая интеграция отвечает отказом, а не пустым журналом.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
integration string (Обязательный) telegram или max.
page integer Страница, с 1. От новых к старым.
per_page integer 1–200, по умолчанию 20.

resend_integration_logs

Дослать в мессенджер то, что не ушло: одну запись по log_id или все неудачные за период.

Отправка идёт очередью, поэтому в ответе queued — сколько поставлено, а не сколько дошло. Повтор пачкой берёт ограниченное число записей за раз; если срезано, приходит truncated: true и вызов нужно повторить.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
integration string (Обязательный) telegram или max.
log_id integer Одна запись. Без неё — все неудачные.
date_from, date_to string Период для повтора пачкой, ГГГГ-ММ-ДД.

manage_quiz_google_sheets

Выгрузка ответов в Google Таблицы: show, activate, deactivate, delete, save_widgets, save_switchers, set_sync_mode, sync_now, export_all.

show отвечает на «почему в таблице нет новых ответов»: адрес и название таблицы, живой ли доступ (его отзывают на стороне Google), режим обновления, когда выгружали последний раз, какие вопросы исключены.

Состав вопросов задаётся целиком, поэтому вызов save_widgets без hidden_widget_ids отклоняется: иначе он снял бы все исключения и в таблицу поехали бы вопросы, которые автор оттуда убрал. Переключатели меняются по одному, но хотя бы один нужен. Подключение аккаунта и выбор таблицы — в кабинете: там вход в аккаунт Google и окно Google Диска.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
action string (Обязательный) Действие из списка выше.
hidden_widget_ids array ID вопросов, которые НЕ попадают в таблицу. Список задаётся целиком.
enable_timestamp boolean Столбец со временем ответа.
enable_personal_data boolean Выгружать персональные данные респондента.
sync_mode string realtime, scheduled, manual.
schedule_hour, schedule_minute integer Время обновления. Обязательны при scheduled.
export_mode string Для export_all: new_file, new_sheet, replace.

Вебхуки опроса

Отправка каждого ответа во внешнюю систему. Порядок работы такой же, как в интерфейсе: создать → проверить → включить.

Инструмент Что делает
get_quiz_webhooks список вебхуков и их состояние; идентификаторы приходят только отсюда
create_quiz_webhook добавляет вебхук — выключенным
update_quiz_webhook меняет вебхук; не переданные поля сохраняют текущие значения
toggle_quiz_webhook включает и выключает
get_quiz_webhook_logs журнал отправок: дошло или нет, что ответил приёмник
resend_quiz_webhook_log повторяет отправку: одну запись по log_id либо все недоставленные за период (date_from, date_to)
delete_quiz_webhook удаляет вебхук вместе с заголовками и журналом

Адрес должен быть публичным http или https — внутренние адреса не принимаются.

Новый вебхук создаётся выключенным намеренно: сначала стоит убедиться, что приёмник отвечает, и только потом включать отправку.

Отправка ответов доступна не на всех тарифах. Если опция не входит в тариф, вебхук нельзя создать, изменить или включить — но список, журнал, выключение и удаление остаются доступны, чтобы прежнюю настройку можно было разобрать.

После серии неудачных отправок вебхук отключается сам. Это видно в списке, включить обратно можно тем же toggle_quiz_webhook.

Ответ не приходит во внешнюю систему? Ответ на этот вопрос даёт только журнал: в нём видно код ответа приёмника и его тело. По самой настройке вебхука понять причину нельзя.

Zapier

manage_quiz_zapier — со стороны опроса это один переключатель: show, activate, deactivate, delete.

Связки собираются на стороне Zapier по подписке, ключей здесь вводить не нужно. delete снимает и подписки: связка перестанет получать ответы, и собирать её придётся заново в Zapier. show заодно показывает, сколько связок слушает опрос.

Счётчики и пиксели

manage_quiz_analytics ведёт Google Аналитику, Яндекс.Метрику и пиксели VK и Facebook: show, save, activate, deactivate, delete. Сервис выбирается параметром servicegoogle, yandex, vk, fb.

Номер счётчика не секрет, он виден в коде любой страницы, поэтому здесь ничего чужого вводить не приходится. Значение пишется в двух местах — в строку интеграции и в версию опроса, откуда его читает рендер; иначе счётчик числился бы включённым, а на странице не появлялся. У Google есть version (ga4 или ua), у Яндекса — is_webvisor.

Почта опроса

Письма, которые опрос шлёт сам по себе: уведомление автору о новом ответе и копия ответа респонденту. К e-mail рассылкам по контактным спискам это отношения не имеет — они в tools-mailing.md.

Письма опроса

Две независимые рассылки: уведомление автору о новом ответе и копия ответа респонденту. У каждой свой переключатель и свой шаблон.

Инструмент Что делает
get_quiz_email_settings что включено, адреса автора и их подтверждение, шаблоны писем
toggle_quiz_email включает и выключает письма автору (owner) или респонденту (client)
save_quiz_email_template тема и текст писем, адрес для ответа, промокод в письме
add_quiz_email_recipient добавляет адрес для уведомлений автору
toggle_quiz_email_recipient включает и выключает конкретный адрес
delete_quiz_email_recipient убирает адрес
set_quiz_email_questions какие вопросы не попадают в письмо

Порядок действий. Настройки писем появляются у опроса в момент, когда письма впервые включают или добавляют адрес. До этого шаблон сохранять некуда — инструмент так и скажет.

Три вида шаблона. Стандартное письмо WebAsk (use_default_tmpl), свой визуальный шаблон (formatted_letter — HTML из редактора) и полностью свой HTML (raw_html + raw_enabled), который уходит как есть, без обёртки WebAsk.

Полностью свой HTML работает только с подключённым своим SMTP. Без него письмо всё равно уйдёт визуальным шаблоном — сохранение при этом успешно, поэтому инструмент возвращает предупреждение. Подключён ли свой SMTP, видно в get_quiz_email_settings (own_smtp_connected).

Состав письма. По умолчанию в письмо попадают все вопросы и ответы на них. set_quiz_email_questions задаёт исключения — например, чтобы не слать в почту персональные данные. Списки для письма автору и копии респонденту независимы.

Адрес автора работает только после подтверждения. При добавлении на него уходит письмо со ссылкой; пока человек не подтвердил, уведомления туда не идут. В списке это поле checked.

Адрес респондента не задаётся напрямую. Он берётся из ответа на вопрос с почтой или из скрытой переменной опроса — на источник указывает client_source. Если переменную переименовать, указатель переезжает сам.

Копия ответа респонденту доступна не на всех тарифах, число адресов автора тоже ограничено тарифом.

manage_workspace_smtp

Своя почтовая служба аккаунта: show, logs, enable, disable, test.

Подключение одно на аккаунт: им уходят и письма опроса, и e-mail рассылки.

Пароль не возвращается — только has_password. Само подключение (хост, логин, пароль) заводит человек в кабинете: инструмент его не принимает. test шлёт письмо только на адрес владельца ключа, чужой адрес не передаётся. enable отказывает, пока подключение не заведено.

Параметр Тип Описание
workspace_id integer (Обязательный) ID workspace.
action string (Обязательный) show, logs, enable, disable, test.
limit integer Записей журнала, 1–200. По умолчанию 50.
offset integer Сколько записей журнала пропустить.

confirm_quiz_email_recipient

Подтверждает адрес получателя копий ответов кодом из письма.

Без подтверждения адрес не получает ничего: add_quiz_email_recipient только заводит его, и в базе он лежит с checked = false. Код приходит на сам адрес — ассистент его не видит, диктует человек. Попыток ограниченное число, поэтому есть resend_code.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
action string (Обязательный) confirm или resend_code.
email_id integer (Обязательный) ID адреса из get_quiz_email_settings.
confirmation_code integer Код из письма. Обязателен для confirm.

E-mail рассылки

Кампании по контактным спискам аккаунта: письма уходят людям, которых автор завёл сам, а не участникам прохождения опроса. Письма, которые шлёт сам опрос (уведомление автору о новом ответе, копия ответа респонденту), — в tools-quiz-emails.md.

Ассистент рассылки только читает. Отправка кампании, правка кампаний, списков и шаблонов, покупка писем через него недоступны: письмо уходит живым людям и отменить его нельзя, а цена ошибки — репутация домена аккаунта. Контакты загружают файлом. Это решение, а не недоделка: всё перечисленное делается в кабинете.

get_mailing_state

Состояние e-mail рассылок аккаунта. Только чтение.

Разделы: campaigns — список со сводкой, campaign — одна кампания с показателями, recipients — получатели с фильтром по статусу доставки, contact_lists — списки и сводка по контактам, contacts — контакты одного списка, templates — шаблоны писем, reputation — доля отказов и жалоб (по ней почтовые службы решают, пускать ли письма дальше), balance — сколько писем осталось, settings — отправитель и своя почтовая служба, smtp_logs — журнал отправок.

Параметр Тип Описание
workspace_id integer (Обязательный) ID workspace.
section string (Обязательный) Раздел из списка выше.
campaign_id integer Обязателен для campaign и recipients.
list_id integer Обязателен для contacts.
search string По названию и теме в campaigns, по адресу в recipients.
statuses array Статус письма у получателя, для recipients. Пустой список — все.
quiz_statuses array Прохождение опроса получателем, для recipients. Пустой список — все.
days integer Период репутации, по умолчанию 30.
limit, offset integer Постранично, 1–200 (по умолчанию 50).

Фильтры раздела recipients

Два независимых фильтра, оба необязательные.

statuses — что случилось с письмом: sent (отправлено), delivered (доставлено), opened (открыл), clicked (перешёл по ссылке), bounced (не доставлено), unsubscribed (отписался), complaint (пожаловался на спам). Статус у получателя один — последнее случившееся событие, поэтому открывший письмо в delivered не попадает, а перешедший по ссылке — в opened. Чтобы получить «письмо дошло» целиком, перечисляют все подходящие значения.

quiz_statuses — что получатель сделал с опросом: none (не начинал), started (начал и не закончил), completed (прошёл до конца). По этому фильтру в кабинете отбирают тех, кому досылать письмо. Прохождение считается по скрытой переменной с id получателя в ссылке письма, поэтому у кампании без привязки к опросу оно неизвестно ни у кого — фильтр вернёт пустой список, а в самих записях quizStatus будет null.

Неизвестное значение в любом из фильтров — ошибка валидации, а не молчаливое игнорирование: иначе ответ выглядел бы отфильтрованным, не будучи им.

Отправитель и своя почтовая служба аккаунта — общие с письмами опроса, настраиваются инструментом manage_workspace_smtp (см. tools-quiz-emails.md).

Аккаунт: профиль, участники, брендинг, домен, файлы

update_user_profile

Правка своего профиля: имя, язык интерфейса, часовой пояс, оформление, подписки на письма.

Часовой пояс важен отдельно — от него зависят все даты в отчётах и выгрузках. Передаются только те поля, которые нужно поменять; подписки можно менять по одной, остальные останутся как были. Смена почты и пароля недоступна (код из письма и текущий пароль), аватар тоже — это загрузка картинки. Чтение профиля — user://me.

Параметр Тип Описание
name string Имя, 3–255 символов. У владельца им же называются его аккаунты.
lang string Язык интерфейса и писем.
timezone string Часовой пояс вида Europe/Moscow.
theme string light, dark, auto.
subscribe_action, subscribe_billing, subscribe_marketing boolean Подписки на письма.

manage_user_sessions

Активные входы в аккаунт: list, close, close_all.

Показывает устройство, браузер, город и когда заходили последний раз. Отличие от кабинета: там «закрыть все» означает «все, кроме текущей», потому что запрос идёт из браузерной сессии. Ассистент работает по ключу и своей сессии не имеет, поэтому close_all закрывает все входы, включая тот, в котором человек сейчас работает в кабинете, — и требует confirm_close_all. Закрыть чужой вход нельзя: идентификатор сверяется со своим списком. На установке без Redis инструмент отказывает — там этих данных нет.

Параметр Тип Описание
action string (Обязательный) list, close, close_all.
session_id string (Обязательный для close) Идентификатор входа из list.
confirm_close_all boolean (Обязательный для close_all) Подтверждение.

Сведения об аккаунте и права

get_workspace_details отвечает на «что это за аккаунт и что мне в нём можно»: название, владелец ли текущий пользователь, включены ли AI-отчёты и вход через SSO, сколько папок, опросов и участников, и полный список его прав.

Половина отказов инструментов — это отсутствующее право, и по списку rights видно заранее, что получится. Рядом permissions — то же с оговоркой «только свои объекты». Возможности тарифа отдельно, в get_workspace_tariff.

В конструкторе всё это приходит одним куском вместе со списком опросов открытой папки, и тот эндпоинт заодно запоминает последний открытый аккаунт и папку. Здесь он не используется: от чтения побочных действий не ждут.

Участники и роли

Ассистент видит состав аккаунта и может раздавать доступы: приглашать людей, менять роли и папки, исключать участников, настраивать сами роли.

Инструмент Что делает
get_workspace_members состав аккаунта: роль, принято ли приглашение, доступные папки, последняя активность
get_workspace_roles роли аккаунта с правами и числом участников на каждой
get_workspace_member_access права одного участника — те же, по которым система отказывает в действии
invite_workspace_member приглашает человека: на его адрес уходит письмо со ссылкой
set_workspace_member_role меняет роль участника
set_workspace_member_folders задаёт, какие папки он видит; пустой список открывает все
remove_workspace_member исключает из аккаунта
resend_workspace_member_invite отправляет приглашение повторно
save_workspace_role создаёт роль или меняет её права
delete_workspace_role удаляет роль, её участники переходят на роль по умолчанию

Все эти действия закрыты тем же правом, что и в интерфейсе, — управлять участниками может владелец аккаунта и те, кому он это разрешил. Настройка ролей вдобавок доступна не на всех тарифах, число участников тоже ограничено тарифом.

О чём стоит помнить, поручая это ассистенту:

  • приглашение — письмо живому человеку, а исключение отбирает доступ сразу; вернуть исключённого можно только новым приглашением, и папки придётся назначить заново;
  • правка роли меняет возможности всех, кто на ней сидит, а не одного человека;
  • список папок задаётся целиком: передали три — участник видит ровно их.

Права принимают три значения: allowed — разрешено, partially — только свои объекты, forbidden — запрещено.

У роли есть базовые права на весь аккаунт и, дополнительно, отличия по отдельным папкам: в такой папке действует своё значение, в остальных — базовое. Отличия задаются аргументом folder_permissions у save_workspace_role: аргумент не передан — отличия не меняются, пустой список снимает все. По папкам настраиваются только действия с опросами и самими папками; участники, биллинг, рассылки, файлы, API, почта, шаблоны и темы остаются правами аккаунта целиком.

Что действует у конкретного участника, показывает get_workspace_member_access: общий набор в поле access, отличия — в folder_access (папка, её имя и права, которые действуют именно в ней). Папки, к которым участника не пускают, в отличия не попадают: там они ни на что не влияют.

Три повода, по которым доступ пропадает, а в роли всё выглядит правильно:

  • приглашение отправлено, но человек по нему не перешёл;
  • участник не подтвердил почту — до подтверждения ему отказывают независимо от роли;
  • у участника ограничен список папок — тогда опросы из других папок он не видит.

Первые две причины get_workspace_member_access называет прямо в поле blocked.

Брендинг воркспейса

Логотип и копирайт — настройки воркспейса, а не отдельного опроса: они действуют сразу на все его опросы, отчёты и PDF. Поэтому у них свои инструменты, а в update_quiz_settings этих полей нет.

update_workspace_branding

Показ логотипа и копирайта.

Параметр Тип Описание
workspace_id integer Обязательный. ID воркспейса из workspace://list.
logo_show boolean Показывать логотип воркспейса.
show_copyright boolean Показывать копирайт WebAsk.

Нужно передать хотя бы один из двух параметров.

Скрытие копирайта (show_copyright: false) доступно не на всех тарифах — на остальных инструмент вернёт ошибку, а значение останется включённым.

Загрузка логотипа по ссылке или из base64. Укажите ровно один способ.

Параметр Тип Описание
workspace_id integer Обязательный. ID воркспейса.
url string Публичная http(s) ссылка на файл.
file_base64 string Содержимое файла в base64 (допускается префикс data:...;base64,).
filename string Имя файла — для загрузки из base64.

Форматы: jpeg, jpg, png, webp. Предел размера — 1 МБ. Свой логотип доступен не на всех тарифах.

Удаляет логотип воркспейса. Параметр один — workspace_id.

Своё хранилище файлов

Аккаунт на Premium и выше может складывать файлы ответов в собственное хранилище — S3 или Яндекс.Диск. Подключение остаётся в интерфейсе: для S3 это ввод ключа доступа и секрета, для Яндекс.Диска — вход в аккаунт. Ассистенту доступно состояние и диагностика.

Инструмент Что делает
get_workspace_storage что подключено, работает ли, шаблон пути, сколько файлов лежит в хранилище
get_workspace_storage_usage занятое место: диск платформы отдельно от своего хранилища
verify_workspace_storage проверяет связь: пробует записать и прочитать пробный файл
get_workspace_hidden_files сколько файлов скрыто из-за нехватки места и сколько стоит их раскрыть

Два состояния, которые стоит знать:

  • Хранилище отвалилось. Запись временно уходит на диск платформы, статус становится fallback. Удачная проверка через verify_workspace_storage возвращает запись обратно; запустить её может только владелец аккаунта.
  • Файлы скрыты. Сверх дисковой квоты вложения не удаляются, а скрываются — со стороны автора это выглядит как их пропажа. Раскрывает апгрейд тарифа или оплата; оплату ассистент не проводит.

Идентификатор ключа доступа S3 ассистент видит только последними символами, секрет и токены — никогда.

Две особенности: подсчёт занятого места в своём S3 при первом обращении обходит бакет и может занять несколько секунд, а проверка связи, в отличие от правок настроек опроса, попадает не в журнал правок ассистента, а в журнал хранилища.

manage_workspace_files

Файлы аккаунта: overview, list, delete.

overview — сколько занято, сколько разрешает тариф, разбивка по опросам. list — файлы с фильтрами по опросу, виду медиа, хранилищу и владельцу, с поиском и сортировкой.

Удаление необратимо, а файл респондента приложен к его ответу — после удаления в ответе останется ссылка в никуда. Поэтому confirm_delete обязателен всегда, а не только для режима «все». delete_all вместе со списком файлов отклоняется. Режим «все» уходит очередью, поэтому числа удалённых в ответе нет — приходит queued: true. Загрузка файлов и скачивание архивом недоступны.

Параметр Тип Описание
workspace_id integer (Обязательный) ID workspace.
action string (Обязательный) overview, list, delete.
owner string owner, respondent, both.
media_type string image, video, audio.
storage string default, s3, yandex_disk.
quiz_id integer Файлы только этого опроса.
search string Поиск по имени файла.
sort_by, sort_direction string quiz_id/size/created_at/storage, asc/desc.
page, per_page integer Страница и размер, 1–200 (по умолчанию 30).
quiz_ids array (Обязательный для delete) Опросы, в которых удаляем.
file_ids array Конкретные файлы. Без них нужен delete_all.
delete_all boolean Все файлы перечисленных опросов.
confirm_delete boolean (Обязательный для delete) Подтверждение.

manage_workspace_domain

Адрес аккаунта: show, set_subdomain, set_type.

show отдаёт текущий вид адреса, поддомены, свой домен, состояние сертификата и что разрешает тариф. Подключение своего домена в инструмент не входит: там правка DNS на стороне владельца и выпуск сертификата с недельным лимитом на повторы — это делают в кабинете. Адрес отдельного опроса внутри домена меняет set_quiz_link.

Параметр Тип Описание
workspace_id integer (Обязательный) ID workspace.
action string (Обязательный) show, set_subdomain, set_type.
subdomain string Имя поддомена. Обязателен для set_subdomain; пустая строка убирает поддомен и возвращает аккаунт на служебный адрес.
subdomain_kind string default или other_subdomain.
domain_type string default, subdomain, other_subdomain, domain.

get_workspace_domain_status

Свой домен или поддомен аккаунта и состояние его сертификата. Только чтение: привязка домена — это правка DNS на стороне владельца. Нужен, когда публичная ссылка не открывается: чаще всего домен привязан, а сертификат ещё не выпущен.

Параметр Тип Описание
workspace_id integer Обязательный. ID воркспейса из workspace://list.

Тариф, оплата в опросе, партнёрка, респонденты

Тариф аккаунта

get_workspace_tariff отвечает на вопрос, который стоит за половиной отказов: что именно мешает — кончился лимит, истёк срок или возможности нет в тарифе.

Показывает код тарифа, оплачен ли он и сколько дней осталось; остатки по опросам, ответам, участникам, темам, месту на диске и адресам для писем; и полный список возможностей — свой домен, своё хранилище, роли, выгрузка ответов, публичные ссылки на результаты, AI-отчёт, каждая интеграция отдельно.

Приём оплаты в опросе стоит отдельным признаком features.quiz_payment, а не среди интеграций: тарифная опция у него своя, и раньше он всегда показывался недоступным. Интеграции лежат в features.integrations под своими кодами (google_sheets, telegram, webhook и остальные).

Только чтение: сменить тариф или оплатить через ассистента нельзя.

Список тарифов

get_tariff_list показывает все тарифы с ценами, периодами и составом. Нужен, когда упёрлись в «недоступно на текущем тарифе»: по списку видно, какой тариф решает задачу. Цены считаются с учётом текущего тарифа — доплата при переходе уже учтена.

Только чтение: оплатить или сменить тариф через ассистента нельзя.

manage_quiz_payment

Приём оплаты в опросе через ЮKassa: show, save.

Счета продавца здесь не заводятся: для них нужны идентификатор магазина и секретный токен ЮKassa, а платёжные ключи через ассистента не передают. По той же причине токен вырезан из списка счетов — наружу уходит только то, по чему счёт можно выбрать.

Отдельного переключателя «включить оплату» нет, и это не упущение: такой колонки в настройках не существует. Оплата работает, когда у аккаунта есть счёт продавца и тариф разрешает виджет оплаты (в ответе — payment_ready), а показ самого вопроса с оплатой задаётся его виджетом через update_quiz_widgets.

Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
action string (Обязательный) show или save.
yookassa_account_id integer (Обязательный для save) Счёт продавца из show. Чужой отклоняется.
payment_type string (Обязательный для save) fixed или scoring.
fixed_amount number Сумма. Обязательна при fixed: иначе оплата ушла бы на ноль.
contact_widget_id string/null Вопрос, из которого берут контакт для чека.

get_respondent_campaigns

Заказанные респонденты: кампании закупки прохождений и их результат. Только чтение.

Без campaign_id — список кампаний аккаунта плюс цена одного ответа и минимальный размер группы. С campaign_id — карточка: статус и модерация, просмотры, ответы, конверсия, первое и последнее прохождение, среднее время, соцдем заказа и данные об оплате. Заказать кампанию и оплатить через ассистента нельзя: это списание денег. Расчёт доступной аудитории по соцдему — в кабинете.

Параметр Тип Описание
workspace_id integer (Обязательный) ID workspace.
campaign_id integer Одна кампания. Без него — список.

Партнёрская программа

get_partner_program показывает партнёрскую статистику: баланс к выплате и удержанное, кто пришёл по партнёрской ссылке и сколько раз оплатил, начисления за период и метки источников — их партнёр вешает на свои каналы, чтобы отличать, откуда идут люди.

Период задаётся датами, выдачу можно сузить одной меткой. Только чтение: заявка на выплату и платёжные реквизиты остаются в кабинете.

Метки партнёрских источников

manage_partner_source заводит, переименовывает и удаляет метки: create, rename, delete. Название — от 3 до 25 символов; при create без названия подставляется имя по порядку, как в кабинете.

Метка отделяет один канал продвижения от другого — по ней в статистике видно, откуда пришёл человек. Сами метки и статистику по ним показывает get_partner_program. Метки принадлежат партнёру, а не аккаунту: чужую не тронуть.

Промокоды

Промокоды (Доступно на платных тарифах)

create_promocode_group

Создаёт новый список промокодов для workspace. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Список промокодов создан."}],
  "isError": false,
  "list_id": 10
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса в нужном workspace.
name string (Обязательный) Название списка.
codes array (Обязательный) Массив строковых кодов (до 1000).

add_promocodes

Добавляет новые промокоды в существующий список. Структура ответа (успех):

JSON
{
  "content": [{"type": "text", "text": "Промокоды успешно добавлены."}],
  "isError": false,
  "added_count": 5
}
Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса в нужном workspace.
list_id integer (Обязательный) ID списка промокодов (promocode://list).
codes array (Обязательный) Массив строковых кодов.

manage_promocode_group

Правит списки промокодов: update (название, вид и размер кода), delete, attach, detach, delete_code.

Завести список и досыпать кодов — это create_promocode_group и add_promocodes. Удаление списка уносит все его коды и требует confirm_delete. Промокоды доступны не на всех тарифах.

Параметр Тип Описание
quiz_id integer (Обязательный) Опрос, от которого проверяются права и тариф.
action string (Обязательный) update, delete, attach, detach, delete_code.
list_id integer ID списка. Не нужен для detach и delete_code.
name string Новое название списка. Обязательно для update.
code_format string text, qr, barcode, datamatrix.
code_width, code_height integer Размер кода в пикселях, 20–2000.
quiz_ids array Опросы для attach и detach, до 200. Опрос чужого аккаунта не проглатывается молча — приходит отказ со списком.
code_id integer ID кода для delete_code (get_promocode_codes).
confirm_delete boolean Подтверждение удаления списка вместе с кодами.

get_promocode_list_quizzes

Показывает, к каким опросам аккаунта привязан список промокодов.

Сверху идут привязанные и текущий опрос, как в кабинете. Нужен, чтобы не отвязывать вслепую: саму привязку и отвязку делает manage_promocode_group.

Параметр Тип Описание
quiz_id integer (Обязательный) Опрос, от которого проверяются права и тариф.
list_id integer (Обязательный) ID списка из get_promocode_list.
search string Поиск опроса по названию.
limit integer Сколько вернуть, 1–500. По умолчанию 50.
offset integer Сколько пропустить.

Чтение данных: get-инструменты

Чтение данных (Get tools)

Эти инструменты являются полными аналогами ресурсов (Resources) для клиентов, не поддерживающих resources/read.

get_user_me

Возвращает информацию о текущем авторизованном пользователе. Параметры не требуются.

get_workspace_list

Возвращает список рабочих пространств. Параметры не требуются.

get_folder_list

Возвращает список папок текущего пользователя. Параметры не требуются.

get_quiz_list

Возвращает список опросов аккаунта. Без параметров — все живые опросы, как раньше.

Архивные опросы в обычный список не попадают: их показывает archived: true. У каждого опроса есть признак is_archived.

Параметр Тип Описание
name string Поиск по названию, частичное совпадение без учёта регистра.
folder_id integer Только опросы этой папки (folder://list).
archived boolean true — архивные вместо обычных. По умолчанию false.
limit integer Сколько вернуть, 1–200.
offset integer Сколько пропустить.

get_quiz_structure

Возвращает структуру виджетов опроса. Аналог quiz://{id}/structure. Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.

get_quiz_answers

Возвращает ответы респондентов. Аналог quiz://{id}/answers. Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
limit integer Количество ответов (по умолчанию 20, макс. 100).
offset integer Смещение (по умолчанию 0).
date string Фильтр по дате (формат Y-m-d).
is_complete boolean true — только завершённые, false — незавершённые.
sort string Поле сортировки: date_end или date_start.
order string Направление: asc или desc.

get_quiz_hidden_options

Возвращает скрытые служебные опции опроса. Аналог quiz://{id}/hidden_options. Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.

get_quiz_texts

Возвращает надписи (тексты) опроса. Аналог quiz://{id}/texts. Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.

get_quiz_variables

Возвращает скрытые переменные (UTM/extra_fields). Аналог quiz://{id}/variables. Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.

get_quiz_summary

Возвращает сводную аналитику опроса. Аналог quiz://{id}/summary. Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.

Ответ приходит в одной из двух форм — по формату опроса.

Обычный опрос (type = regular) — как раньше: визиты, устройства, география, воронка по дням.

Опрос на сайте (type = micro) показывается карточкой внутри чужой страницы и своей страницы не имеет, поэтому визитов у него нет и обычная сводка отдала бы нули. Вместо неё приходит воронка показов:

Поле Тип Описание
quiz_type string Всегда micro. У обычного опроса ключа нет вовсе — по нему форма и различается.
is_connected boolean false — опрос ещё не подключён ни к одному сайту, показов не было, остальных полей нет.
site_domain string Домен сайта, на котором показывается опрос.
summary object Воронка и разрезы: показы (события и посетители), открытия, начатые и завершённые прохождения, отказы, на каком вопросе бросают, по дням, страницам, устройствам и странам, а также причины, по которым опрос не показали.

Пока подключения нет, ответ ограничен признаками:

JSON
{ "quiz_type": "micro", "is_connected": false }

get_quiz_report

Возвращает детальный отчёт по виджетам. Аналог quiz://{id}/report. Возвращает report_uuid, нужный для get_quiz_report_files и get_quiz_report_inputs. Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
is_complete boolean Только завершённые (по умолчанию true).
date_from string Начало периода (Y-m-d).
date_to string Конец периода (Y-m-d).

get_quiz_widgets_hidden

Возвращает скрытую мета-информацию виджетов. Аналог quiz://{id}/widgets_hidden. Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.

get_quiz_report_filters

Возвращает сохранённые фильтры отчётов. Аналог quiz://{id}/report_filters. Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.

get_quiz_report_files

Возвращает файловые ответы для виджета из отчёта. Аналог quiz://{id}/report/{uuid}/files. Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
report_uuid string (Обязательный) UUID отчёта из get_quiz_report.
widget_id string (Обязательный) UUID виджета из get_quiz_structure.
widget_hash string (Обязательный) Hash виджета из get_quiz_structure.
limit integer Количество записей (по умолчанию 50).
offset integer Смещение (по умолчанию 0).

get_quiz_report_inputs

Возвращает текстовые ответы на input-виджеты из отчёта. Аналог quiz://{id}/report/{uuid}/inputs. Параметр Тип Описание
quiz_id integer (Обязательный) ID опроса.
report_uuid string (Обязательный) UUID отчёта из get_quiz_report.
widget_id string (Обязательный) UUID виджета из get_quiz_structure.
widget_hash string (Обязательный) Hash виджета из get_quiz_structure.
limit integer Количество записей (по умолчанию 50).
offset integer Смещение (по умолчанию 0).

get_theme_list

Возвращает список тем оформления. Аналог theme://list. Параметры не требуются.

get_theme_details

Возвращает детальные настройки темы. Аналог theme://{id}/details. Параметр Тип Описание
theme_id integer (Обязательный) ID темы.

get_promocode_list

Возвращает списки промокодов воркспейса. Аналог promocode://list. Параметр Тип Описание
workspace_id integer (Обязательный) ID рабочего пространства.
search string Поисковая строка.
sort string Поле сортировки.
order string asc или desc.
offset integer Смещение (по умолчанию 0).
limit integer Количество записей (по умолчанию 20).

get_promocode_codes

Возвращает коды конкретного списка промокодов. Аналог promocode://{id}/codes. Параметр Тип Описание
list_id integer (Обязательный) ID списка из get_promocode_list.
workspace_id integer (Обязательный) ID рабочего пространства.
search string Поисковая строка.
used integer 1 — использованные, 0 — неиспользованные.
sort string Поле сортировки.
order string asc или desc.
offset integer Смещение (по умолчанию 0).
limit integer Количество записей (по умолчанию 20).