Enviar SMS
¿Envías códigos de verificación, login o 2FA? No uses este endpoint. /sms/send es para marketing y notificaciones: sin prioridad de red ni manejo de códigos. En pruebas parecerá funcionar, pero en producción tus códigos llegarán tarde o no llegarán. Para verificación usa POST /v2/otp.
Envía un mensaje SMS a uno o múltiples destinatarios. El mensaje se envía sin acentos para garantizar compatibilidad con todas las operadoras.
/sms/sendNo uses este endpoint para códigos de verificación, login o 2FA. Aunque el mensaje pueda enviarse, pierdes la generación, expiración, validación y control de intentos disponibles en POST /v2/otp. Más contexto en Verificación OTP.
Para varios destinatarios envía los números separados por coma en una sola petición (máximo 500, sin repetidos), en lugar de una petición por número: reduce overhead y evita saturar la API. Antes de integrar a producción, prueba con sandbox: 1 (ejecuta todas las validaciones y genera referencias, sin entregar el mensaje ni consumir saldo; límite de 1000 pruebas por día). Consulta también las Buenas prácticas de envío.
Detalles que conviene conocer:
- Los acentos se reemplazan automáticamente (
á→a); el mensaje siempre sale en alfabeto GSM-7 con límite de 160 caracteres. channel: 2envía por RCS: requieresendercon un remitente RCS vinculado a tu cuenta y no es compatible conflash.- Con
shorten_url: 1el mensaje debe contener exactamente una URL. - Los envíos programados (
date) usan la zona horaria America/Mexico_City y no están disponibles en sandbox.
Cuerpo de la petición
application/json
country_code). Con find_country_code en 1, cada número debe tener 12 dígitos con el código de país incluido.á por a y ñ por n), por lo que el mensaje siempre se envía en alfabeto GSM-7.channel es 2.52 para México). No requerido si se usa find_country_code.Origen del código de país:
0: se toma decountry_code1: se extrae de cada número (los números deben tener 12 dígitos con el país incluido)
YYYY-MM-DD HH:MM:SS, zona horaria America/Mexico_City). Debe ser futura. No disponible en modo sandbox.1 = modo de prueba: ejecuta todas las validaciones y genera referencias, pero no entrega el mensaje ni consume créditos. Límite de 1000 envíos de prueba por día. No admite envíos programados.Canal de entrega:
1: SMS2: RCS
RCS requiere el parámetro sender con un remitente RCS vinculado a la cuenta y no es compatible con flash.
1 = SMS flash (se muestra directamente en pantalla sin guardarse). La compatibilidad depende del dispositivo y operador. No compatible con RCS (channel: 2).1 = acortar la URL del mensaje automáticamente. El mensaje debe contener exactamente una URL: sin URL o con más de una, la petición se rechaza.▸ Ver atributos hijos▾ Ocultar atributos hijos
Respuesta
▸ Ver atributos del elemento▾ Ocultar atributos del elemento
Además de los errores globales de autenticación (auth_*, ver Errores y límites), este endpoint puede responder:
Códigos de error
| Código | Cuándo ocurre | Qué hacer |
|---|---|---|
sms_01 | El mensaje llegó vacío. | Envía message con contenido. |
sms_02 | Mensaje de más de 160 caracteres. | Acorta el texto o usa shorten_url si el exceso es por una URL. |
sms_03 / sms_04 | Números ausentes o con formato incorrecto. | Envía 10 dígitos por número, separados por coma, sin código de país. |
sms_05 / sms_18 | Código de país ausente o no soportado. | Envía country_code (52 para México). |
sms_06 | Nombre de campaña de más de 100 caracteres. | Acorta name. |
sms_07 | Créditos insuficientes. | Consulta tu saldo con /credits/consult y recarga. |
sms_15 | Más de 500 destinatarios. | Divide el envío en lotes de hasta 500. |
sms_16 | Número repetido en la lista. | Deduplica los números antes de enviar. |
sms_17 | Límite diario de sandbox (1000) excedido. | Espera al día siguiente o prueba con menos envíos. |
sms_20 / sms_21 | Fecha programada en el pasado o con formato inválido. | Usa YYYY-MM-DD HH:MM:SS futuro (hora de Ciudad de México). |
sms_24 | Lada no soportada. | Verifica el número; contacta a soporte si la lada es válida. |
sms_29 / sms_31 | shorten_url activo sin URL en el mensaje, o con más de una. | Incluye exactamente una URL. |
sms_36 | channel inválido. | Usa 1 (SMS) o 2 (RCS). |
sms_37 / sms_38 | RCS sin remitente, o con remitente no vinculado. | Envía sender con un remitente RCS registrado en tu cuenta. |
sms_39 / sms_40 | flash inválido o combinado con RCS. | Usa 0 o 1; flash no está disponible en RCS. |
El éxito responde sms_11 (o sms_19 si el envío fue a un solo número y es una línea fija: es informativo, el mensaje sí se envió).