> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Анкеты KYC: конструктор динамических форм и API

> Конструктор анкет KYC от Didit с drag-and-drop, мультиязычностью, условной логикой и маршрутизацией на ручную проверку. Оплата $0.10 за вызов.

Анкеты Didit позволяют создавать структурированные динамические формы для сбора дополнительной информации от пользователей во время верификации. Используйте наш визуальный конструктор для добавления элементов перетаскиванием, организуйте контент по разделам, локализуйте текст для нескольких языков и при необходимости отправляйте результаты на ручную проверку.

Промпт для интеграции Анкет
        Скопировать промпт в буфер обмена



      
      

\<pre>

\````# Goal
Integrate Didit Questionnaires (custom KYC/KYB forms with conditional logic and manual-review routing) into your app.

\# Delivery mode
Questionnaires are **session-only**. The form is designed in the Business Console (drag-and-drop builder) and bound to a workflow via the QUESTIONNAIRE feature. There is no standalone questionnaire submission API — answers are collected through the hosted Didit flow.

\# Steps
1\. Build the questionnaire in the Business Console (Questionnaires tab). Define sections, fields, conditional visibility, multi-language labels, and **custom status rules** (e.g. "if source_of_funds = 'crypto' set status to In Review").
2\. Add the QUESTIONNAIRE feature to a workflow and select the questionnaire id (POST /v3/workflows/ or the Console).
3\. Create a session — POST /v3/session/ with { workflow_id, vendor_data, callback }. See /sessions-api/create-session.
4\. Open session.url for the user (or mount the Web/Mobile SDK) — the form renders inside the flow.
5\. Fetch the decision — GET /v3/session/{sessionId}/decision/ or subscribe to session.status.updated.

curl (create session):
\```bash
curl -X POST 'https://verification.didit.me/v3/session/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"workflow_id": "YOUR_WORKFLOW_ID",
"vendor_data": "user-1234",
"callback": "https://yourapp.com/post-kyc"
}'
\```

\# Decision surface
The result lands under `questionnaire_responses[]` on the decision payload (one entry per questionnaire node). Each entry includes:
\- `status` — final status for this questionnaire instance (driven by your custom status rules).
\- `answers` — array of { question_id, question_label, value } pairs (or nested sections).
\- `warnings` — any rule-triggered warnings.

\# Status enum (per questionnaire_responses[].status)
"Not Started" | "In Progress" | "Approved" | "In Review" | "Declined" | "Abandoned" | "Kyc Expired"

\# Warnings (LogWarningChoices.QUESTIONNAIRE)
The dominant risk code is CUSTOM_STATUS_RULE_TRIGGERED — emitted whenever an answer matches a Console-configured rule that escalates the status. The warning's `additional_data` carries the rule id and matched answer so reviewers can see why the session was routed.

Full catalogue: questionnaire warnings are documented inside the report page — see /core-technology/questionnaires/report-questionnaire.

\# Failure modes to handle
\- questionnaire_responses[] empty — user abandoned the form. The session status will reflect "Abandoned"; treat per your retention policy.
\- status="In Review" with CUSTOM_STATUS_RULE_TRIGGERED — answers crossed your manual-review rule; surface the relevant answers in your reviewer UI.
\- status="Declined" — answers crossed a decline rule (e.g. user declared they are a sanctioned-country resident); do not approve.

\# See also
\- Canonical schema: /reference/data-models#questionnaire-response
\- Per-feature report: /core-technology/questionnaires/report-questionnaire
\- Full integration playbook: /integration/integration-prompt````

\</pre>



      
      

Вставьте в

В уроке Didit Academy о чтении результатов верификации тема Document AI и анкет разбирается в главе на отметке 11:54.[Document AI и анкеты — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?start=714\&rel=0\&playsinline=1)***## Два способа создания анкетDidit предлагает **два разных подхода** к созданию анкет, позволяя выбрать подходящий уровень сложности под ваши задачи:![Простой и расширенный режимы конструктора KYC-анкет Didit рядом друг с другом](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/questionnaires-simple-and-complex.jpg?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=71d18d67b4684cca46c7809ba43cfcb6)### 1. Простой режим: быстрый конструктор форм**Простой режим** идеально подходит для быстрого создания несложных форм. Используйте интуитивно понятный интерфейс перетаскивания, чтобы добавлять элементы, настраивать обязательные поля и публиковать анкеты за считанные минуты.![Интерфейс конструктора анкет Didit методом перетаскивания в простом режиме](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/questionnaires-simple.jpg?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=8e777d8fc72ca16e8e2deb65a0a66e92)**Оптимально для:**- Форм для быстрого сбора данных
- Простых опросов и аттестаций
- Команд, только начинающих работать с конструкторами форм
- Одноязычных анкет**Как это работает:**1) Откройте конструктор анкет
2) Перетащите элементы из палитры в форму
3) Настройте каждый элемент (название, обязательность, плейсхолдер)
4) Просмотрите форму и опубликуйте её***### 2. Расширенный режим: визуальный конструктор графов**Расширенный режим** открывает мощные возможности для сложных сценариев сбора данных с помощью **визуального редактора узлов**. Создавайте сложные анкеты с условной логикой, ветвлением путей и полным контролем над процессом.![Визуальный редактор графа анкет Didit на основе узлов с логикой ветвления в расширенном режиме](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/questionnaires-node-based.jpg?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=7ff0c1d79f500ed3f78dca4ff89b0698)**Оптимально для:**- Многоязычных анкет
- Сложных форм с условным ветвлением
- Сбора данных в комплаенс-целях с различными маршрутами
- Форм, требующих сценариев ручной проверки**Ключевые возможности:**- **Визуальный редактор узлов**: перетаскивайте и соединяйте узлы на бесконечном холсте
- **Умные соединения**: потяните от маркера узла на пустое место, чтобы мгновенно создать и подключить новый узел
- **Условное ветвление**: направляйте пользователей к разным вопросам на основе предыдущих ответов, а затем [объединяйте пути на общем шаге](#объединение-путей-ветвления-в-общий-шаг)
- **Многоязычность**: переводите весь контент, видимый пользователям
- **Сочетания клавиш**: отмена (Ctrl/Cmd+Z), повтор (Ctrl/Cmd+Shift+Z), удаление (Delete/Backspace)
- **Масштабирование и перемещение**: ориентируйтесь в сложных формах с помощью масштабирования колесиком мыши и перемещения перетаскиванием#### Типы узлов в конструкторе графов| Тип узла | Цвет | Описание | Когда использовать |
| - | - | - | - |
| **Узлы вопросов** | Синий | Элементы ввода для сбора данных пользователя | Текстовые поля, выпадающие списки, загрузка файлов, даты и т. д. |
| **Текстовые узлы** | Зеленый | Контент только для чтения, отображаемый пользователям | Инструкции, пояснения, юридический текст |
| **Узлы ветвления** | Оранжевый | Условная маршрутизация на основе ответов | «Если страна US, показать налоговую форму» |
| **Узлы разделов** | Серый | Визуальная группировка связанных элементов | Организация вопросов в логические разделы |> **Правила соединения:** узлы разделов и текстовые узлы могут подключаться к вопросам и другим текстовым узлам, но не напрямую к узлам ветвления. Узлы ветвления могут подключаться к узлам любого типа.#### Операторы условийУсловие ветвления сравнивает предыдущий ответ со значением.
Объединяйте несколько условий с помощью `and` или `or`.| Оператор | Срабатывает, когда ответ |
| - | - |
| `equals` | Равен значению |
| `not_equals` | Не равен значению |
| `contains` | Содержит значение |
| `greater_than` | Больше значения |
| `greater_than_or_equals` | Больше или равен значению |
| `less_than` | Меньше значения |
| `less_than_or_equals` | Меньше или равен значению |
| `in` | Является одним из значений списка |
| `not_in` | Не входит в список значений |
| `is_empty` | Оставлен пустым |
| `is_not_empty` | Заполнен |#### Объединение путей ветвления в общий шагВетвление не обязательно должно быть однонаправленным. Окончание нескольких путей можно подключить к одному и тому же последующему узлу, и после этого анкета продолжится по одному общему пути. Общие вопросы создаются и поддерживаются в одном месте, а не дублируются в конце каждого пути.**Пример: дополнительные вопросы при ответе «Да», затем общая цепочка шагов**1) Добавьте **узел вопроса** с вопросом типа **Одиночный выбор**, предлагающим варианты «Да» и «Нет», а затем **узел ветвления** после него с путями `Yes` и `No`.
2) В пути `Yes` добавьте дополнительные вопросы, которые актуальны только при ответе «Да».
3) В конце этого пути добавьте первый вопрос, на который должны ответить все респонденты после ветвления — начало общей цепочки.
4) Направьте путь `No` на этот вопрос: откройте меню **+** в конце пути `No` и выберите **Подключить существующий шаг** или потяните от соединителя пути `No` и отпустите на верхнем крае общего вопроса. Холст соединяется только с небольшой целевой областью вверху карточки, поэтому отпускание курсора по центру карточки ничего не сделает.
5) Продолжайте добавлять оставшиеся общие вопросы после первого, затем опубликуйте анкету. Холст отобразит общую цепочку один раз, под путями, ведущими к ней.Таким способом путь может соединяться с уже существующим узлом, и несколько путей могут указывать на один и тот же узел. Соединение определяет, куда продолжается этот путь, поэтому меню **+** предлагает действие **Подключить существующий шаг**, пока путь заканчивается в этой точке. Соединение, которое создало бы замкнутый цикл к более раннему узлу, отклоняется.Респонденты отвечают на общие вопросы один раз, независимо от выбранного пути; вопросы из невыбранного пути пропускаются. Payload решения подчиняется тому же правилу: `questionnaire_responses[].sections[].items` содержит только элементы из того пути, по которому прошел респондент. См. раздел [Условная видимость](https://docs.didit.me/ru/core-technology/questionnaires/report-questionnaire.md#условная-видимость).***## Шаблоны анкетШаблоны помогают быстро начать работу с предварительно настроенными формами для распространенных сценариев использования. Вы можете использовать их как есть или настроить под свои нужды.![Didit questionnaire pre-built templates for source of funds and KYC compliance](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/questionnaires-template.jpg?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=97a45bd55692379ffc057e11f4530a54)### Готовые шаблоны| Шаблон | Описание | Типичные элементы |
| - | - | - |
| **Источник средств** | Фиксация источников дохода и подтверждающей документации | Выпадающий список, длинный текст, загрузка файла |
| **Сведения о трудоустройстве** | Сбор сведений о должности, работодателе, диапазоне дохода | Короткий текст, выпадающий список, число |
| **Цель счета** | Понимание планируемого использования аккаунта | Одиночный выбор, множественный выбор, длинный текст |
| **Структура бенефициарного владения** | Идентификация UBO и структуры владения | Короткий текст, число, загрузка файла |
| **Налоговое резидентство** | Сбор связанных с налогами деклараций | Страна, согласие, загрузка файла |
| **Оценка рисков** | Сбор информации, связанной с рисками | Множественный выбор, выпадающий список, длинный текст |***## Как это работаетНаш сценарий работы с анкетами разработан для обеспечения гибкости и возможности аудита:### 1. Создание в консоли (без кода)- Перетаскивайте элементы для создания анкеты
- Организуйте контент по нескольким разделам для наглядности
- Отмечайте элементы как обязательные или необязательные
- Настраивайте плейсхолдеры и вспомогательные описания
- Добавляйте варианты (с возможностью ввода поясняющего текста) для выпадающего списка и одиночного выбора
- Настраивайте лимиты загрузки файлов/изображений для каждого элемента### 2. Локализация контента- Укажите контент один раз на языке, заданном в `default_language` анкеты
- Задайте поддерживаемые `languages` — при публикации каждый заголовок, описание, плейсхолдер, название варианта и сообщение валидации **переводятся автоматически** на все эти языки
- Корректируйте любой перевод вручную в конструкторе; ручные правки сохраняются до тех пор, пока не изменится исходный текст
- Конечный пользователь автоматически видит контент на наиболее подходящем из доступных языков### 3. Публикация и сбор данных- Активируйте анкету и встройте её в свой процесс верификации
- Конечные пользователи заполняют разделы и отправляют ответы
- Загруженные файлы (документы, изображения) сохраняются и привязываются к ответу### 4. Проверка и принятие решения* Ответы сохраняются со `status`: `Approved`, `In Review` или `Not Finished`
* Вы можете принудительно переводить все ответы анкеты в статус `In Review`, чтобы специалист утверждал их вручную
* Проверяйте ответы и файлы в консоли, затем переводите в статус `Approved`> Примечание: Анкеты не генерируют предупреждений о рисках. Контроль осуществляется через обязательные поля, правила валидации и сценарии проверки.***## Ключевые возможности| Возможность | Простой режим | Расширенный режим |
| - | - | - |
| Конструктор с перетаскиванием | ✅ | ✅ |
| Обязательные/необязательные поля | ✅ | ✅ |
| Плейсхолдеры и описания | ✅ | ✅ |
| Несколько разделов | ✅ | ✅ |
| Лимиты на загрузку файлов | ✅ | ✅ |
| Визуальный редактор графа | ❌ | ✅ |
| Условные ветвления | ❌ | ✅ |
| Многоязычные переводы | ❌ | ✅ |
| Логика вариантов (требовать текст) | ❌ | ✅ |
| Принудительная ручная проверка | ❌ | ✅ |
| Поддержка отмены/повтора действий | ❌ | ✅ |
| Горячие клавиши | ❌ | ✅ |**Полный список функций:**- **Визуальный конструктор**: создавайте анкеты и управляйте ими с помощью интуитивного редактора с перетаскиванием
- **Разделы**: группируйте связанные вопросы; добавляйте заголовки и разделители для удобства пользователей
- **Автоматические переводы**: напишите контент на одном языке — весь отображаемый пользователю текст переводится на все выбранные языки при публикации, с поддержкой ручной корректировки
- **Валидация**: помечайте поля как обязательные; задавайте максимальное количество файлов для элементов загрузки
- **Логика вариантов**: для выпадающего списка/одиночного выбора можно требовать дополнительный текст для каждого выбранного варианта
- **Загрузка файлов**: собирайте документы и изображения с лимитами на количество файлов (например, до 3 файлов)
- **Ручная проверка**: возможность принудительно переводить все ответы в статус `In Review` для ручного подтверждения человеком
- **Переключатель активации**: включайте или отключайте анкету для каждого приложения
- **Интеграция со сценариями**: добавляйте анкеты в KYC или запускайте их отдельно в рамках сценария Questionnaire Verification
- **API и webhook**: получайте структурированные результаты через API и отслеживайте обновления с помощью webhook***## Типы элементовВ конструкторе можно добавить следующие типы элементов (доступны для выбора в консоли):### Элементы ввода| Элемент | Описание | Параметры конфигурации |
| - | - | - |
| **SHORT\_TEXT** | Однострочный произвольный текст | Плейсхолдер, обязательное поле |
| **LONG\_TEXT** | Многострочный произвольный текст | Плейсхолдер, обязательное поле |
| **NUMBER** | Числовой ввод | Плейсхолдер, обязательное поле |
| **EMAIL** | Ввод адреса электронной почты с валидацией | Плейсхолдер, обязательное поле |
| **PHONE** | Ввод номера телефона | Плейсхолдер, обязательное поле |
| **ADDRESS** | Ввод адреса | Плейсхолдер, обязательное поле |
| **DATE\_PICKER** | Выбор даты | Плейсхолдер, обязательное поле |
| **TIME** | Ввод времени | Плейсхолдер, обязательное поле |### Элементы выбора| Элемент | Описание | Параметры конфигурации |
| - | - | - |
| **DROPDOWN** | Одиночный выбор из списка | Варианты, `requires_text_input` для каждого варианта |
| **SINGLE\_CHOICE** | Одиночный выбор (радиокнопки) | Варианты, `requires_text_input` для каждого варианта |
| **MULTIPLE\_CHOICE** | Множественный выбор (чекбоксы) | Варианты |
| **COUNTRY** | Выбор страны | Обязательное поле |
| **CONSENT** | Чекбокс или подтверждение | Обязательное поле, настраиваемая подпись |### Элементы загрузки| Элемент | Описание | Параметры конфигурации |
| - | - | - |
| **IMAGE** | Загрузка изображения | `max_files` (1-5), обязательное поле |
| **FILE\_UPLOAD** | Загрузка документа | `max_files` (1-5), обязательное поле |### Элементы макета| Элемент | Описание | Примечания |
| - | - | - |
| **PARAGRAPH** | Пояснительный текст только для чтения | Не предполагает ответа |
| **SECTION\_HEADER** | Визуальный заголовок раздела | Не предполагает ответа, необязательный |
| **SEPARATOR** | Визуальный разделитель | Не предполагает ответа, необязательный |**Особенности поведения:**- `SECTION_HEADER` и `SEPARATOR` служат только для оформления. Они игнорируют параметры обязательности, плейсхолдеры, варианты выбора и лимиты файлов.
- Для элементов выбора определяйте варианты как `{ label, value, requires_text_input? }`.
- Для элементов загрузки задайте `max_files` (1–5), чтобы ограничить количество прикрепляемых файлов.***## Принудительная ручная проверкаНекоторые комплаенс-сценарии требуют проверки каждого ответа человеком. В консоли можно настроить анкеты так, чтобы результатом всегда был статус `In Review`. После этого проверяющий одобряет ответ или запрашивает изменения; после одобрения статус ответа меняется на `Approved`.**Когда использовать ручную проверку:**- Онбординг клиентов с высоким уровнем риска
- Сбор конфиденциальных данных (источник средств, декларации UBO)
- Нормативные требования к контролю со стороны человека
- Контроль качества на начальном этапе внедрения***## Примеры использования### Источник средствФиксация источников дохода, сумм и загрузка подтверждающих документов (например, расчетных листков, выписок). Объединяйте выпадающие списки, многострочный текст и загрузку файлов.**Типичная структура:**- Раздел 1: Статус занятости (выпадающий список)
- Раздел 2: Источники дохода (множественный выбор + многострочный текст)
- Раздел 3: Подтверждающие документы (загрузка файла)
- Раздел 4: Декларация (согласие)***### Ассоциация или членствоФиксация связей с организациями, ролей и подтверждения членства; используйте элементы согласия для деклараций.**Типичная структура:**- Название организации (короткий текст)
- Роль/должность (выпадающий список)
- Срок членства (выбор даты)
- Подтверждение членства (загрузка файла)
- Декларация (согласие)***### Цель деловых отношений и ожидаемая активность по счетуСбор информации о целях, ожидаемых объемах транзакций, странах деятельности и предполагаемых контрагентах. Используйте одиночный и множественный выбор, числовой ввод и текстовые абзацы для контекста.**Типичная структура:**- Раздел 1: Назначение счета (множественный выбор)
- Раздел 2: Ожидаемый ежемесячный объем (число + выпадающий список для валюты)
- Раздел 3: Страны деятельности (страна - несколько)
- Раздел 4: Типы транзакций (множественный выбор)
- Раздел 5: Дополнительная информация (многострочный текст)***## Сравнение режимов Simple и Advanced: когда использовать каждый из них| Сценарий | Рекомендуемый режим |
| - | - |
| Простая форма на одном языке | Simple |
| Требуется поддержка нескольких языков | Advanced |
| Быстрый внутренний опрос | Simple |
| Комплаенс-анкета | Advanced |
| Разовый сбор данных | Simple |
| Ветвление по условиям | Advanced |
| Принудительная ручная проверка | Advanced |
| Сложные формы с несколькими разделами | Advanced |***## Начало работы1. **Впервые работаете с анкетами?** Начните с **Simple Mode**, чтобы познакомиться с конструктором
2. **Требуются переводы или условная логика?** Переключитесь на **Advanced Mode**, чтобы использовать визуальный редактор графов> Узнайте, как структурированы результаты, на странице [Отчёт по анкетам](https://docs.didit.me/ru/core-technology/questionnaires/report-questionnaire.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.