---
metadata:
  - name: generator
    content: Diplodoc Platform v5.54.2
alternate:
  - https://yandex.ru/support/forms/en/send-request.md
  - https://yandex.ru/support/forms/ru/send-request.md
  - href: ru/send-request.md
    type: text/markdown
    title: Markdown version
  - href: llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/support/forms/ru/llms.txt

# Отправить HTTP-запрос

{% note alert "" %}

Для корректной работы HTTP-запросов разрешите вашему сервису принимать пакеты из сети Форм `2a02:6b8:c00::/40`. Иначе файрвол вашего сервиса может блокировать данные, передаваемые формой.

Интеграция работает только с протоколом IPv6. Сервис Яндекс Формы не поддерживает отправку HTTP-запросов с адресов IPv4.

{% endnote %}



Чтобы передать данные из формы в веб-сервис через API, используйте HTTP-запросы:


1. Выберите форму и перейдите на вкладку **Интеграции**.

1. Выберите [группу действий](https://yandex.ru/support/forms/ru/notifications.md#add-integration), в которую вы хотите добавить HTTP-запрос, и внизу группы нажмите кнопку с нужным типом запроса:

    - [Запрос JSON-RPC POST](#json-request) — отправить запрос по протоколу JSON-RPC.


    - [Запрос заданным методом](#any-request) — отправить любые доступные данные формы с возможностью задать формат запроса и выбрать HTTP-метод.

     {% note info "" %}

    Все запросы выполняются асинхронно.

    {% endnote %}

1. Укажите адрес сервиса — узла, предоставляющего API.


1. Задайте параметры, которые зависят от выбранного типа запроса:

    - Запрос JSON-RPC POST {#json-request}

        - Укажите метод сервиса, в который отправляется запрос.

        - Задайте параметры запроса. Для каждого параметра укажите имя и значение.

        - В качестве значений параметров можно использовать [переменные](https://yandex.ru/support/forms/ru/vars.md). В этом случае включите опцию **Передавать, если значение задано**.


    - Запрос заданным методом {#any-request}

        - Выберите HTTP-метод.

        - Задайте тело запроса: укажите передаваемые параметры в формате JSON. Чтобы добавить в тело запроса данные из формы, используйте [переменные](https://yandex.ru/support/forms/ru/vars.md).

        - Добавьте в запрос заголовки. Для каждого заголовка укажите имя и значение.

        - В качестве значений заголовков можно использовать [переменные](https://yandex.ru/support/forms/ru/vars.md). В этом случае включите опцию **Передавать, если значение задано**.

1. Нажмите **Сохранить**.

> Пример: создать проект в Трекере с заданным названием.
>
> Создайте запрос к [API Трекера](https://yandex.ru/support/tracker/api-ref/about-api), заполнив форму следующим образом:
>
>* **URL** — `https://api.tracker.yandex.net/v3/entities/project`.
>* **Метод запроса** — `POST`.
>* **Тело запроса** — параметры проекта в формате JSON:
>
>   ```json
>
>       {
>           "fields": {
>               "summary": "New Project"
>           }
>       }
>    ```
>
>* **Заголовки**:
>
>   * `Authorization` — `OAuth <OAuth-токен>`;
>
>   * `X-Org-ID: <идентификатор_организации>`
>
> Подробнее о создании проектов через запросы к API Трекера читайте в [Справке Трекера](https://yandex.ru/support/tracker/api-ref/entities/create-entity).
>
> ![](_assets/request-example-new.png =600x){.border-grey}

## Обработка ответов на HTTP-запросы  заданным методом {#http-response}

**Успешный запрос**

Запрос считается успешным, если получен ответ с кодом `200`, `201` или `202`.

**Обработка ошибок**

При возникновении следующих ошибок запрос будет отправлен повторно (до 7 попыток в течение 30 минут):

- Истечение таймаута (5 секунд).

- Сетевая ошибка.

- Ответ с кодом `5XX`.

- Ответ с кодом `404`.

Все другие ошибки приводят к неуспешному завершению интеграции.

**Редирект**

Если получен ответ с кодом `307`, то запрос будет перенаправлен на адрес, указанный в заголовке `Location`.

## Обработка ответов на запрос JSON-RPC POST {#json-response}

**Успешный запрос**

Запрос считается успешным при отсутствии перечисленных ниже ошибок.

**Редирект**

Если получен ответ с кодом `307`, то запрос будет перенаправлен на адрес, указанный в заголовке `Location`.

**Обработка ошибок**

Обработка ошибок происходит в следующем порядке:

1. Если ответ не получен из-за сетевой ошибки или по истечении таймаута, запрос будет отправлен повторно.

1. Проверяется тело ответа. Если тело ответа содержит ошибку, запрос будет отправлен повторно при любом коде ошибки, кроме:

    - `-32700` Parse error

    - `-32600` Invalid Request

    - `-32602` Invalid params

1. Если тело ответа не содержит ошибок, проверяется код состояния HTTP. Запрос будет отправлен повторно при кодах состояния `5XX` и `404`.

Все другие ошибки приводят к неуспешному завершению интеграции.

## Решение проблем {#filters}

<!-- source: ru/_includes/inregration-errors.md -->
Чтобы проверить, какие ошибки происходят при выполнении интеграций в вашей форме:

1. Откройте форму, которой в интеграция не работает или работает неправильно.

1. Перейдите на вкладку **Интеграции** и нажмите ссылку **Выполненные интеграции**.

1. Проверьте, есть ли в списке сообщения об ошибках при выполнении вашей интеграции.

1. После устранения проблемы попытайтесь [повторно запустить создание задачи](https://yandex.ru/support/forms/ru/notifications-history.md#status).

1. Если проблему не удалось решить, обратитесь в службу поддержки. [Отправить обращение](https://yandex.ru/support/forms/ru/feedback.md)
<!-- endsource: ru/_includes/inregration-errors.md -->

### На один ответ в форме отправляется два HTTP-запроса {#duplicated-requests}

В некоторых случаях модуль отправки HTTP-запросов может не дождаться ответа от внешнего сервиса о том, что запрос принят. В этом случае запрос будет отправлен повторно, и в сервис придет дубликат запроса с теми же данными. Если требуется отслеживать уникальность HTTP-запросов, воспользуйтесь значением заголовка `x-delivery-id`.

### Из переменных подставляются данные в неверном формате {#incorrect-format}

Если вы добавляете в запрос данные из формы с помощью [переменных](https://yandex.ru/support/forms/ru/vars.md), в тело запроса могут попасть недопустимые символы и вызвать ошибку интеграции. Чтобы удалить из ответа недопустимые символы или преобразовать формат ответа, настройте [фильтры для переменных](https://yandex.ru/support/forms/ru/vars.md#var-filters).

Например, нужно добавить в тело запроса переменную, содержащую ответ на вопрос <q>Длинный текст</q>. Если в тексте ответа будут переводы строки, это вызовет ошибку интеграции. Чтобы избежать ошибки, нужно преобразовать значение переменной в формат JSON.

Для этого при добавлении переменной выберите фильтр **JSON**.

![](_assets/var-filter-json.png =300x){.border-grey}


### Ошибка 400 Client Error: Bad request {#error-400}

Если интеграция завершилась ошибкой <q>400 Client Error: Bad request</q>, проверьте адрес и тело запроса на опечатки: лишние переносы, неразрывные пробелы, экранирование. Тело запроса должно быть в формате JSON.


### Ошибка при соединении с прокси-сервером {#error-proxy}

Ошибка возможна, если запрос отправлен на адрес сервиса, заблокированного на территории РФ.

<!-- source: ru/_assets/style.md -->

<!-- endsource: ru/_assets/style.md -->
