
## Подготовка {#prerequisites}

Создайте аккаунт и [API-токен](/ru/docs/common/account-api-tokens). Подготовьте HTTPS-получателя под своим контролем, доступного из выбранного региона, возвращающего `2xx` и безопасный демонстрационный ответ. Входящий Сервер и CLI не нужны.

В Bash задайте переменные:

- `ADAL_API_URL` — `https://api.adal.cloud`, без завершающего слеша.
- `ADAL_API_TOKEN` — секрет API-токена.
- `ADAL_IDEMPOTENCY_KEY` — выбранный один раз ключ этой операции, например `docs-first-send-1`. Для новой операции нужен новый ключ; при повторе неопределённой отправки старый ключ сохраняется.

Не копируйте реальные значения токена в Git, скриншоты или логи. Публичный API использует HTTPS.

## Получите регион {#regions}

```bash
curl --fail-with-body --silent --show-error \
  --header "Authorization: Bearer $ADAL_API_TOKEN" \
  "$ADAL_API_URL/outbound/regions"
```

Выберите `ID` из `regions` (с заглавными буквами, как в ответе API) и задайте его как `ADAL_REGION_ID`. Не используйте придуманный UUID или страну вместо идентификатора.

## Отправьте задание {#submit}

Замените `https://receiver.example/webhook` вашим тестовым конечным URL. `aGVsbG8=` кодирует байты `hello`. В примере сохранение ответа **включено явно** для следующего шага; его сохранённые байты будут учтены в трафике.

```bash
curl --fail-with-body --silent --show-error \
  --request POST "$ADAL_API_URL/outbound/requests" \
  --header "Authorization: Bearer $ADAL_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data-binary @- <<JSON
{
  "region_id": "$ADAL_REGION_ID",
  "method": "POST",
  "url": "https://receiver.example/webhook",
  "headers": {"Content-Type": ["text/plain"]},
  "body": "aGVsbG8=",
  "idempotency_key": "$ADAL_IDEMPOTENCY_KEY",
  "save_response_body": true
}
JSON
```

Успешный `202` содержит `request_id` и `received_at`. Сохраните фактический ID в `ADAL_REQUEST_ID`. `202` ещё не доказывает HTTP-вызов или его успех.

## Прочитайте результат {#result}

```bash
curl --fail-with-body --silent --show-error \
  --header "Authorization: Bearer $ADAL_API_TOKEN" \
  "$ADAL_API_URL/outbound/requests/$ADAL_REQUEST_ID"
```

Проверьте журнал в API или **Outbound → Requests** в кабинете. При `received`/`delivering` прочитайте позднее; не создавайте новое задание ради обновления статуса. Если запись ещё не появилась, перепроверьте ID и повторите чтение. В карточке откройте сводку и проверьте попытку и фактический результат тестового получателя. HTTP-успех не является доказательством его бизнес-транзакции.

## Получите сохранённый ответ {#response}

```bash
curl --fail-with-body --silent --show-error \
  --header "Authorization: Bearer $ADAL_API_TOKEN" \
  "$ADAL_API_URL/outbound/requests/$ADAL_REQUEST_ID/http"
```

При доступной сводке выберите завершённую попытку из `snapshot.attempts`, сохраните её `attempt_id` как `ADAL_ATTEMPT_ID` и скачайте тело:

```bash
curl --fail --silent --show-error \
  --header "Authorization: Bearer $ADAL_API_TOKEN" \
  --output response-body.bin \
  "$ADAL_API_URL/outbound/requests/$ADAL_REQUEST_ID/attempts/$ADAL_ATTEMPT_ID/response/body"
```

Проверьте успешное завершение curl, байты тестового ответа и признаки `read_complete`/`body_truncated` в сводке. Доступность файла не означает, что исходный ответ прочитан целиком.

## Если ответ постановки потерян {#duplicate}

Повторите тот же POST с тем же `ADAL_IDEMPOTENCY_KEY`. Повтор может получить новый ID и стать `duplicate` со ссылкой `duplicate_of` на оригинал. Продолжайте разбор оригинала; дубль не имеет нового собственного HTTP-исполнения.

## Дальше {#related-pages}

[Справочник отправки](/ru/docs/outbound/sending), [журнал и статусы](/ru/docs/outbound/history), [диагностика](/ru/docs/outbound/diagnostics), [HTTP-данные и ошибки скачивания](/ru/docs/outbound/http-data).
