API REST SMS México.
Sin agregadores.
Rutas directas a Telcel, Movistar, AT&T y Altán. CFDI 4.0, docs en español y 8 mensajes prueba sin tarjeta.
8 mensajes prueba. Sin tarjeta.
POST /v2/send
99%
entrega
142ms
response
4
carriers MX
DLR · msg_8f3a2c
1.8s
Delivered · Telcel +52 55 1234 5678
99%
Entrega
en prod
<2s
Latencia
4
Carriers MX
4 endpoints. Toda la API.
REST + JSON. Sin SDK obligatorio.
core
POST
/v2/send
Enviar SMS
JSON to + body. Devuelve message_id.
GET
/v2/status/{id}
Estado
DLR del carrier: queued, delivered, failed.
GET
/v2/balance
Saldo
Créditos + alertas low-balance via webhook.
WH
webhooks
Webhooks
JSON: delivered, failed, reply.
Copia, pega, envía.
5 lenguajes.
curl -X POST https://api.smsmasivos.com.mx/v2/send \
-H "Authorization: Bearer $SMS_KEY" \
-H "Content-Type: application/json" \
-d '{"to":"+5215512345678","body":"Tu código: 8421"}'
import requests, os
r = requests.post(
"https://api.smsmasivos.com.mx/v2/send",
headers={"Authorization": f"Bearer {os.environ['SMS_KEY']}"},
json={"to": "+5215512345678", "body": "Tu código: 8421"},
)
print(r.json()) # {"id":"msg_8f3a2c","status":"queued"}
const r = await fetch("https://api.smsmasivos.com.mx/v2/send", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.SMS_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ to: "+5215512345678", body: "Tu código: 8421" }),
});
console.log(await r.json());
$ch = curl_init("https://api.smsmasivos.com.mx/v2/send");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("SMS_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"to" => "+5215512345678",
"body" => "Tu código: 8421",
]),
]);
echo curl_exec($ch);
body, _ := json.Marshal(map[string]string{
"to": "+5215512345678",
"body": "Tu código: 8421",
})
req, _ := http.NewRequest("POST",
"https://api.smsmasivos.com.mx/v2/send",
bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer "+os.Getenv("SMS_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
Pay-as-you-go MXN. CFDI 4.0.
| Volumen | Precio/SMS | Inversión |
|---|---|---|
| 500+ | $0.90 MXN | $450 |
| 1,000+ | $0.77 MXN | $770 |
| 10,000+ Popular | $0.68 MXN | $6,800 |
| 30,000+ | $0.63 MXN | $18,900 |
| 80,000+ | $0.47 MXN | $37,600 |
| 200,000+ | desde $0.13 MXN | cotizar |
+ IVA. SPEI / Tarjeta / PayPal.
Incluido
- 8 mensajes prueba
- DLRs + webhooks
- Soporte CDMX
- CFDI 4.0
Por qué los devs MX migran.
Lo que cambia es lo que pasa después del POST.
| SMS Masivos | Twilio | Vonage | |
|---|---|---|---|
| Rutas a carriers MX | Directas | Agregadas | Agregadas |
| Facturación | CFDI 4.0 MXN | USD, sin CFDI | USD, sin CFDI |
| Soporte | CDMX humano | Ticket EN | Chatbot EN |
| Latencia MX | <2s prom. | Variable | Variable |
Preguntas de implementación
¿Puedo probar la API sin tarjeta?
Sí. 8 mensajes de prueba + tu API key al crear cuenta. Sin tarjeta, sin demo, sin contrato.
¿Cómo migro desde Twilio o Vonage?
Cambias el endpoint base, generas API key, y los DLRs llegan a tu webhook actual. Payload similar (
to + body). Docs español.
¿Qué pasa si un mensaje no se entrega?
Recibes DLR con el error del carrier. Reintentos automáticos en fallas de red. 99% en prod.
¿Qué rate limit soporta?
Sin hard throttle. Picos 1,000+ TPS. Latencia <2s.
¿Solo cobertura México?
Sí. 4 carriers MX + MVNOs. Internacional: usa otro proveedor. Nuestro enfoque: entrega local 99% + CFDI.
Tu API key en 5 minutos
8 mensajes prueba. Sin tarjeta.
Sin contratos. Sin USD.