Envía y valida códigos de un solo uso en cualquier canal desde un mismo endpoint. Una integración, entrega confiable y cambio de canal automático cuando un mensaje no llega.
Cada envío sale por SMS por defecto, o por WhatsApp si mandas whatsapp: true. Si el código no llega, el usuario lo rescata por voz. Uno de cada cuatro OTP llega tarde: el rescate es lo que recupera esa conversión.
Entrega prioritaria en menos de 5 segundos con enrutamiento directo a operadoras. Llega a cualquier teléfono, sin app de por medio.
Envía el código por WhatsApp con tu nombre de negocio y mayor tasa de apertura. Si la línea no está disponible, cae solo a SMS de forma automática.
Una llamada que dicta el código en voz. El último recurso para quien no recibe mensajes de texto o los tiene bloqueados.
Pide el código con /otp/send, rescata por voz con /otp/resend si no llega, y confírmalo con /otp/verify. Nosotros manejamos el estado, la expiración y el hasheo del código.
# SMS por defecto curl https://api.verifymx.app/otp/send \ -H "apikey: sk_live_tu_llave" \ -H "Content-Type: application/json" \ -d '{ "phone_number": "5512345678", "country_code": "52", "company": "Acme", "code_length": 6 }' # Por WhatsApp: agrega "whatsapp": true (cae a SMS si la línea no está activa) # → { "success": true, "code": "verification_01", "request_id": "550e..." }
import axios from "axios"; const api = axios.create({ baseURL: "https://api.verifymx.app", headers: { apikey: "sk_live_tu_llave" } }); // SMS por defecto; whatsapp: true para WhatsApp await api.post("/otp/send", { phone_number: "5512345678", country_code: "52", company: "Acme", code_length: 6, whatsapp: true });
import requests api = "https://api.verifymx.app" headers = { "apikey": "sk_live_tu_llave" } # SMS por defecto; whatsapp=True para WhatsApp requests.post(f"{api}/otp/send", headers=headers, json={ "phone_number": "5512345678", "country_code": "52", "company": "Acme", "code_length": 6, })
# Espera ~45 s antes de reintentar curl https://api.verifymx.app/otp/resend \ -H "apikey: sk_live_tu_llave" \ -d '{ "phone_number": "5512345678", "country_code": "52", "voice": true }' # Usa "whatsapp": true para rescatar por WhatsApp en vez de voz
// Espera ~45 s antes de reintentar await api.post("/otp/resend", { phone_number: "5512345678", country_code: "52", voice: true // o whatsapp: true });
# Espera ~45 s antes de reintentar requests.post(f"{api}/otp/resend", headers=headers, json={ "phone_number": "5512345678", "country_code": "52", "voice": True, # o "whatsapp": True })
curl https://api.verifymx.app/otp/verify \ -H "apikey: sk_live_tu_llave" \ -d '{ "phone_number": "5512345678", "verification_code": "849201" }' # → { "success": true, "code": "validation_01" }
const { data } = await api.post("/otp/verify", { phone_number: "5512345678", verification_code: "849201" }); if (data.code === "validation_01") { // usuario verificado }
r = requests.post(f"{api}/otp/verify", headers=headers, json={ "phone_number": "5512345678", "verification_code": "849201", }) if r.json()["code"] == "validation_01": pass # usuario verificado
https://api.verifymx.app
· HTTPS obligatorio · autenticación con header apikey
Códigos de un solo uso, expiración configurable y límites de reintento integrados de fábrica.
WhatsApp, SMS y correo detrás del mismo endpoint. Cambia de canal sin tocar tu código.
Dos llamadas para todo el flujo. Documentación clara y SDKs para arrancar el mismo día.
Enrutamiento directo y respaldo entre canales para que el código llegue cuando importa.
Solicita tus credenciales y envía tu primer código de prueba en minutos. Sin contratos de por medio para empezar.