Подключение к API OTP-кодов
Подключение к API OTP-кодов — базовый URL, аутентификация, форматы запросов и ответов, коды ответов, Swagger UI
Коротко: для работы с API OTP-кодов нужен базовый URL
https://web.otpcod.ru/api/v1и API-ключ в заголовкеX-API-Key. Для 2FA-интеграции — отдельный ключ и Basic Auth.
Кому подходит
- Роль: Разработчик, Интегратор
- Уровень: Опытный
Что вы получите
Готовое подключение к API OTP-сервиса: базовый URL, ключ, формат запросов, который можно использовать в интеграции.
Перед началом
- У вас есть API-ключ с нужными правами доступа.
- У вас есть имена отправителей для каналов, по которым будете отправлять коды.
- Вы определили URL вебхука (если планируете получать статусы).
Если ключа ещё нет — создайте его в разделе API Подключения. Подробнее: API-ключи.
Базовый URL
https://web.otpcod.ru/api/v1
Все эндпоинты добавляются к базовому URL. Например:
| Эндпоинт | Полный URL |
|---|---|
/messages | https://web.otpcod.ru/api/v1/messages |
/omnimessages | https://web.otpcod.ru/api/v1/omnimessages |
/broadcast/broadcasts | https://web.otpcod.ru/api/v1/broadcast/broadcasts |
Аутентификация
OMNI API и Broadcasts API
API-ключ передаётся в заголовке X-API-Key:
X-API-Key: <ваш-ключ>
При создании ключа вы выбираете имена отправителей. От выбранных имён зависит, по каким каналам ключ сможет отправлять сообщения. Подробнее: API-ключи.
2FA-эндпоинты
2FA-интеграция использует Basic Auth. Логин — API-ключ интеграции, пароль — пустой. Ключ и URL выдаются при настройке интеграции в разделе 2FA Service.
Authorization: Basic <base64(API-ключ:)>
В curl это передаётся флагом -u:
curl -X POST https://<домен-OTP>/api/v1/2fa/verify -u <API-ключ> -d requestId=<requestId> -d code=<код>
Формат запроса
Все запросы используют JSON или form-data.
OMNI API и Broadcasts API
| Заголовок | Значение |
|---|---|
| Content-Type | application/json |
| X-API-Key | Ваш API-ключ |
Пример:
curl --location 'https://web.otpcod.ru/api/v1/messages' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <ваш-ключ>' \
--data-raw '{
"contact": "905063565285",
"channel": 1,
"senderId": "<senderID>",
"isOtp": true,
"payload": {
"text": "Ваш код: 1234"
}
}'
2FA-эндпоинты
| Заголовок | Значение |
|---|---|
| Content-Type | application/x-www-form-urlencoded |
| Authorization | Basic <base64(API-ключ:)> |
Пример:
curl -X POST https://<домен-OTP>/api/v1/2fa/verify \
-u <API-ключ> \
-d requestId=<requestId> \
-d code=<код>
Формат ответа
OMNI API
Успешный ответ 202 Accepted:
{
"error": false,
"data": {
"channel": 1,
"transactionId": "95e3e0da-9684-4ba4-88a3-e9207ddeca05",
"messageId": "6719b5f4-36af-4fba-b111-49ff07f4f96b"
}
}
Ошибка содержит error: true и data с message и requestId. Подробнее: Обработка ошибок API.
Broadcasts API
Успех — 200 OK (с телом) или 204 No Content (удаление). Ошибка содержит execId, key, code, message, args.
2FA-эндпоинты
Проверка кода (/2fa/verify) — успешный ответ 200 OK:
{
"number": "12345678910",
"verifiedAt": 1234567890
}
Статус запроса (/2fa/requests/{requestId}) — успешный ответ 200 OK:
{
"id": "<requestId>",
"number": "<номер>",
"rate": 0.0248,
"status": "SUBMIT",
"sender": "<имя отправителя>",
"goals": ["NUMBER_VERIFIED"],
"createdAt": 1234567891011
}
Коды ответов
| Код | Что означает |
|---|---|
| 200 OK | Успешно |
| 202 Accepted | Запрос принят, код в очереди |
| 204 No Content | Успешно, тело пустое |
| 400 Bad Request | Ошибка в параметрах запроса |
| 401 Unauthorized | Неверный или отсутствующий ключ |
| 403 Forbidden | Нет прав на операцию |
| 404 Not Found | Ресурс не найден |
| 500 Internal Server Error | Ошибка сервера |
Swagger UI
- OMNI API: https://web.otpcod.ru/api/v1/swagger-ui/index.html?urls.primaryName=OMNI_API
- Broadcasts API: https://web.otpcod.ru/api/v1/swagger-ui/index.html?urls.primaryName=Broadcasts_API
Swagger UI для 2FA-эндпоинтов не предусмотрен. Ключ и URL выдаются в разделе 2FA Service личного кабинета.
Результат
Вы знаете базовый URL, умеете передавать ключ и понимаете формат ответов. Можно переходить к работе с конкретными эндпоинтами.
Частые проблемы
Причина: заголовок X-API-Key не передан, ключ неверный.
Решение: проверьте заголовок и скопируйте ключ заново. Подробнее: Ошибка 401.
Причина: у ключа нет нужного scope.
Решение: откройте ключ и добавьте нужный scope в правах доступа. Подробнее: API-ключи.
Причина: в запросе указано имя отправителя, которое не привязано к этому ключу.
Решение: откройте ключ в разделе API Подключения и добавьте нужное имя отправителя.
См. также
Нужна помощь?
- OTP-коды: support@otpcod.ru