Reverse flash call — самый дешёвый способ подтвердить номер: пользователь сам звонит на выданный номер, а вы узнаёте результат по API. Кода вводить не нужно. Разберём интеграцию на Node.js от первого запроса до готового эндпоинта.
Обратный flash-call (reverse flash call) — метод верификации, при котором пользователь совершает короткий звонок на номер, который вы ему показываете. Звонок сбрасывается, деньги за него не списываются, а подтверждение происходит автоматически по Caller ID. Пользователю не нужно ждать SMS, читать и вводить код — достаточно нажать «позвонить».
Это метод по умолчанию в Verificahub: дешевле SMS, устойчив к блокировкам операторов и не зависит от того, установлен ли у пользователя мессенджер. Ниже — практическая интеграция.
api_key / api_secret.fetch).+7….Внешний API — server-to-server. api_secret — это пароль: не встраивайте его в браузер или мобильное приложение, все вызовы делайте с бэкенда.
Отправляем POST /v1/verify с номером и методом reverse_flash_call. Авторизация — HTTP Basic (api_key как логин, api_secret как пароль).
В ответ приходит 201 Created. Главное поле — number_to_call: именно этот номер нужно показать пользователю. Сам код при этом методе не передаётся и не вводится.
На фронтенде выводим number_to_call и просим совершить звонок — кнопкой tel: это делается в один тап. Пока пользователь звонит, сессия живёт expiry_seconds секунд (по умолчанию 300, диапазон 1–600).
После звонка сессия автоматически переходит в статус verified. Узнать это можно двумя способами.
Опрос статуса — периодически запрашивайте GET /v1/verify/{request_id}, пока status не станет verified, expired или failed:
Webhook — если задать URL вебхука в кабинете, Verificahub сам пришлёт POST с событием verification.verified при смене статуса. Это надёжнее и экономичнее опроса; запросы подписаны HMAC-SHA256 (заголовок X-Verificahub-Signature) — проверяйте подпись. Подробности — в документации.
Два эндпоинта: /verify/start инициирует проверку и отдаёт номер фронтенду, /verify/status возвращает текущий статус для опроса.
Никогда не проксируйте api_secret на клиент. Фронтенд общается только с вашим бэкендом, а бэкенд — с Verificahub.
Ошибки приходят в формате RFC-7807 со стабильным полем error_code — ветвитесь по нему, а не по тексту detail. При неудачной инициации деньги не списываются.
| error_code | HTTP | Что делать |
|---|---|---|
validation_error | 400 | Проверьте формат номера (E.164, +7…). |
region_not_supported | 400 | v1 работает только с номерами РФ +7. |
insufficient_balance | 402 | Пополните баланс в кабинете. |
no_gateway_available | 402 | Нет свободного канала — повторите с backoff или предложите другой метод. |
rate_limit_exceeded | 429 | Учтите Retry-After и снизьте частоту запросов. |
not_found | 404 | Неверный request_id или он не принадлежит вашему аккаунту. |
Модель оплаты — за результат: списание происходит только при успешном подтверждении, а неудачная инициация бесплатна. Обратный flash-call — самый дешёвый метод, от 0,25 ₽ за подтверждение. Актуальные цены и сравнение методов — на странице тарифов.
Если часть пользователей не может позвонить (например, из-за корпоративной АТС), добавьте запасной канал — Telegram OTP: код приходит в мессенджер, а подтверждается через POST /v1/verify/check. Как устроен каскад «звонок → Telegram → SMS», разбираем в отдельном гайде.
Нет. Пользователь просто звонит на номер number_to_call, звонок сбрасывается, и сессия подтверждается по Caller ID автоматически. Метод /v1/verify/check для этого метода не нужен.
По умолчанию 300 секунд. Можно задать своё значение полем expiry_seconds в диапазоне 1–600 при вызове POST /v1/verify.
По истечении TTL сессия перейдёт в статус expired. Списания не будет — вы платите только за успешное подтверждение.
Да. Настройте webhook в кабинете — Verificahub пришлёт подписанное HMAC событие verification.verified при смене статуса, и опрашивать API не придётся.