OTP por SMS que sí llega, en México.
El código entra en menos de 5 segundos, vía rutas directas a los 4 carriers mexicanos. Si no llega, rescatas la conversión por WhatsApp o Voz.
8 créditos sin costo, sin tarjeta ni contrato.
SMS Masivos
+52 55 9162-4427
Tu código de acceso es 428291. No lo compartas. Mi App.
3 endpoints. 15 minutos. Listo.
Sin webhooks ni configuraciones extra: la lógica de generación y validación ya viene integrada.
# Paso 1: Solicitar código
POST /otp/send
phone, country_code, company_name, template
→ Entregado
# Paso 2: Usuario ingresa el código en tu app
Tu frontend captura el input...
→ Código capturado
# Paso 3: Validar código
POST /otp/verify
→ Acceso autorizado
# Si tu usuario da clic en "No recibí"
POST /otp/resend { phone, whatsapp: true }
→ Reintentado
# 2do clic, fallback final
POST /otp/resend { phone, voice: true }
→ Voz
// Paso 1: Solicitar código
const res = await fetch('/otp/send', {
method: 'POST',
body: JSON.stringify({
phone: '+52 55 1234 5678',
country_code: 'MX',
company_name: 'Mi App',
template: 'default',
})
});
// Paso 3: Validar código ingresado
await fetch('/otp/verify', {
method: 'POST',
body: JSON.stringify({ phone: '...', code: '428291' })
});
// Si usuario da clic en "No recibí": fallback WhatsApp
await fetch('/otp/resend', {
method: 'POST',
body: JSON.stringify({ phone: '...', whatsapp: true })
});
// 2do clic: fallback final con voz
fetch('/otp/resend', { method: 'POST', body: JSON.stringify({ phone: '...', voice: true }) });
import requests
# Paso 1: Solicitar código
requests.post('/otp/send', json={
'phone': '+52 55 1234 5678',
'country_code': 'MX',
'company_name': 'Mi App',
'template': 'default',
})
# Paso 3: Validar código ingresado
requests.post('/otp/verify',
json={'phone': '...', 'code': '428291'})
# Si usuario da clic en "No recibí": fallback WhatsApp
requests.post('/otp/resend',
json={'phone': '...', 'whatsapp': True})
# 2do clic: fallback final con voz
requests.post('/otp/resend', json={'phone': '...', 'voice': True})
// Paso 1: Solicitar código
$ch = curl_init('/otp/send');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'phone' => '+52 55 1234 5678',
'country_code' => 'MX',
'company_name' => 'Mi App',
'template' => 'default',
]));
curl_exec($ch);
// Paso 3: Validar código
$r = curl_init('/otp/verify');
curl_setopt($r, CURLOPT_POSTFIELDS,
json_encode(['phone' => '...', 'code' => '428291']));
curl_exec($r);
// Si usuario da clic en "No recibí": fallback WhatsApp
$re = curl_init('/otp/resend');
curl_setopt($re, CURLOPT_POSTFIELDS,
json_encode(['phone' => '...', 'whatsapp' => true]));
curl_exec($re);
// 2do clic: fallback final con voz: ['phone' => '...', 'voice' => true]
// Paso 1: Envía el código
resp, _ := http.Post("/otp/send", "application/json",
strings.NewReader(`{"phone":"+52 55 1234 5678","country_code":"MX","company_name":"Mi App","template":"default"}`))
→ Entregado
// Paso 2: Usuario ingresa el código en tu app
→ Código capturado
// Paso 3: Validar código
http.Post("/otp/verify", "application/json",
strings.NewReader(`{"phone":"...","code":"428291"}`))
→ Acceso autorizado
// Si tu usuario da clic en "No recibí"
http.Post("/otp/resend", "application/json",
strings.NewReader(`{"phone":"...","whatsapp":true}`))
→ Reintentado
// 2do clic, fallback final
http.Post("/otp/resend", "application/json", strings.NewReader(`{"phone":"...","voice":true}`))
→ Voz
// Paso 1: Solicitar código
HttpClient client = HttpClient.newHttpClient();
HttpRequest req = HttpRequest.newBuilder(URI.create("/otp/send"))
.POST(BodyPublishers.ofString("{\"phone\":\"+52 55 1234 5678\",\"country_code\":\"MX\",\"company_name\":\"Mi App\",\"template\":\"default\"}")).build();
client.send(req, BodyHandlers.ofString());
→ Entregado
// Paso 2: Usuario ingresa el código en tu app
→ Código capturado
// Paso 3: Validar código
client.send(HttpRequest.newBuilder(URI.create("/otp/verify"))
.POST(BodyPublishers.ofString("{\"phone\":\"...\",\"code\":\"428291\"}")).build(), BodyHandlers.ofString());
→ Acceso autorizado
// Si tu usuario da clic en "No recibí"
client.send(HttpRequest.newBuilder(URI.create("/otp/resend"))
.POST(BodyPublishers.ofString("{\"phone\":\"...\",\"whatsapp\":true}")).build(), BodyHandlers.ofString());
→ Reintentado
// 2do clic, fallback final
client.send(HttpRequest.newBuilder(URI.create("/otp/resend"))
.POST(BodyPublishers.ofString("{\"phone\":\"...\",\"voice\":true}")).build(), BodyHandlers.ofString());
→ Voz
// Paso 1: Solicitar código
var res = await client.PostAsJsonAsync("/otp/send", new {
phone = "+52 55 1234 5678", country_code = "MX",
company_name = "Mi App", template = "default"
});
→ Entregado
// Paso 2: Usuario ingresa el código en tu app
→ Código capturado
// Paso 3: Validar código
await client.PostAsJsonAsync("/otp/verify", new { phone = "...", code = "428291" });
→ Acceso autorizado
// Si tu usuario da clic en "No recibí"
await client.PostAsJsonAsync("/otp/resend", new { phone = "...", whatsapp = true });
→ Reintentado
// Último intento: llamada de voz
await client.PostAsJsonAsync("/otp/resend", new { phone = "...", voice = true });
→ Voz
# Paso 1: Solicitar código
uri = URI('/otp/send')
Net::HTTP.post(uri, {
phone: '+52 55 1234 5678', country_code: 'MX',
company_name: 'Mi App', template: 'default'
}.to_json, 'Content-Type' => 'application/json')
→ Entregado
# Paso 2: Usuario ingresa el código en tu app
→ Código capturado
# Paso 3: Validar código
Net::HTTP.post(URI('/otp/verify'), { phone: '...', code: '428291' }.to_json)
→ Acceso autorizado
# Si tu usuario da clic en "No recibí"
Net::HTTP.post(URI('/otp/resend'), { phone: '...', whatsapp: true }.to_json)
→ Reintentado
# 2do clic, fallback final
Net::HTTP.post(URI('/otp/resend'), { phone: '...', voice: true }.to_json)
→ Voz
Las APIs globales tratan México como Tier-2.
Un agregador internacional introduce latencia, drop rate y falta de visibilidad. Tu tasa de registro lo paga.
Drop rate invisible
Las rutas de agregador reportan "enviado" aunque nunca llegó al carrier: dashboard verde, pantalla en blanco para tu usuario.
Latencia variable
El código llega en 8-20 segundos variables: el usuario asume que está roto y abandona.
Sin factura fiscal MX
Las APIs internacionales no emiten CFDI 4.0. Para cualquier empresa mexicana, eso es gasto de infraestructura que no puedes deducir.
SMS Masivos tiene rutas directas a los 4 carriers.
Sin intermediarios: ruta directa, entrega garantizada en menos de 5 segundos.
Si el SMS no llega, dale al botón. Listo.
Un clic activa el reintento por WhatsApp o Voz desde el mismo endpoint. Sin lógica de timers ni colas que mantener.
1. SMS
Envío inmediato por ruta directa al carrier
2. WhatsApp
Clic en "No recibí" reenvía por WhatsApp
3. Voz
Si tampoco llega, voz robótica dicta el código
Usuario verificado
Registro completado. Tasa de conversión protegida.
Mismo endpoint /otp/resend, cambias un boolean.
Con la confianza de empresas en México
15+
años en el mercado
4
carriers directos en MX
CFDI
4.0 en cada compra
MX
soporte en español
Clientes referencia: Nissan, Soriana, Holcim, HP
Prueba la entrega real antes de pagar.
8 créditos sin costo para probar la entrega real antes de decidir.
Trial sin costo
8
créditos sin costo
Calcula tu costo al instante
Sin renta mensual. Compras créditos que no expiran: entre más volumen, menor el precio unitario. Créditos prepago, sin fecha de vencimiento.
¿Cuántos SMS vas a enviar?
Mínimo 500 SMS. Más de 400,000 cotiza volumen.
Envía vía API REST, CSV o integración con Shopify, WooCommerce y Zapier
¿Por qué SMS Masivos?
Compara lo que importa para una empresa mexicana que verifica usuarios en producción.
| Característica |
SMS Masivos
|
Otro proveedor |
|---|---|---|
| Carriers en México | Telcel, Movistar, AT&T, Altán. Ruta directa. | Rutas de agregador internacional |
| Velocidad de entrega | Menos de 5 segundos | Variable, 10-30+ segundos |
| Rescue automático vía API | SMS a WhatsApp a Voz | Solo SMS |
| CFDI 4.0 | Incluido en cada compra | No disponible |
Carriers en México
SMS Masivos
Directo a Telcel, Movistar, AT&T, Altán
Otro proveedor
Ruta de agregador
Velocidad de entrega
SMS Masivos
Menos de 5 segundos
Otro proveedor
10-30+ segundos
Rescue automático vía API
SMS Masivos
SMS a WhatsApp a Voz
Otro proveedor
Solo SMS
CFDI 4.0
SMS Masivos
Incluido
Otro proveedor
No disponible
Visibilidad real, no solo "enviado / no enviado"
Tasa de verificación por carrier, tiempo de entrega y patrones de abuso.
OTPs enviados
12,483
↑ 3.2% vs ayer
Tasa de entrega
99.1%
rutas directas
Tiempo promedio
3.2 seg
mediana nacional
Rescues activos
247
reintento WA / Voz
Datos ilustrativos. Tu dashboard muestra métricas reales de tu cuenta en tiempo real.
Preguntas frecuentes
¿Cuánto tarda la integración?
Entre 15 y 30 minutos con acceso a los docs: 3 endpoints (send, verify, resend). La lógica de generación y validación ya está integrada.
¿Necesito tarjeta de crédito para el trial?
No. Tu cuenta incluye 8 créditos sin costo para probar la entrega real en México.
¿Emiten CFDI 4.0?
Sí, automático en cada recarga. Aceptamos tarjeta, SPEI, PayPal y OXXO. Sin conversión de divisas.
¿Funciona con todos los carriers mexicanos?
Sí, con ruta directa: Telcel, Movistar, AT&T, Altán y MVNOs. Sin agregador global, sin Tier-2.
¿Qué pasa si el SMS no llega?
Se activa el rescue automático: conexión alterna al carrier, luego WhatsApp y, si hace falta, voz. Mismo endpoint, sin desarrollo adicional.
Activa tu API key sin costo
8 créditos sin costo. Rutas directas y rescue SMS, WhatsApp o Voz.
Obtener API Key Gratis Ver los endpoints