> ## 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.

# Create Questionnaire API: Кастомная KYC-анкета

> Создавайте KYC- и compliance-анкеты через API: упорядоченные вопросы, варианты ответов и 54 языка перевода. Оплата за вызов от Didit.



Промпт для API создания анкеты
        Скопировать промпт в буфер обмена



      
      

\<pre>

\`Create a simple Didit questionnaire through the Management API.

Endpoint:
POST https://verification.didit.me/v3/questionnaires/

Authentication:
Use the x-api-key header with my Didit API key.

Requirements:
\- Use the simple v3 API shape with form_elements.
\- Do not send graph, branches, next, required_if, or conditional logic.
\- Include languages with en and default_language set to en.
\- Use customer-friendly element_type values such as short_text, multiple_choice, email, file_upload, or date_picker.
\- For choice questions, send options with value and label.
\- Store the questionnaire_id from the response because I will use it later as questionnaire_uuid in workflows.

Example request body:
\{
"title": "Customer Onboarding",
"languages": ["en"],
"default_language": "en",
"form_elements": [
\{
  "id": "occupation",
  "element_type": "short_text",
  "label": { "en": "What is your occupation?" },
  "is_required": true
},
\{
  "id": "source_of_funds",
  "element_type": "multiple_choice",
  "label": { "en": "Source of funds" },
  "is_required": true,
  "options": [
    \{ "value": "employment", "label": { "en": "Employment" } },
    \{ "value": "business", "label": { "en": "Business" } },
    \{ "value": "investments", "label": { "en": "Investments" } }
  ]
}
]
}

Build the API call, handle validation errors, and return the questionnaire_id from the response.`

\</pre>



      
      

Вставьте в

Используйте этот endpoint, чтобы создавать простые анкеты через API. Передайте массив `form_elements` в том порядке, в котором пользователи будут отвечать на вопросы. Граф анкеты для вас строит Didit.API поддерживает только простые линейные анкеты. Не передавайте `graph`, `branches`, `next` и условные правила.## Обязательные поля- `title`: внутреннее название анкеты.
- `languages` должен включать `en`.
- `form_elements` должен содержать хотя бы один вопрос.
- Каждый элемент формы требует `element_type` и переведённый `label`.Вы также можете добавить к элементу формы необязательный переведённый `description` как текст подсказки. Он принимается для всех типов элементов, кроме `separator`, и возвращается как `description` элемента в [отчёте по анкете](https://docs.didit.me/ru/core-technology/questionnaires/report-questionnaire.md).## Типы элементовИспользуйте значения в нижнем регистре, например `short_text`, `multiple_choice`, `email`, `file_upload` или `date_picker`. Значения перечислений в верхнем регистре, например `SHORT_TEXT`, также принимаются.Для `dropdown`, `single_choice` и `multiple_choice` добавьте `options`. Если вы не укажете `value` для варианта, Didit создаст его из подписи.```json theme={null}
{
  "title": "Customer Onboarding",
  "languages": ["en"],
  "default_language": "en",
  "form_elements": [
    {
      "id": "occupation",
      "element_type": "short_text",
      "label": { "en": "What is your occupation?" },
      "is_required": true
    },
    {
      "id": "source_of_funds",
      "element_type": "multiple_choice",
      "label": { "en": "Source of funds" },
      "is_required": true,
      "options": [
        { "value": "employment", "label": { "en": "Employment" } },
        { "value": "business", "label": { "en": "Business" } },
        { "value": "investments", "label": { "en": "Investments" } }
      ]
    }
  ]
}
```## Проверка полейДобавьте необязательный объект `validation` к элементу `short_text`, `long_text` или `number`, чтобы задать формат ответа пользователя. Это полезно для идентификаторов со строгим форматом, например налоговых номеров, национальных идентификаторов или номеров карт. Проверка выполняется, пока пользователь заполняет поле (дальше он не может перейти, пока значение не пройдёт проверку), и API повторно применяет её при отправке.| Поле | Применимо к | Описание |
| - | - | - |
| `pattern` | `short_text`, `long_text` | Регулярное выражение, которому значение должно полностью соответствовать. Используйте переносимое подмножество ECMA-262; не добавляйте якоря `^`/`$` (сопоставляется всё значение целиком). |
| `min_length` | `short_text`, `long_text` | Минимальное количество символов. |
| `max_length` | `short_text`, `long_text` | Максимальное количество символов. |
| `min` | `number` | Минимальное числовое значение. |
| `max` | `number` | Максимальное числовое значение. |
| `error_message` | все перечисленные выше | Переведённое сообщение, которое показывается, если значение не проходит проверку. Если поле не указано, показывается общее сообщение. |```json theme={null}
{
  "title": "Customer Onboarding",
  "languages": ["en"],
  "default_language": "en",
  "form_elements": [
    {
      "id": "tax_id",
      "element_type": "short_text",
      "label": { "en": "Tax ID" },
      "is_required": true,
      "validation": {
        "pattern": "[A-Z]{2}[0-9]{9}",
        "min_length": 11,
        "max_length": 11,
        "error_message": { "en": "Enter a valid Tax ID (2 letters followed by 9 digits)." }
      }
    }
  ]
}
```Ответ содержит `questionnaire_id`. Сохраните его: он понадобится как `questionnaire_uuid`, когда вы будете добавлять анкету в сценарий.


## OpenAPI

````yaml ru/openapi-25.json POST /v3/questionnaires/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: >-
    API верификации личности. Аутентификация выполняется с помощью заголовка
    x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/questionnaires/:
    post:
      tags:
        - Questionnaires
      summary: Создать анкету
      description: >-
        Создайте простую линейную анкету. Передавайте `form_elements` в порядке
        отображения; для ветвления и повторяющихся групп требуется Console. По
        умолчанию создаётся опубликованная (`published`) версия v1.
      operationId: create_questionnaire
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SimpleQuestionnaireRequest'
            examples:
              Simple:
                summary: Базовая анкета
                value:
                  title: Customer Onboarding
                  description: Additional information needed for verification
                  default_language: en
                  languages:
                    - en
                  is_active: true
                  form_elements:
                    - id: occupation
                      element_type: short_text
                      label:
                        en: What is your occupation?
                      is_required: true
                      placeholder:
                        en: Software engineer
                    - id: source_of_funds
                      element_type: multiple_choice
                      label:
                        en: Source of funds
                      is_required: true
                      options:
                        - value: employment
                          label:
                            en: Employment
                        - value: business
                          label:
                            en: Business
                        - value: investments
                          label:
                            en: Investments
                        - value: other
                          label:
                            en: Other
      responses:
        '201':
          description: >-
            Анкета создана. Ответ содержит `questionnaire_id` — сохраните его,
            чтобы ссылаться на эту анкету из сценариев или в будущих вызовах
            обновления/удаления.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuestionnaireDetail'
              examples:
                Created:
                  value:
                    questionnaire_id: 11111111-2222-3333-4444-555555555555
                    title: Customer Onboarding
                    description: Additional information needed for verification
                    languages:
                      - en
                    default_language: en
                    is_active: true
                    is_simple_questionnaire: true
                    graph:
                      start_node: occupation
                      nodes:
                        occupation:
                          element_type: SHORT_TEXT
                          is_required: true
                          title:
                            en: What is your occupation?
                          next: source_of_funds
                        source_of_funds:
                          element_type: MULTIPLE_CHOICE
                          is_required: true
                          title:
                            en: Source of funds
                          choices:
                            - value: employment
                              label:
                                en: Employment
                            - value: business
                              label:
                                en: Business
                          next: null
                    sections: []
                    questionnaire_group_id: 11111111-2222-3333-4444-555555555555
                    version: 1
                    status: published
                    published_at: '2026-04-23T10:00:00Z'
                    is_editable: false
        '400':
          description: >-
            Ошибка валидации. Частые причины: неизвестный `element_type`, в
            переводимом поле отсутствует перевод для одного из `languages`, в
            `languages` отсутствует `en`, `default_language` отсутствует в
            `languages`, вариант без `label`, вопрос с
            `branches`/`required_if`/`repeatable_config` (не поддерживается этим
            endpoint) либо отправка необработанного `graph` вместо
            `form_elements`. В теле ответа возвращается ошибка валидации DRF с
            ключами по именам полей.
          content:
            application/json:
              examples:
                Graph not accepted:
                  value:
                    graph: >-
                      The v3 questionnaire API only accepts simple
                      `form_elements`, not `graph`.
                Missing label:
                  value:
                    form_elements:
                      - label:
                          - This field is required.
        '403':
          description: >-
            API-ключ отсутствует, сформирован некорректно, истёк или относится к
            другому приложению.
          content:
            application/json:
              examples:
                Invalid token:
                  value:
                    detail: You do not have permission to perform this action.
        '415':
          description: >-
            Неподдерживаемый тип содержимого. Укажите `Content-Type:
            application/json` и передайте тело в формате JSON.
        '429':
          description: >-
            Превышен лимит запросов. Повторите попытку с экспоненциальной
            задержкой.
        '500':
          description: >-
            Непредвиденная ошибка сервера при создании анкеты. Повторная попытка
            безопасна.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl -X POST 'https://verification.didit.me/v3/questionnaires/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "title": "Customer Onboarding",
                "default_language": "en",
                "languages": ["en"],
                "form_elements": [
                  {
                    "id": "occupation",
                    "element_type": "short_text",
                    "label": {"en": "What is your occupation?"},
                    "is_required": true
                  }
                ]
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.questionnaires.create(
                title="Customer Onboarding",
                description="Additional information needed for verification",
                languages=["en"],
                default_language="en",
                is_active=True,
                form_elements=[{
                    "id": "occupation",
                    "element_type": "short_text",
                    "label": {"en": "What is your occupation?"},
                    "placeholder": {"en": "Software engineer"},
                    "is_required": True,
                }, {
                    "id": "source_of_funds",
                    "element_type": "multiple_choice",
                    "label": {"en": "Source of funds"},
                    "is_required": True,
                    "options": [{
                        "value": "employment",
                        "label": {"en": "Employment"},
                    }, {
                        "value": "business",
                        "label": {"en": "Business"},
                    }, {
                        "value": "investments",
                        "label": {"en": "Investments"},
                    }, {
                        "value": "other",
                        "label": {"en": "Other"},
                    }],
                }],
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.questionnaires.create({
              title: "Customer Onboarding",
              description: "Additional information needed for verification",
              languages: ["en"],
              default_language: "en",
              is_active: true,
              form_elements: [{
                id: "occupation",
                element_type: "short_text",
                label: { en: "What is your occupation?" },
                placeholder: { en: "Software engineer" },
                is_required: true,
              }, {
                id: "source_of_funds",
                element_type: "multiple_choice",
                label: { en: "Source of funds" },
                is_required: true,
                options: [{
                  value: "employment",
                  label: { en: "Employment" },
                }, {
                  value: "business",
                  label: { en: "Business" },
                }, {
                  value: "investments",
                  label: { en: "Investments" },
                }, {
                  value: "other",
                  label: { en: "Other" },
                }],
              }],
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Questionnaires.Create(ctx, didit.SimpleQuestionnaireRequest{\n\tTitle:           \"Customer Onboarding\",\n\tDescription:     didit.String(\"Additional information needed for verification\"),\n\tLanguages:       []string{\"en\"},\n\tDefaultLanguage: didit.String(\"en\"),\n\tIsActive:        didit.Bool(true),\n\tFormElements: []didit.SimpleQuestionnaireElement{{\n\t\tID:          didit.String(\"occupation\"),\n\t\tElementType: \"short_text\",\n\t\tLabel:       map[string]string{\"en\": \"What is your occupation?\"},\n\t\tPlaceholder: didit.Some(map[string]string{\"en\": \"Software engineer\"}),\n\t\tIsRequired:  didit.Bool(true),\n\t}, {\n\t\tID:          didit.String(\"source_of_funds\"),\n\t\tElementType: \"multiple_choice\",\n\t\tLabel:       map[string]string{\"en\": \"Source of funds\"},\n\t\tIsRequired:  didit.Bool(true),\n\t\tOptions: didit.Some([]didit.SimpleQuestionnaireElementOptions{{\n\t\t\tValue: didit.String(\"employment\"),\n\t\t\tLabel: map[string]string{\"en\": \"Employment\"},\n\t\t}, {\n\t\t\tValue: didit.String(\"business\"),\n\t\t\tLabel: map[string]string{\"en\": \"Business\"},\n\t\t}, {\n\t\t\tValue: didit.String(\"investments\"),\n\t\t\tLabel: map[string]string{\"en\": \"Investments\"},\n\t\t}, {\n\t\t\tValue: didit.String(\"other\"),\n\t\t\tLabel: map[string]string{\"en\": \"Other\"},\n\t\t}}),\n\t}},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import java.util.Map;

            import me.didit.Didit;

            import me.didit.types.SimpleQuestionnaireElement;

            import me.didit.types.SimpleQuestionnaireRequest;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.questionnaires().create(SimpleQuestionnaireRequest.builder()
                    .title("Customer Onboarding")
                    .description("Additional information needed for verification")
                    .languages(List.of("en"))
                    .defaultLanguage("en")
                    .isActive(true)
                    .formElements(List.of(
                            SimpleQuestionnaireElement.builder()
                                    .id("occupation")
                                    .elementType(SimpleQuestionnaireElement.ElementType.of("short_text"))
                                    .label(Map.of("en", "What is your occupation?"))
                                    .placeholder(Map.of("en", "Software engineer"))
                                    .isRequired(true)
                                    .build(),
                            SimpleQuestionnaireElement.builder()
                                    .id("source_of_funds")
                                    .elementType(SimpleQuestionnaireElement.ElementType.of("multiple_choice"))
                                    .label(Map.of("en", "Source of funds"))
                                    .isRequired(true)
                                    .options(List.of(
                                            SimpleQuestionnaireElement.Options.builder()
                                                    .value("employment")
                                                    .label(Map.of("en", "Employment"))
                                                    .build(),
                                            SimpleQuestionnaireElement.Options.builder()
                                                    .value("business")
                                                    .label(Map.of("en", "Business"))
                                                    .build(),
                                            SimpleQuestionnaireElement.Options.builder()
                                                    .value("investments")
                                                    .label(Map.of("en", "Investments"))
                                                    .build(),
                                            SimpleQuestionnaireElement.Options.builder()
                                                    .value("other")
                                                    .label(Map.of("en", "Other"))
                                                    .build()))
                                    .build()))
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->questionnaires->create([
                'title' => 'Customer Onboarding',
                'description' => 'Additional information needed for verification',
                'languages' => ['en'],
                'default_language' => 'en',
                'is_active' => true,
                'form_elements' => [[
                    'id' => 'occupation',
                    'element_type' => 'short_text',
                    'label' => ['en' => 'What is your occupation?'],
                    'placeholder' => ['en' => 'Software engineer'],
                    'is_required' => true,
                ], [
                    'id' => 'source_of_funds',
                    'element_type' => 'multiple_choice',
                    'label' => ['en' => 'Source of funds'],
                    'is_required' => true,
                    'options' => [[
                        'value' => 'employment',
                        'label' => ['en' => 'Employment'],
                    ], [
                        'value' => 'business',
                        'label' => ['en' => 'Business'],
                    ], [
                        'value' => 'investments',
                        'label' => ['en' => 'Investments'],
                    ], [
                        'value' => 'other',
                        'label' => ['en' => 'Other'],
                    ]],
                ]],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.questionnaires.create(
              title: "Customer Onboarding",
              description: "Additional information needed for verification",
              languages: ["en"],
              default_language: "en",
              is_active: true,
              form_elements: [{
                id: "occupation",
                element_type: "short_text",
                label: { en: "What is your occupation?" },
                placeholder: { en: "Software engineer" },
                is_required: true,
              }, {
                id: "source_of_funds",
                element_type: "multiple_choice",
                label: { en: "Source of funds" },
                is_required: true,
                options: [{
                  value: "employment",
                  label: { en: "Employment" },
                }, {
                  value: "business",
                  label: { en: "Business" },
                }, {
                  value: "investments",
                  label: { en: "Investments" },
                }, {
                  value: "other",
                  label: { en: "Other" },
                }],
              }]
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Collections.Generic;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.Questionnaires.CreateAsync(new
            SimpleQuestionnaireRequest

            {
                Title = "Customer Onboarding",
                Description = "Additional information needed for verification",
                Languages = new string[] { "en" },
                DefaultLanguage = "en",
                IsActive = true,
                FormElements = new SimpleQuestionnaireElement[]
                {
                    new()
                    {
                        Id = "occupation",
                        ElementType = "short_text",
                        Label = new Dictionary<string, string> { ["en"] = "What is your occupation?" },
                        Placeholder = new Dictionary<string, string> { ["en"] = "Software engineer" },
                        IsRequired = true,
                    },
                    new()
                    {
                        Id = "source_of_funds",
                        ElementType = "multiple_choice",
                        Label = new Dictionary<string, string> { ["en"] = "Source of funds" },
                        IsRequired = true,
                        Options = new SimpleQuestionnaireElementOptions[]
                        {
                            new()
                            {
                                Value = "employment",
                                Label = new Dictionary<string, string> { ["en"] = "Employment" },
                            },
                            new()
                            {
                                Value = "business",
                                Label = new Dictionary<string, string> { ["en"] = "Business" },
                            },
                            new()
                            {
                                Value = "investments",
                                Label = new Dictionary<string, string> { ["en"] = "Investments" },
                            },
                            new()
                            {
                                Value = "other",
                                Label = new Dictionary<string, string> { ["en"] = "Other" },
                            },
                        },
                    },
                },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    SimpleQuestionnaireRequest:
      type: object
      description: >-
        Создайте простую линейную анкету. API преобразует `form_elements` во
        внутренний граф анкеты.
      required:
        - title
        - languages
        - form_elements
      properties:
        title:
          type: string
          description: Внутреннее название анкеты.
        description:
          type: string
          nullable: true
        languages:
          type: array
          description: Языки, включённые в каждую метку. Должен включать `en`.
          items:
            type: string
          example:
            - en
        default_language:
          type: string
          description: Язык по умолчанию. Должен быть включён в `languages`.
          example: en
        is_active:
          type: boolean
          default: true
        status:
          type: string
          enum:
            - draft
            - published
          description: >-
            Опустите это поле, чтобы создать опубликованную анкету, готовую к
            использованию в сценариях.
        form_elements:
          type: array
          minItems: 1
          description: >-
            Вопросы в точном порядке, в котором их должны видеть пользователи.
            Ветвление и условные поля не поддерживаются.
          items:
            $ref: '#/components/schemas/SimpleQuestionnaireElement'
    QuestionnaireDetail:
      type: object
      description: >-
        Полные сведения об анкете, возвращаемые из endpoint’ов GET, POST
        (создание) и PATCH (обновление).
      properties:
        questionnaire_id:
          type: string
          format: uuid
          description: >-
            Уникальный идентификатор анкеты. Используйте этот id при ссылке на
            анкету из сценария или в последующих запросах на
            обновление/удаление.
        title:
          type: string
        description:
          type: string
          nullable: true
        languages:
          type: array
          items:
            type: string
        default_language:
          type: string
        is_active:
          type: boolean
        is_simple_questionnaire:
          type: boolean
        graph:
          type: object
          description: Структура графа с полем start_node и отображением nodes.
        sections:
          type: array
          description: Содержимое анкеты, сгруппированное по разделам (на основе графа).
          items:
            type: object
        questionnaire_group_id:
          type: string
          format: uuid
          description: >-
            Постоянный идентификатор, объединяющий все версии одной и той же
            анкеты.
        version:
          type: integer
        status:
          type: string
          enum:
            - draft
            - published
        published_at:
          type: string
          format: date-time
          nullable: true
        is_editable:
          type: boolean
          description: >-
            True, когда анкету всё ещё можно редактировать на месте (черновые
            версии).
    SimpleQuestionnaireElement:
      type: object
      required:
        - element_type
        - label
      properties:
        id:
          type: string
          description: >-
            Необязательный стабильный идентификатор вопроса. Если опущен, API
            генерирует `q1`, `q2` и т. д. Для удобства чтения используйте
            строчные буквы, цифры и символы подчеркивания.
          example: source_of_funds
        element_type:
          type: string
          description: >-
            Тип вопроса. API принимает эти значения в нижнем регистре, а также
            их эквиваленты в верхнем регистре.
          enum:
            - short_text
            - long_text
            - dropdown
            - single_choice
            - multiple_choice
            - number
            - image
            - file_upload
            - time
            - email
            - address
            - phone
            - country
            - date_picker
            - consent
            - section_header
            - separator
            - heading
            - paragraph
        label:
          type: object
          description: 'Метка вопроса по коду языка, например `{ "en": "Source of funds" }`.'
          additionalProperties:
            type: string
        description:
          type: object
          nullable: true
          additionalProperties:
            type: string
        placeholder:
          type: object
          nullable: true
          additionalProperties:
            type: string
        is_required:
          type: boolean
          default: false
        options:
          type: array
          description: >-
            Используется для `dropdown`, `single_choice` и `multiple_choice`.
            Если `value` не указано, API генерирует его на основе метки
            варианта.
          items:
            type: object
            required:
              - label
            properties:
              value:
                type: string
              label:
                type: object
                additionalProperties:
                  type: string
        max_files:
          type: integer
          minimum: 1
          maximum: 5
          description: Используется с `file_upload` или `image`.
        validation:
          type: object
          nullable: true
          description: >-
            Необязательная валидация формата для `short_text`, `long_text` или
            `number`. Применяется во время заполнения поля пользователем (он не
            сможет продолжить, пока проверка не будет пройдена) и повторно
            проверяется API при отправке.
          properties:
            pattern:
              type: string
              description: >-
                Регулярное выражение (подмножество ECMA-262), которому значение
                должно полностью соответствовать. Для `short_text` и
                `long_text`. Не добавляйте символы привязки ^/$; сопоставляется
                всё значение целиком.
            min_length:
              type: integer
              minimum: 0
              description: Минимальное количество символов. Для `short_text` и `long_text`.
            max_length:
              type: integer
              minimum: 0
              description: >-
                Максимальное количество символов. Для `short_text` и
                `long_text`.
            min:
              type: number
              description: Минимальное числовое значение. Для `number`.
            max:
              type: number
              description: Максимальное числовое значение. Для `number`.
            error_message:
              type: object
              description: >-
                Переведённое сообщение, отображаемое при сбое валидации, с
                ключом, соответствующим коду языка.
              additionalProperties:
                type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        API-ключ вашего приложения из раздела «Разработчикам» -> «API-ключи» в
        Business Console. Основной ключ имеет полный доступ. Именованный ключ
        может иметь ограниченную область действия: без доступа, чтение или
        запись для каждого ресурса, ограничение определенными сценариями или
        одобренными сессиями, списком IP-адресов и сроком действия. 401
        означает, что ключ неверен, отозван или его срок действия истек; 403
        означает, что ключ не был передан, у ключа нет доступа к этому ресурсу
        или действию, либо запрос поступил с адреса вне его списка IP-адресов;
        404 на маршруте сессии означает, что сессия не входит в сценарии или
        статусы ключа. Ключ без доступа к медиа получает URL изображений, видео
        и PDF как null, а ключ без прав на запись сессий получает ссылки на
        сессии и токены как null. См. https://docs.didit.me/console/api-keys.

````

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