Каскадная доставка (каскад, fallback) — стратегия верификации, при которой подтверждение отправляют пользователю по нескольким каналам по очереди: если первый канал не довёл результат, система переходит к следующему. Классическая цепочка — Telegram → звонок → SMS: канал меняют до первого успеха, чтобы поднять доходимость и не переплачивать.
Ни один канал не доставляет 100%: у пользователя может не быть Telegram, обратный флеш-колл — не пройти, а SMS — задержаться у оператора. Каскад решает это сразу с двух сторон: повышает доходимость (шанс, что хотя бы один канал сработает) и помогает экономить — недорогие каналы закрывают основную массу трафика, а дорогой запасной подключается только при неудаче. Порядок каналов вы задаёте сами под свою аудиторию.
| Шаг | Канал | Ориентир по цене | Когда переходим дальше |
|---|---|---|---|
| 1 | Telegram OTP | от 0,90 ₽ | у пользователя нет Telegram или код не доставлен |
| 2 | Обратный флеш-колл | от 0,25 ₽ | звонок не прошёл или сессия истекла |
| 3 | SMS OTP | дороже звонка | финальный запасной канал |
В Verificahub нет параметра «каскад» — цепочку вы оркеструете на своей стороне, вызывая POST /v1/verify по одному методу за раз и переключая канал по исходу.
POST /v1/verify с первым method (например telegram_otp).telegram_otp проверьте код через POST /v1/verify/check, а reverse_flash_call подтверждается автоматически по Caller ID — код никто не вводит.delivery_unavailable, no_gateway_available) или сессия завершилась статусом expired/failed, повторите POST /v1/verify со следующим method.verification.verified / verification.expired / verification.failed, а не опросом по таймеру.Порядок каналов подбирайте под свою аудиторию и проверяйте на данных: GET /v1/usage возвращает success_rate и разбивку by_method — по ним видно, какой канал выгоднее ставить первым.
Важно и честно: в API Verificahub одна сессия привязана к одному методу — единого параметра «каскад» нет, список каналов в один запрос не передаётся. Каскад вы оркеструете на своей стороне: вызываете POST /v1/verify с первым method, а если пришла ошибка доставки (delivery_unavailable, no_gateway_available) или сессия завершилась статусом expired/failed, делаете новый вызов /v1/verify со следующим методом. Отслеживать неудачу удобнее по вебхукам verification.expired / verification.failed, а не по таймерам. Готовую цепочку по шагам разбираем в гайде Каскадная доставка OTP. Плюс биллинга «оплата за результат»: неуспешные шаги каскада не тарифицируются — вы платите только за тот канал, который довёл верификацию до конца.
Нет. Одна сессия POST /v1/verify использует один method. Каскад вы собираете сами: при ошибке доставки или статусе failed/expired вызываете /v1/verify заново со следующим методом. Пошаговый пример — в гайде.
Нет. Биллинг работает по принципу «оплата за результат»: неуспешная инициация и недоставленные попытки не списываются. Вы платите только за тот канал, который довёл верификацию до конца.
Зависит от аудитории. Часто первым ставят удобный и недорогой канал — обратный флеш-колл или Telegram OTP, — а SMS оставляют как финальный запасной. Универсального порядка нет: тестируйте на своей доходимости по GET /v1/usage.
По исходу первой сессии: ошибка доставки (delivery_unavailable, no_gateway_available) при создании либо финальный статус expired/failed. Ловить это удобнее вебхуками verification.expired / verification.failed, чем опрашивать GET /v1/verify/{request_id} по таймеру.