Запрос и проверка кода
Запросить код
POST /v1/verify создаёт сессию и ставит код в очередь на отправку. Ответ 201. Обязательно только поле phone.
{
"phone": "+77011234567",
"purpose": "login",
"signals": {
"ip": "95.56.1.1",
"device_id": "3f2c9a71",
"device_platform": "ios",
"device_model": "iPhone 16",
"os_version": "26.1",
"app_version": "2.4.0",
"user_agent": "MyApp/2.4.0",
"is_trusted_user": false
},
"options": {
"locale": "ru",
"code_size": 4,
"preferred_channel": "telegram"
},
"metadata": { "correlation_id": "order-42" }
}
| Поле | Значения |
|---|---|
phone |
Мобильный номер Казахстана: +77XXXXXXXXX, 77… или 87…. Пробелы, скобки и дефисы допускаются |
purpose |
login (по умолчанию) или registration |
signals.ip |
IPv4 или IPv6 пользователя |
signals.device_id |
Идентификатор устройства, до 128 символов |
signals.device_platform |
android, ios или web |
signals.device_model |
До 64 символов |
signals.os_version, signals.app_version |
До 32 символов |
signals.user_agent |
До 300 символов |
signals.is_trusted_user |
true снимает лимит сессий на номер и правила антифрода вашего аккаунта |
options.locale |
Язык сообщения: ru (по умолчанию), kk или en |
options.code_size |
Длина кода, от 4 до 8 цифр. Перекрывает настройку аккаунта |
options.custom_code |
Ваш код из 4–8 цифр вместо случайного |
options.preferred_channel |
Начать с канала telegram, whatsapp или sms. Подробнее — в разделе каналы |
metadata.correlation_id |
Ваш идентификатор, до 80 символов. Попадает в выписку, CSV и вебхуки |
Передавайте signals, если они у вас есть: антифрод считает лимиты по IP и устройству, а без них эти правила не работают. Длинные текстовые сигналы обрезаются, запрос из-за них не отклоняется.
Ответ:
{"id": "vrf_8c1f04a2b7d93e6f5a10", "status": "pending", "expires_at": "2026-11-08T10:05:00Z"}
Для тестового номера в ответе будет ещё "test": true. Канала в этом ответе нет: его VERYO выбирает позже.
Проверить код
POST /v1/verify/check принимает id сессии и code, который ввёл пользователь. Ответ 200.
{"id": "vrf_8c1f04a2b7d93e6f5a10", "code": "1234"}
{"id": "vrf_8c1f04a2b7d93e6f5a10", "status": "verified", "channel": "telegram"}
status |
Что значит | Что делать |
|---|---|---|
pending |
Код неверный, попытки остались | Попросить ввести код ещё раз |
verified |
Код подтверждён. Повторный вызов тоже вернёт verified |
Пропустить пользователя |
failed |
Кончились попытки ввода или каналы доставки | Запросить новый код |
expired |
Срок кода истёк | Запросить новый код |
channel — канал, доставивший код: telegram, whatsapp или sms. Поля нет, пока код не доставлен, и у тестовых номеров.
Сессии другого аккаунта и несуществующие id дают 404 not_found.
Настройки кода
Значения по умолчанию меняются в кабинете, в разделе Код и SMS.
| Настройка | Диапазон | По умолчанию |
|---|---|---|
| Длина кода | 4–8 цифр | 4 |
| Срок действия | 1–30 минут | 5 минут |
| Попыток ввода | 1–10 | 3 |
| Сессий на номер | 1–50 | 4 |
| Окно лимита сессий | 1–168 часов | 72 часа |
| Отменять прежний код при новом запросе | да или нет | нет |
Повторная отправка
Чтобы отправить код ещё раз, вызовите POST /v1/verify снова. Это новая сессия с новым id и новым кодом, поэтому:
- при доставке она оплачивается отдельно;
- она учитывается в лимите сессий на номер, при превышении вернётся
429 rate_limited; - прежний код продолжит действовать до конца срока, если не включена настройка отмены.