# Коды OTP и подтверждение по SMS

> Отправляйте одноразовые коды в 228 направлений одним вызовом REST API: транзакционный приоритет, короткий срок действия, безопасные повторы и подписанные вебхуки доставки. Без KYC, с оплатой криптовалютой.

Чтобы отправить код OTP через SMSMeteor, вызовите `POST /v1/messages`. Передайте номер в формате E.164, начните текст с названия бренда, задайте время жизни кода в `validity` и установите для `window.quiet_hours` значение `bypass`. Ответ содержит стоимость, а вебхук `message.delivered` обычно подтверждает доставку в течение нескольких секунд.

Для создания аккаунта не нужна проверка личности. Один и тот же тариф направления действует с первого до миллионного кода.

## Рекомендуемые настройки

- Тип трафика: Транзакционный, без ограничений по времени отправки
- Вызов API: `POST /v1/messages` для каждого кода
- Срок действия: От 5 до 10 минут (по умолчанию 48 часов)
- Длина: Один сегмент GSM-7, без ссылок
- Повторные попытки: Тот же `Idempotency-Key`, без отправки второго кода
- Подтверждение: Вебхук `message.delivered` или опрос статуса

## Шаги

1. Создайте ключ: Выпустите для службы кодов ключ только с правом отправки. Если служба работает с постоянных серверов, добавьте список разрешённых IP-адресов. Тестовый ключ позволяет настроить весь сценарий без пополнения баланса.
2. Отправьте код: Сначала укажите бренд, затем код и срок действия. Уложитесь в один сегмент, задайте время жизни кода и отметьте сообщение как транзакционное.
3. Получите результат: Событие доставки завершает сценарий. Если причина ошибки — неизвестный номер, интерфейс должен предложить ввести другой номер, а не повторять отправку.
4. Защитите метод выдачи кодов: Ограничьте частоту запросов для номера, IP-адреса и аккаунта. После второй попытки запрашивайте CAPTCHA. Сообщения на действительные номера оплачиваются.

## От чего зависит своевременная доставка кода

Пользователь получит код вовремя, если правильно выбраны маршрут, формат и режим отправки. Для каждого направления используется проверенный маршрут, а транзакционные сообщения не ждут завершения маркетинговой рассылки. Пишите короткий текст в GSM-7 и ставьте бренд в начало: в Северной и Южной Америке, а также там, где имя отправителя нужно регистрировать, получатель может увидеть номер вместо названия компании. Транзакционный флаг разрешает отправку вне местного маркетингового окна.

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

## Повторная отправка без лишних расходов

Разрешайте повторный запрос через 30 секунд, затем через 60 и 120 секунд. При выпуске нового кода аннулируйте предыдущий. Формируйте ключ идемпотентности из идентификатора пользователя и номера попытки: тогда запрос можно безопасно повторить после тайм-аута на вашей стороне. Если вебхук сообщает, что номер неизвестен, предложите исправить номер вместо очередной отправки.

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

## Пример сообщения

От METEOR: "ACME: ваш код — 493 201. Он действует 10 минут. Никому его не сообщайте."

```bash
curl https://api.smsmeteor.com/v1/messages \
  -H "Authorization: Bearer $SMSMETEOR_KEY" \
  -H "Idempotency-Key: otp-user-8841-attempt-1" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+14155550142",
    "from": "ACME",
    "text": "ACME: ваш код — 493 201. Он действует 10 минут.",
    "validity": 10,
    "window": { "quiet_hours": "bypass" },
    "campaign": "otp-login"
  }'
```

## Вопросы

**Как быстро доставляются сообщения OTP?** По исправному маршруту код обычно приходит в течение нескольких секунд после вызова API. Транзакционные сообщения не ждут завершения рассылок. Текущую задержку доставки можно проверить на странице состояния.

**Можно ли отправлять коды OTP ночью?** Да. Установите для window.quiet_hours значение bypass: сообщение будет считаться транзакционным и отправится сразу. Ограничения по времени действуют только для маркетингового трафика.

**Увидит ли получатель название моего бренда?** Да, если в выбранном направлении буквенно-цифровое имя отправителя доставляется без изменений. В Северной и Южной Америке, Китае и странах с обязательной регистрацией получатель может увидеть номер, поэтому укажите бренд в начале текста. Точное правило есть на странице каждого направления.

**Сколько стоит сообщение OTP?** Стоимость равна тарифу направления за один сегмент: например, $0,0084 для США или $0,0256 для Индии. Платы за проверку и ежемесячной абонентской платы нет.

**Нужно ли подтверждать компанию для отправки кодов?** Нет. Для создания аккаунта достаточно электронной почты. Мы проверяем содержание сообщений: коды разрешены, а выдача себя за банк или государственную службу запрещена.

**Как защитить баланс от ботов?** Ограничьте частоту запросов по номеру, IP-адресу и аккаунту, после второй попытки включите CAPTCHA и закройте направления, которые не обслуживаете. Запросы с неподдерживаемыми префиксами отклоняются бесплатно, но сообщения на действительные номера оплачиваются.



---
Источник: https://smsmeteor.com/ru/use-cases/otp-verification (HTML). Создано SMSMeteor на основе тех же данных, что и страница. Сводка всего сайта: https://smsmeteor.com/ru/llms.txt
