> ## 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 de verificación de teléfono: OTP, SMS y WhatsApp

> Didit verifica números de teléfono con OTP por SMS, WhatsApp, Telegram, RCS y voz. $0.02 por llamada más tarifa del operador, con análisis de riesgo.

La verificación de teléfono de Didit ofrece un método fiable para verificar los números de teléfono de los usuarios mediante códigos de un solo uso (OTP). Esta función añade una capa de seguridad esencial a tu proceso de verificación de identidad y garantiza que los datos de contacto del usuario sean legítimos.

Prompt de integración de la verificación de teléfono
        Copy prompt to clipboard



      
      

\<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>



      
      

Paste into

En la lección de la Academy sobre cómo leer un resultado de verificación, el capítulo del minuto 8:08 trata la verificación de teléfono y la detección de duplicados.[Verificación de teléfono y duplicados — Didit Academy](https://www.youtube.com/embed/7htTWCWsl60?start=488\&rel=0\&playsinline=1)![Diagrama del flujo de verificación de teléfono](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)## Cómo funcionaNuestra solución de verificación de teléfono ofrece una validación completa del número mediante un proceso sencillo y cómodo para el usuario. El sistema combina la verificación por OTP con una evaluación avanzada de riesgos para ofrecer una verificación de teléfono fiable a gran escala.**1. Recogida del teléfono**El sistema recoge de forma segura la siguiente información:| Dato recogido | Detalles |
| - | - |
| **Número de teléfono** | Si no se facilita al crear la sesión, el usuario introduce su número en formato internacional. Si se facilita, el usuario debe verificar el número ya rellenado. |
| **Código de país** | Se sugiere automáticamente según la ubicación de la IP o la selección del usuario. |
| **Tipo de operador** | Se detecta si el número es móvil o fijo. |**2. Generación y entrega del OTP**Nuestro sistema de verificación:- Genera un código de un solo uso seguro y con tiempo limitado
- Entrega el código por SMS al número indicado
- Garantiza una entrega optimizada mediante varias integraciones con operadores
- Ofrece alternativas ante problemas de entrega**3. Validación del código**El usuario completa la verificación:- Introduciendo el código recibido en la interfaz de verificación
- Enviándolo dentro del plazo configurado (normalmente 5-10 minutos)
- Solicitando un código nuevo si es necesario (con la limitación de frecuencia adecuada)**4. Evaluación de riesgos**Nuestro sistema realiza comprobaciones avanzadas:| Comprobación | Descripción |
| - | - |
| **Formato y operador** | Verifica el formato del número de teléfono y la información del operador. |
| **Números desechables** | Comprueba el número con bases de datos de números desechables o virtuales conocidos. |
| **Detección de SIM swap** | Identifica posibles riesgos de intercambio de SIM. |
| **Patrones de actividad** | Detecta patrones de actividad sospechosos. |
| **Datos históricos** | Contrasta con datos históricos de verificación. |**5. Entrega del resultado**Accede a los resultados de la verificación por varios canales:| Canal | Descripción |
| - | - |
| **Panel** | Actualizaciones del panel en tiempo real. |
| **Webhooks** | Notificaciones instantáneas por webhook. |
| **API** | Integración mediante una API RESTful. |
| **Informes** | Informes completos con información detallada de la verificación. |## Funciones de verificaciónNuestro servicio de verificación de teléfono ofrece varias funciones clave para mejorar tu proceso de verificación:#### Verificación por OTP- **Generación segura de códigos**: códigos de un solo uso generados de forma aleatoria
- **Entrega por SMS**: entrega rápida y fiable a dispositivos móviles
- **Tiempos de espera configurables**: define los tiempos de caducidad según tus requisitos de seguridad
- **Opciones de reintento**: permite a los usuarios solicitar códigos nuevos con la limitación de frecuencia adecuada
- **Códigos con tu marca**: los códigos por SMS nombran tu marca en lugar de enviar un mensaje genérico, sin coste adicional. Consulta [Mensajes de verificación con tu marca](#mensajes-de-verificación-con-tu-marca).
- **Tu propio número de WhatsApp**: los códigos de WhatsApp pueden enviarse desde tu propio número de WhatsApp Business. Consulta [Envía los códigos de WhatsApp desde tu propio número](#envía-los-códigos-de-whatsapp-desde-tu-propio-número).#### Mensajes de verificación con tu marcaLos códigos de verificación por SMS pueden nombrar tu marca, para que tus usuarios reconozcan el mensaje como tuyo:> 123456 is your verification code for **Acme Bank**Solo se puede personalizar el nombre.
El resto del texto es un texto estándar registrado ante los operadores móviles de cada país, lo que evita que los códigos se filtren como spam, y se traduce al idioma del destinatario.
Poner tu marca es gratis: un código con marca cuesta lo mismo que uno sin ella.**Define el nombre del remitente de tus SMS** en la Business Console, en **Verificación telefónica → Configuración** de un flujo o en **Marca blanca → SMS**.
Pertenece a tu aplicación, no a un flujo concreto: firma todos los códigos SMS que envía la aplicación, en cualquier flujo y a través de la API independiente, con o sin personalización de marca blanca.**Qué nombre lleva un código**, gana la primera coincidencia:1) `options.sms_sender_name` en [`POST /v3/phone/send/`](https://docs.didit.me/standalone-apis/phone-send), para ese único código.
2) El nombre de remitente de SMS de tu aplicación.
3) Solo en los envíos de marca blanca (un flujo con personalización de marca blanca, o `options.use_white_label_customization: true` en la API), el nombre público de tu marca blanca.
4) Si no, el código se envía sin nombre.Un nombre de remitente usa de 1 a 30 caracteres: solo letras, dígitos, espacios y ' & - !, no solo dígitos, con espacios simples entre palabras.
La API rechaza con `400` un nombre que incumpla estas reglas antes de enviar ningún código.- **Canales**: el nombre se añade a los mensajes SMS, incluido un SMS enviado como alternativa desde otro canal. Los códigos de WhatsApp se envían con un mensaje fijo y no lo llevan; para que aparezca el nombre de tu empresa, [envíalos desde tu propio número](#envía-los-códigos-de-whatsapp-desde-tu-propio-número).
- **Cambios por día**: cada aplicación puede empezar a usar hasta dos nombres nuevos por día (UTC), contando tanto los nuevos nombres de remitente como los nuevos valores de `sms_sender_name`. Después, los códigos mantienen el nombre actual de la aplicación hasta el día siguiente, y un nuevo nombre por solicitud se envía con el nombre de la aplicación. Un nombre que ya usaste antes no cuenta de nuevo.
- **La entrega es lo primero**: un problema con la marca nunca detiene un código. Si no se puede aplicar un nombre, el código se envía con el nombre de la aplicación o sin ninguno.#### Envía los códigos de WhatsApp desde tu propio númeroPor defecto, los códigos de WhatsApp proceden del número de WhatsApp Business de Didit.
Puedes conectar tu propio número de WhatsApp Business, para que tus usuarios reciban los códigos con el nombre y el número de tu empresa.**Conecta un número** en la Business Console, en **Verificación telefónica → Configuración → Número de WhatsApp** de un flujo, y selecciona **Conectar número de WhatsApp**.
Se abre una ventana de inicio de sesión: inicia sesión en la cuenta de empresa que gestiona tu número de WhatsApp Business y elige la cuenta de WhatsApp Business y el número desde el que enviar.
Didit registra entonces el número para el envío y crea su mensaje de verificación.
Editarlo requiere permiso para editar la personalización, igual que el nombre del remitente de SMS.El número pertenece a tu aplicación, no a un flujo concreto: una vez conectado, envía todos los códigos de WhatsApp que envía la aplicación, en cualquier flujo y a través de la API independiente.- **Aprobación**: el nuevo mensaje de verificación necesita aprobación antes de que el número pueda enviar códigos, normalmente en pocos minutos. Hasta entonces, la tarjeta muestra el número como pendiente de aprobación y los códigos siguen saliendo desde el número de Didit.
- **Texto del mensaje**: los mensajes de verificación en WhatsApp usan un texto estándar en el idioma de tu usuario: el código, una nota de seguridad y un botón de copiar. El texto no se puede editar, pero el remitente es tu empresa.
- **Entrega**: si un código no se puede entregar por WhatsApp, se envía por SMS, firmado con el nombre de remitente de SMS que hayas definido.
- **Facturación**: los mensajes que envía tu número se facturan a tu cuenta de WhatsApp Business, así que Didit cobra solo su tarifa de verificación (\$0.02) por esos códigos. Los códigos enviados por SMS se facturan como de costumbre.
- **Requiere atención**: si el número ya no puede enviar (por ejemplo, porque se le retiró el acceso a tu cuenta de empresa), los códigos vuelven a salir desde el número de Didit y la tarjeta te pide que vuelvas a conectar el número.
- **Desconéctalo** en cualquier momento desde la misma tarjeta. Los códigos vuelven a salir desde el número de Didit; el número y su mensaje de verificación permanecen en tu cuenta de WhatsApp Business.#### Análisis del número de teléfono- **Validación del formato**: comprueba que el número de teléfono sigue el formato internacional correcto
- **Detección del operador**: identifica el proveedor de telecomunicaciones asociado al número
- **Tipo de número**: distingue entre números móviles, fijos y VoIP
- **Validación del país**: verifica que el número de teléfono coincide con el formato esperado del país#### Evaluación de riesgos- **Detección de números desechables**: identifica números temporales usados para evitar la trazabilidad
- **Identificación de números virtuales**: marca los números que pueden ser virtuales o basados en VoIP
- **Monitorización de la actividad**: rastrea patrones sospechosos entre los intentos de verificación
- **Comprobación de listas de bloqueo**: contrasta con listas internas de números usados indebidamente con anterioridad## PreciosLa verificación de teléfono se cobra **por mensaje enviado**, con precios transparentes de pago por uso:| Componente | Coste |
| - | - |
| **Tarifa de Didit** | \$0.02 por verificación |
| **Tarifa del operador** | Varía según el país y el canal |
| **Total** | \$0.02 + tarifa del operador |El descuento de tu plan se aplica solo a la tarifa de Didit de \$0.02; la tarifa del operador se repercute al coste y nunca se descuenta. Consulta [Descuentos](https://docs.didit.me/getting-started/pricing.md#discounts).Admitimos varios canales de entrega con precios distintos (la disponibilidad varía según el país):| Canal | Descripción |
| - | - |
| **SMS** | Entrega tradicional por mensaje de texto |
| **WhatsApp** | Entrega mediante mensajería de WhatsApp |
| **Telegram** | Entrega mediante mensajería de Telegram |
| **RCS** | Mensajería Rich Communication Services |
| **Viber** | Entrega mediante mensajería de Viber |
| **Zalo** | Entrega mediante mensajería de Zalo (Vietnam) |> [!NOTE]
>
> Solo pagas cuando se envía un mensaje. Si el usuario abandona antes de la entrega del OTP, no se te cobra.→ [Precios de la verificación de teléfono](https://docs.didit.me/getting-started/phone-verification-pricing.md)


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