> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# API проверки телефона: OTP, SMS и WhatsApp

> Проверяйте номера телефонов через SMS, WhatsApp, Telegram и голос с Didit. Оплата за вызов $0.02 + оператор, детекция оператора, скоринг риска.

Проверка телефона от Didit предоставляет надежный способ верификации телефонных номеров пользователей с помощью одноразовых кодов (OTP). Эта функция добавляет важный уровень безопасности в процесс верификации личности, гарантируя подлинность контактных данных пользователей.

Промпт для интеграции проверки телефона
        Скопировать промпт в буфер обмена



      
      

\<pre>

\````# Goal
Integrate Didit Phone Verification (OTP send + check + carrier/risk lookup) into your app. Pick ONE mode.

\# Mode A — Session-based
Use this when the user goes through a hosted Didit flow — the SDK collects the number and OTP for you.

1\. Add the PHONE feature to the workflow (Business Console or POST /v3/workflows/). Configure risk actions: duplicated_phone_number_action, disposable_number_action, voip_number_action.
2\. Create a session — POST /v3/session/ with { workflow_id, vendor_data, callback }. See /sessions-api/create-session.
3\. Open session.url for the user (or mount the Web/Mobile SDK).
4\. Fetch the decision — GET /v3/session/{sessionId}/decision/ or subscribe to session.status.updated.

Decision surface: `phone_verifications[]` array on the decision payload.

\# Mode B — Standalone API (server-to-server, OTP pair)
Two endpoints, paired by phone_number.

Step 1 — send the code:
\```bash
curl -X POST 'https://verification.didit.me/v3/phone/send/' \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155552671",
"options": {
  "code_size": 6,
  "preferred_channel": "whatsapp",
  "locale": "en-US"
},
"vendor_data": "user-1234"
}'
\```
Channels: `whatsapp` (default), `sms`, `telegram`, `voice` — delivery falls back to SMS if the preferred channel is unavailable. Codes are valid for **5 minutes**; one free retry per number within the window.
Branding: SMS codes carry your app's SMS sender name ("123456 is your verification code for Acme Bank") on every send, at no extra cost; set it in the Business Console. Pass `options.sms_sender_name` to sign one code with another name (1 to 30 characters). WhatsApp codes use a fixed message; connect your own WhatsApp Business number in the Business Console to send them under your business name.

Step 2 — check the code (user types it into your UI):
\```bash
curl -X POST 'https://verification.didit.me/v3/phone/check/' \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155552671",
"code": "123456",
"voip_number_action": "DECLINE"
}'
\```
Each session accepts **up to 3** code-entry attempts. The check response includes the full phone metadata (carrier, line_type, disposable, voip, ported).

\# Status enum (per phone_verifications[].status / phone.status)
"Not Started" | "In Progress" | "Approved" | "Declined" | "Failed" | "Expired or Not Found" | "Abandoned" | "Kyc Expired"

\# Warnings (LogWarningChoices.PHONE)
warnings[] risk codes include:
DUPLICATED_PHONE_NUMBER, DISPOSABLE_NUMBER, VOIP_NUMBER, INVALID_PHONE_NUMBER, OTP_DELIVERY_FAILED, OTP_MAX_ATTEMPTS_REACHED, OTP_EXPIRED, PHONE_NUMBER_BLOCKED.
Full catalogue: /core-technology/phone-verification/warnings-phone-verification.

\# Failure modes to handle
\- HTTP 400 — non-E.164 phone_number on /send/.
\- send response status="Blocked" with reason="spam" — anti-abuse block; no code sent, no charge.
\- check response status="Failed" — wrong code, attempts remaining; re-prompt.
\- check response status="Declined" — third failed attempt; restart with /v3/phone/send/.
\- check response status="Expired or Not Found" — outside the 5-minute window or no pending session for that number; restart.

\# See also
\- Canonical schema: /reference/data-models#phone-verification
\- Per-feature report: /core-technology/phone-verification/report-phone-verification
\- Risk catalogue: /core-technology/phone-verification/warnings-phone-verification
\- Full integration playbook: /integration/integration-prompt````

\</pre>



      
      

Вставьте в

В уроке Didit Academy о чтении результатов верификации в разделе на отметке 8:08 рассматриваются проверка телефона и обнаружение дубликатов.[Проверка телефона и дубликаты — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?start=488\&rel=0\&playsinline=1)![Диаграмма процесса проверки телефона](https://mintcdn.com/didit-0f962782/z6T2GHM4Zh-iSj-K/images/phone-verification-flow.png?fit=max\&auto=format\&n=z6T2GHM4Zh-iSj-K\&q=85\&s=6c12863ce97e5ad6a11757b598918932)## Как это работаетНаше решение для проверки телефона обеспечивает комплексную валидацию телефонных номеров через простой и удобный процесс. Система объединяет верификацию через OTP с передовой оценкой рисков, обеспечивая надежную проверку номеров в больших масштабах.**1. Сбор номера телефона**Система безопасно собирает следующую информацию:| Собираемые данные | Подробности |
| - | - |
| **Номер телефона** | Если номер не был передан при создании сессии, пользователь вводит его в международном формате. Если номер был передан, пользователь должен подтвердить предзаполненный номер. |
| **Код страны** | Предлагается автоматически на основе геолокации по IP или выбирается пользователем вручную. |
| **Тип оператора связи** | Определяется, является ли номер мобильным или стационарным. |**2. Генерация и доставка OTP**Наша система верификации:- Генерирует безопасный одноразовый код с ограниченным сроком действия
- Доставляет код по SMS на указанный номер
- Обеспечивает оптимизированную доставку благодаря интеграции с множеством операторов связи
- Предоставляет резервные варианты на случай проблем с доставкой**3. Валидация кода**Пользователь завершает верификацию:- Вводя полученный код в интерфейсе верификации
- Отправляя его в течение настроенного периода времени (обычно 5–10 минут)
- Запрашивая новый код при необходимости (с учетом установленных лимитов запросов)**4. Оценка рисков**Наша система выполняет расширенные проверки:| Проверка | Описание |
| - | - |
| **Формат и оператор** | Проверяет формат номера телефона и информацию об операторе связи. |
| **Одноразовые номера** | Выполняет проверку по базам известных одноразовых и виртуальных номеров. |
| **Обнаружение замены SIM-карты** | Выявляет потенциальные риски, связанные с заменой SIM-карты (SIM swap). |
| **Паттерны активности** | Выявляет подозрительные шаблоны активности. |
| **Исторические данные** | Сопоставляет информацию с историческими данными верификаций. |**5. Получение результатов**Получайте результаты верификации по нескольким каналам:| Канал | Описание |
| - | - |
| **Панель управления** | Обновления в панели управления в реальном времени. |
| **Webhook** | Мгновенные уведомления через webhook. |
| **API** | Интеграция через RESTful API. |
| **Отчёты** | Подробные отчёты с детальной информацией о верификации. |## Возможности верификацииНаш сервис проверки телефона предлагает несколько ключевых возможностей для оптимизации процесса верификации:#### Верификация через OTP- **Безопасная генерация кодов**: случайно генерируемые одноразовые пароли
- **Доставка по SMS**: быстрая и надёжная доставка на мобильные устройства
- **Настраиваемый срок действия**: устанавливайте время истечения в соответствии с требованиями безопасности
- **Повторные попытки**: разрешайте пользователям запрашивать новые коды с соответствующим лимитом запросов
- **Брендированные коды**: SMS-коды содержат имя вашего бренда вместо стандартного сообщения без дополнительных затрат. См. [Брендированные сообщения верификации](#брендированные-сообщения-верификации).
- **Собственный номер WhatsApp**: коды WhatsApp могут отправляться с вашего собственного номера WhatsApp Business. См. [Отправка кодов WhatsApp с собственного номера](#отправка-кодов-whatsapp-с-собственного-номера).#### Брендированные сообщения верификацииSMS-коды верификации могут содержать имя вашего бренда, чтобы пользователи понимали, что сообщение отправлено вами:> 123456: ваш код верификации для **Acme Bank**Настраивается только имя.
Остальной текст стандартизирован и зарегистрирован у мобильных операторов в каждой стране, что предотвращает попадание кодов в спам, а также переведён на язык получателя.
Брендинг бесплатен: брендированный код стоит столько же, сколько и обычный.**Укажите имя отправителя SMS** в Business Console: в разделе **Phone Verification → Settings** нужного сценария или в подразделе **White Label → SMS**.
Оно привязано к вашему приложению, а не к конкретному сценарию: им подписывается каждый SMS-код, отправленный приложением во всех сценариях и через отдельный API, как с настройкой White label, так и без неё.**Какое имя указывается в коде** (применяется первое совпадение):1) `options.sms_sender_name` в [`POST /v3/phone/send/`](https://docs.didit.me/ru/standalone-apis/phone-send), для этого конкретного кода.
2) Имя отправителя SMS вашего приложения.
3) Только при отправках с White label (сценарий с настройкой White label или `options.use_white_label_customization: true` в API), ваше публичное имя White label.
4) В остальных случаях код отправляется без указания имени.Имя отправителя содержит от 1 до 30 символов: только буквы, цифры, пробелы и знаки ' & - !, не может состоять только из цифр, а слова разделяются одиночными пробелами.
API отклоняет имя, не соответствующее этим правилам, с кодом `400` ещё до отправки кода.- **Каналы**: имя добавляется в SMS-сообщения, включая SMS, отправленные в качестве резервного канала при сбое другого способа доставки. Коды WhatsApp отправляются с фиксированным сообщением и не содержат этого имени; чтобы в них отображалось имя вашей компании, [отправляйте их с собственного номера](#отправка-кодов-whatsapp-с-собственного-номера).
- **Лимит изменений в день**: каждое приложение может начать использовать до двух новых имён в день (UTC), считая как новые имена отправителя, так и новые значения `sms_sender_name`. После этого коды отправляются с текущим именем приложения до наступления следующих суток, а код с новым именем из запроса отправляется с именем приложения. Имя, использованное ранее, повторно не учитывается.
- **Приоритет доставки**: проблемы с брендингом никогда не блокируют отправку кода. Если имя применить невозможно, код отправляется с именем приложения либо без него.#### Собственный текст SMS и имя отправителяВы можете заменить текст SMS-кодов и имя отправителя, которое видят пользователи.
Оба параметра настраиваются в Business Console в подразделе **White Label → SMS**.
Они привязаны к вашему приложению, как и имя отправителя SMS, и применяются ко всем отправляемым им SMS-кодам во всех сценариях и через отдельный API.**Собственный текст** задаётся для каждого языка отдельно.
Код отправляется с вашим текстом, если вы написали вариант для языка получателя; для всех остальных языков используется стандартный переведённый текст Didit.
Используйте `{code}` для подстановки кода и, по желанию, `{brand}` для имени отправителя SMS, например: `Acme: {code} is your login code for {brand}.`Требования к тексту:- должен содержать `{code}` ровно один раз и не содержать никаких других подстановок, кроме `{code}` и `{brand}`;
- не должен содержать ссылок: операторы связи блокируют коды верификации, содержащие ссылки;
- должен помещаться в одно SMS с 8-значным кодом и 30-символьным именем: до 160 символов, либо до 70 символов при использовании знаков за пределами базовой латиницы (например, кириллицы, арабского письма или эмодзи).**Собственное имя отправителя** состоит из 3-11 букв, цифр и пробелов, не может состоять только из цифр, например `AcmeBank`.
Оно используется в странах, где Didit поддерживает кастомные имена отправителей (в странах, чьи операторы принимают имя отправителя без предварительной регистрации); во всех остальных странах ваши коды отправляются от имени Didit.
Свяжитесь со службой поддержки, чтобы запросить поддержку страны, в которой требуется регистрация имени отправителя.- **Приоритет доставки**: если код отправляется повторно через маршрут, который не поддерживает ваш текст или ваше имя отправителя, он отправляется со стандартным текстом Didit, подписывается вашим именем отправителя SMS и отправляется от имени Didit, поэтому код доставляется всегда.#### Отправка кодов WhatsApp с собственного номераПо умолчанию коды WhatsApp отправляются с номера WhatsApp Business компании Didit.
Вместо этого вы можете подключить собственный номер WhatsApp Business, чтобы пользователи получали коды с именем и с номера вашей компании.**Подключите номер** в Business Console: в разделе сценария **Phone Verification → Settings → WhatsApp number** выберите **Connect WhatsApp number**.
Откроется окно входа: войдите в бизнес-аккаунт, управляющий вашим номером WhatsApp Business, затем выберите аккаунт WhatsApp Business и номер для отправки.
После этого Didit зарегистрирует номер для отправки и создаст шаблон сообщения верификации.
Для его редактирования требуются права на изменение настроек, как и в случае с именем отправителя SMS.Номер привязан к вашему приложению, а не к конкретному сценарию: после подключения он используется для отправки всех кодов WhatsApp этого приложения во всех сценариях и через отдельный API.- **Одобрение**: перед тем как номер сможет отправлять коды, новое сообщение верификации должно пройти одобрение, что обычно занимает несколько минут. До подтверждения в карточке отображается статус ожидания, а коды тем временем продолжают отправляться с номера Didit.
- **Текст сообщения**: сообщения верификации в WhatsApp используют стандартный текст на языке пользователя: код, примечание о безопасности и кнопку копирования. Текст изменить нельзя, но отправителем выступает ваша компания.
- **Доставка**: если код не удаётся доставить через WhatsApp, он отправляется по SMS с подписью вашего имени отправителя SMS.
- **Биллинг**: сообщения, отправленные с вашего номера, тарифицируются в вашем аккаунте WhatsApp Business, поэтому Didit взимает за такие коды только сбор за верификацию (\$0.02). Коды, отправленные по SMS, тарифицируются в обычном порядке.
- **Требует внимания**: если отправка с номера становится невозможной (например, был отозван доступ в бизнес-аккаунте), коды снова начинают отправляться с номера Didit, а в карточке появляется запрос на повторное подключение номера.
- **Отключить** номер можно в любой момент из этой же карточки. Коды снова будут отправляться с номера Didit; при этом сам номер и сообщение верификации останутся в вашем аккаунте WhatsApp Business.#### Анализ номера телефона- **Валидация формата**: проверка соответствия номера телефона корректному международному формату
- **Определение оператора**: определение поставщика телекоммуникационных услуг, связанного с номером
- **Тип номера**: различение мобильных, стационарных и VoIP-номеров
- **Валидация страны**: проверка соответствия номера телефона ожидаемому формату данной страны#### Оценка риска- **Обнаружение одноразовых номеров**: выявление временных номеров, используемых, чтобы избежать отслеживания
- **Идентификация виртуальных номеров**: маркировка номеров, которые могут быть виртуальными или работать через VoIP
- **Мониторинг активности**: отслеживание подозрительных паттернов при попытках верификации
- **Проверка по спискам блокировки**: сверка с внутренними списками номеров, ранее использовавшихся не по назначению## ЦеныПроверка телефона тарифицируется **за отправленное сообщение** с прозрачной оплатой по факту использования:| Компонент | Стоимость |
| - | - |
| **Комиссия Didit** | \$0.02 за верификацию |
| **Комиссия оператора** | Зависит от страны и канала |
| **Всего** | \$0.02 + комиссия оператора |Скидка по вашему тарифу применяется только к комиссии Didit в размере \$0.02; комиссия оператора передается по себестоимости и никогда не подлежит скидке. См. [Скидки](https://docs.didit.me/ru/getting-started/pricing.md#скидки).Мы поддерживаем несколько каналов доставки с различными тарифами (доступность зависит от страны):| Канал | Описание |
| - | - |
| **SMS** | Традиционная доставка текстовых сообщений |
| **WhatsApp** | Доставка сообщений через WhatsApp |
| **Telegram** | Доставка сообщений через Telegram |
| **RCS** | Обмен сообщениями Rich Communication Services |
| **Viber** | Доставка сообщений через Viber |
| **Zalo** | Доставка сообщений через Zalo (Вьетнам) |> [!NOTE]
>
> Вы платите только тогда, когда сообщение отправлено. Если пользователь прерывает процесс до доставки OTP, плата не взимается.→ [Цены на проверку телефона](https://docs.didit.me/ru/getting-started/phone-verification-pricing.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.