Saltar al contenido principal
Verificación y 2FA

API de verificación por SMS: códigos OTP de un solo uso

Verifica altas de usuarios, inicios de sesión y operaciones sensibles con un código de verificación por SMS, WhatsApp o Telegram. OTP y 2FA con la API /verify: la plataforma genera el código, lo envía por el canal que elijas en la llamada y lo comprueba, con webhooks de estado firmados para reaccionar al instante si un código no llega.

  • OTP por SMS desde 0,039 €
  • Un canal por llamada: SMS, WhatsApp o Telegram
  • Códigos de un solo uso con caducidad
  • RGPD · Servidores UE

Qué es un OTP por SMS y por qué sigue siendo el estándar de verificación

Sencillo para el usuario, universal en cobertura y sin apps que instalar: por eso el código de verificación por SMS sigue protegiendo altas y logins en todo el mundo.

Un OTP (one-time password) es un código de un solo uso — normalmente de 4 a 8 dígitos — que envías al móvil del usuario para demostrar que ese número le pertenece de verdad. Es la base del 2FA por SMS (doble factor de autenticación), de la verificación de altas en aplicaciones y ecommerce, de la confirmación de operaciones sensibles y de la firma de consentimientos.

¿Por qué el SMS? Porque funciona en cualquier móvil, sin instalar nada y sin datos: la cobertura es universal. Y cuando quieres reforzarlo, WhatsApp aporta su categoría específica authentication con botón de autocompletar, y Telegram añade el canal más barato, a 0,010 € por mensaje, para los usuarios que ya hayan iniciado la conversación con tu bot — su API no permite mandar un código al número de alguien que no lo haya hecho, así que Telegram sirve para reverificar a quien ya tienes vinculado, no para el primer alta. Con SMSverifica los tres canales viven en la misma API REST, con la misma llamada: eliges el canal en cada /verify/start y usas SMS para todo lo demás.

Dónde se usa la verificación por SMS

  • Altas y registro de usuarios con número verificado
  • 2FA en el inicio de sesión y cambios de contraseña
  • Confirmación de pedidos, pagos y operaciones sensibles
  • Códigos de acceso de un solo uso a puertas, eventos y zonas restringidas
  • Verificación de identidad en el fichaje remoto y teletrabajo
  • Recuperación de cuentas y validación de números en bases de datos

Flujo de verificación en tres pasos: alta, envío del código y validación

Así funciona un circuito OTP con la API de SMSverifica, paso a paso.

1. El usuario se da de alta

Tu aplicación recoge el número de móvil en el formulario de registro, login o compra. A partir de ahí puedes delegar el código en la plataforma con /verify o generarlo tú y enviarlo como un mensaje normal.

2. Envías el código OTP

Una llamada a POST /api/v1/verify/start con la cabecera Idempotency-Key — así un reintento de tu backend jamás duplica el SMS ni el cobro — y el código llega al móvil en segundos.

3. Validas y das acceso

El usuario teclea el código y tu backend llama a POST /api/v1/verify/check: un código erróneo devuelve 200 con status: invalid y descuenta uno de los 5 intentos, no un error de red disfrazado. Los webhooks firmados te confirman la entrega.

terminal — genera y envía el OTP por SMS
curl -X POST https://app.smsverifica.com/api/v1/verify/start \
  -H "X-Api-Key: sk_live_tu_api_key" \
  -H "X-Api-Secret: tu_api_secret" \
  -H "Idempotency-Key: otp-usuario-8842-intento-1" \
  -H "Content-Type: application/json" \
  -d '{
    "channel": "sms",
    "to": "+34612345678",
    "length": 6,
    "ttl_seconds": 300
  }'
terminal — comprueba el código que teclea el usuario
curl -X POST https://app.smsverifica.com/api/v1/verify/check \
  -H "X-Api-Key: sk_live_tu_api_key" \
  -H "X-Api-Secret: tu_api_secret" \
  -H "Content-Type: application/json" \
  -d '{
    "id": 5512,
    "code": "482913"
  }'

// 200 { "data": { "id": 5512, "status": "verified", "attempts_remaining": 4 } }

El mismo JSON con "channel": "whatsapp" (y una plantilla authentication con {code} en sus variables) o "channel": "telegram": el canal se elige en cada llamada. El OTP por SMS a España cuesta 0,039 €, el código de verificación por WhatsApp (categoría authentication) 0,005 € —más lo que Meta te facture— y por Telegram 0,010 €, todos sin IVA — consulta todas las tarifas de SMS por país y WhatsApp por categoría. Si prefieres generar tú el código, POST /api/v1/messages envía el texto que quieras y te deja la lógica de caducidad e intentos.

Si el SMS no llega: reintento por otro canal desde tu backend

Un OTP que no llega es un usuario que no se registra, un carrito abandonado o un empleado que no puede fichar. Aquí va, sin adornos, quién hace qué cuando eso pasa.

Lo que hace la plataforma hoy. Los webhooks de estado firmados con HMAC-SHA256 te avisan en segundos de cada transición: enviado, entregado o fallido. El importe del envío fallido de forma definitiva se reembolsa automáticamente a tu saldo. Y las reglas de enrutado guardan, por canal, tu proveedor principal y —si tienes un segundo contratado— el de respaldo al que la plataforma reintenta.

Lo que haces tú. Cambiar de canal es decisión de tu backend: recibes message.failed y lanzas una segunda llamada a /verify/start con "channel": "whatsapp" o "telegram". Son cinco líneas de código, pero conviene decirlo claro: la plataforma no salta de SMS a WhatsApp por su cuenta.

Función prevista, todavía no disponible: el salto de canal automático (SMS → WhatsApp → Telegram) configurable por cuenta está en diseño y aún no existe. No lo cuentes en tu planificación hasta que lo anunciemos.

Códigos de un solo uso para control de accesos: la pareja perfecta de QRACCESO

Nuestra plataforma hermana QRACCESO gestiona el control de accesos por QR de eventos, oficinas y recintos. Junto a SMSverifica, el acceso físico gana un segundo factor.

Abrir puerta con código por SMS

Envía un código de acceso de un solo uso por SMS o WhatsApp para abrir una puerta, un aparcamiento o una zona restringida: el visitante lo recibe en su móvil, lo teclea o lo muestra y el acceso queda registrado con hora y persona. Sin llaves, sin tarjetas que se pierden.

Entradas y acreditaciones verificadas

Combina la entrada QR del evento con un OTP de verificación en el registro del asistente: número de móvil verificado desde el alta, menos entradas duplicadas y aforo bajo control. La entrada viaja por SMS, WhatsApp o Telegram; el recordatorio del evento, por el canal que prefiera el asistente.

Notificaciones de visitas en recepción

Cuando llega una visita, el anfitrión recibe el aviso al instante — notificación de visita por Telegram a 0,010 € o por SMS/WhatsApp — y puede autorizar el acceso respondiendo o generando un código temporal. Recepción sin llamadas ni esperas.

Descubre más integraciones de mensajería con control de accesos en los casos de uso de QRACCESO.

Verificación de identidad en el fichaje remoto: OTP para RRHH y ACCESSTIME

El registro de jornada es obligatorio en España desde 2019 y camina hacia el fichaje digital. Con ACCESSTIME, nuestra plataforma de control horario, la verificación por SMS cierra la última duda: ¿quién ficha de verdad?

En el registro de jornada con teletrabajo o con equipos en movilidad, el fichaje remoto necesita una garantía de identidad. Un OTP por SMS o WhatsApp en el momento de fichar vincula el fichaje al móvil personal del empleado: código de un solo uso, validación en segundos y trazabilidad completa para la inspección.

La misma mensajería resuelve el día a día de RRHH: avisos de fichaje al empleado que ha olvidado fichar, recordatorios de inicio y fin de jornada, comunicaciones de turnos y vacaciones, o alertas al responsable cuando falta un registro. Por Telegram, todos esos avisos internos cuestan 0,010 € por mensaje; por SMS, 0,039 € con entrega prácticamente inmediata.

Mensajería para control horario y RRHH →
  • Verificación de identidad en el fichaje remoto con código de un solo uso
  • Avisos de fichaje automáticos a empleados por SMS, WhatsApp o Telegram
  • Recordatorios de RRHH: turnos, vacaciones, documentación pendiente
  • Alertas al responsable si falta un registro de jornada
  • Trazabilidad completa: estados de entrega con webhooks firmados
  • Cumplimiento RGPD con servidores en la UE

Buenas prácticas para implementar OTP y 2FA por SMS

Las reglas que aplica nuestra propia API de verificación, por si prefieres montar el circuito por tu cuenta.

  • Códigos de 6 dígitos generados con aleatoriedad criptográfica, nunca secuenciales.
  • Caducidad corta: 5 minutos es el equilibrio entre seguridad y usabilidad.
  • Limita los intentos de validación (3-5) y los reenvíos por hora para frenar ataques de fuerza bruta y el SMS pumping.
  • Un solo uso real: invalida el código en cuanto se valida o caduca.
  • Usa Idempotency-Key en cada envío: un reintento de red nunca duplicará el SMS ni el cobro.
  • Escucha los webhooks message.failed para lanzar tú el reintento por WhatsApp o Telegram al momento.
  • Indica remitente y contexto en el texto («Tu código para MIAPP…») y pide no compartirlo.
  • Estrena el modo sandbox —se abre solo al verificar tu correo— y prueba los estados: entregado, fallido, leído, antes de salir a producción.
Disponible en la API v1

API /verify: la plataforma genera, envía y comprueba el código

Dos llamadas y ni una tabla de códigos en tu base de datos: POST /api/v1/verify/start dispara el OTP por el canal que indiques y POST /api/v1/verify/check lo valida. La caducidad y el límite de intentos los lleva la plataforma.

  • Código de 4 a 8 dígitos generado con aleatoriedad criptográfica (6 por defecto)
  • Caducidad configurable entre 60 y 900 segundos; 300 si no dices nada
  • 5 intentos por código y, contra el SMS pumping, límite por destino: 1 start cada 30 segundos y máximo 3 cada 10 minutos
  • El código nunca aparece en las respuestas de la API ni en el historial: solo en el mensaje al usuario
  • Idempotency-Key, misma autenticación y mismos webhooks firmados que el resto de la API

Lo que esta API no hace todavía: no cambia de canal sola. Cada verify/start envía por el canal que le pidas; si quieres reintentar por otro, lo pides tú. El salto automático entre canales es una función prevista, sin fecha.

Elegir entre /verify y /messages

  • /verify si quieres delegar el código, su caducidad y sus intentos.
  • /messages si ya tienes tu propia lógica de OTP y solo necesitas el envío, con el texto y el remitente que tú decidas.

Las dos cobran lo mismo: el precio del canal y del destino, sin suplemento por usar /verify. Todos los detalles, parámetros y códigos de error están en la documentación de la API REST.

Preguntas frecuentes sobre verificación por SMS y códigos OTP

¿Qué es un código OTP por SMS?

Un OTP (one-time password) es un código de verificación de un solo uso, normalmente de 4 a 8 dígitos, que se envía al móvil del usuario por SMS para confirmar su identidad en un alta, un inicio de sesión o una operación sensible. Caduca en pocos minutos y solo sirve una vez.

¿Es seguro el 2FA por SMS?

El 2FA por SMS añade una barrera real a la contraseña sola y destaca por su cobertura universal: funciona en cualquier móvil sin instalar nada. Para operaciones críticas puedes combinarlo con límites de intentos, caducidad corta del código y verificación por un segundo canal como WhatsApp o Telegram.

¿Cuánto cuesta enviar un código de verificación?

Con SMSverifica, un OTP por SMS a España cuesta 0,039 €, un código de verificación por WhatsApp (categoría authentication) 0,005 € —las tarifas de conversación de Meta van aparte— y por Telegram 0,010 €. Prepago en euros, sin cuotas y con saldo que no caduca.

¿Puedo enviar el código de verificación por WhatsApp?

Sí. WhatsApp Business API tiene una categoría de plantilla específica para códigos de verificación (authentication), con botón de autocompletar en el móvil. Con nuestra API envías el mismo OTP por SMS o por WhatsApp cambiando un solo campo del JSON.

¿Qué pasa si el SMS con el código no llega?

Los webhooks de estado te avisan en segundos si el SMS falla y tu backend puede lanzar una segunda llamada a /verify/start con otro canal. Dicho sin adornos: el cambio de canal lo decides y lo disparas tú, la plataforma no salta sola. Lo que sí puedes configurar es un proveedor de respaldo dentro del mismo canal, si tienes un segundo contratado: la plataforma reintenta por él.

¿La API /verify está disponible?

Sí. POST /api/v1/verify/start genera el código, lo envía por el canal que indiques y devuelve la verificación pendiente; POST /api/v1/verify/check lo comprueba (un código erróneo es un 200 con status: invalid, no un 4xx). Caducidad configurable de 60 a 900 segundos, longitud de 4 a 8 dígitos y 5 intentos por código. El salto automático entre canales sigue siendo una función prevista, sin fecha.

Monta hoy tu verificación OTP por SMS, WhatsApp o Telegram

Crear la cuenta es gratis y sin tarjeta. Al verificar tu correo la cuenta abre sola en modo sandbox para integrar sin gastar, mientras revisamos cada alta a mano antes de abrir el envío real y los pagos. Saldo sin caducidad y precios publicados, sin IVA.