REST API OTPID: отправка и проверка одноразовых кодов, каскад каналов, вебхуки.
Базовый адрес API — https://api.otpid.ru/v1. Все запросы и ответы в формате JSON, кодировка UTF-8. Для работы нужен API-ключ из личного кабинета, раздел «API-ключи».
Ключ передаётся в заголовке каждого запроса:
Authorization: Bearer otp_live_8f2c1a9b…
POST/otp/send — сгенерировать код и доставить его получателю.
POST /v1/otp/send { "recipient": "+79000000000", "channels": ["push", "sms"], "ttl": 300, "length": 6, "template": "login" } // ответ { "request_id": "req_8f2c1a", "status": "sent", "channel": "push" }
POST/otp/verify — сверить код, который ввёл пользователь.
POST /v1/otp/verify { "request_id": "req_8f2c1a", "code": "482913" } // ответ { "valid": true, "attempts_left": 2 }
Если первый канал не доставил код за отведённое время, OTPID автоматически переключается на следующий из списка channels. Поддерживаются: push, sms, call, email, totp.
OTPID уведомляет ваш сервер о событиях доставки и подтверждения. Укажите адрес в разделе «Вебхуки» личного кабинета.
{ "event": "otp.verified", "request_id": "req_8f2c1a", "ts": 1793122988 }
Официальные библиотеки: PHP, Python, Node.js, Go, Java, 1С. Пример на Python:
from otpid import Client c = Client("otp_live_…") req = c.send("+79000000000", channels=["push", "sms"]) c.verify(req.id, "482913")
| Код | Значение |
|---|---|
400 | Некорректные параметры запроса |
401 | Неверный или отозванный API-ключ |
409 | Код для этого получателя уже активен |
422 | Неверный код или истёк срок действия |
429 | Превышен лимит запросов |