Cuándo tiene sentido usar la API y no el panel
El panel sirve para campañas: una lista, un mensaje, un botón. La API sirve para lo que ocurre solo: el código de verificación cuando alguien inicia sesión, el aviso cuando el pedido sale, el recordatorio 24 horas antes de la cita.
La diferencia práctica es el momento. Un envío de campaña puede esperar diez minutos; un código de verificación no puede esperar diez segundos. Todo lo que dependa del momento exacto va por API.
Las cuatro cosas que necesitas antes de escribir código
Con esto se hace el primer envío. Todo lo demás son detalles que se resuelven después.
Credencial de acceso
Una llave que identifica a tu sistema. Vive en variables de entorno del servidor, nunca en el código ni en el navegador: una llave expuesta permite enviar a tu costa.
Número en formato internacional
El destinatario en formato E.164, con código de país: +52 seguido de los diez dígitos. Normaliza al guardar, no al enviar.
El mensaje y su codificación
160 caracteres en alfabeto GSM. Un acento fuera de ese set convierte el mensaje a Unicode y el límite baja a 70, cobrándose como varios segmentos.
Una URL para el acuse
El endpoint de tu sistema donde recibirás la confirmación de entrega. Sin esto envías a ciegas.
El acuse de entrega llega después, y por eso es webhook
Cuando tu sistema hace la petición de envío, la respuesta inmediata sólo confirma que el mensaje fue aceptado para envío — no que llegó al teléfono. La confirmación real llega segundos o minutos más tarde, desde la red del operador.
Por eso el acuse se entrega por webhook: nosotros llamamos a tu URL cuando el operador confirma. Tu endpoint debe responder rápido, aceptar reintentos y ser idempotente — el mismo acuse puede llegarte dos veces y no debe contarse dos veces.
Un envío en PHP, que es lo que más se pregunta
La forma es la misma en cualquier lenguaje: una petición HTTP con tu credencial en la cabecera y un cuerpo con destinatario y texto. En PHP se hace con cURL en unas quince líneas, y lo importante no es el código sino tres decisiones alrededor.
Primero, la credencial sale de una variable de entorno. Segundo, la llamada tiene tiempo límite y captura de error — si el proveedor tarda, tu aplicación no se cuelga esperando. Tercero, guardas el identificador que devuelve el envío, porque es lo que te permitirá conciliar el acuse cuando llegue por webhook.
Cuatro decisiones antes de encender el interruptor
Las que separan una integración que aguanta de una que se rompe el primer día ocupado.
Reintentos con espera creciente
Si el envío falla por red, reintenta con pausas cada vez mayores. Un reintento inmediato en bucle multiplica el problema y el costo.
Idempotencia
Un identificador propio por envío evita que un reintento mande el mismo SMS dos veces. El usuario que recibe dos códigos distintos ya no confía en ninguno.
Tope de envíos
Un límite por usuario y por hora. Es la protección contra un bucle mal escrito y contra quien abuse de tu formulario.
Bitácora de lo enviado
Guarda a quién, cuándo, qué texto y qué acuse. El día que alguien diga que no le llegó, esa bitácora es la respuesta.
Dudas sobre la API
¿Cómo envío un SMS desde PHP en México?
Con una petición HTTP a la API del proveedor usando cURL: la credencial va en la cabecera de autorización y el cuerpo lleva el número en formato E.164 y el texto. Guarda el identificador que devuelve el envío para conciliarlo después con el acuse de entrega.
¿La API me confirma que el SMS llegó?
La respuesta inmediata sólo confirma que el mensaje fue aceptado para envío. La confirmación de entrega real llega después por webhook, cuando el operador la reporta. Tu endpoint debe ser idempotente porque un mismo acuse puede llegar más de una vez.
¿En qué formato debo enviar el número de teléfono?
En formato internacional E.164: el signo más, el código de país y el número. Para México, +52 seguido de los diez dígitos. Conviene normalizar al guardar el contacto, no en el momento del envío.
¿Cuántos caracteres acepta la API por mensaje?
160 en alfabeto GSM estándar. Si el texto incluye caracteres fuera de ese set, el mensaje pasa a codificación Unicode y el límite baja a 70 caracteres por segmento, cobrándose cada segmento.
¿Dónde guardo la credencial de la API?
En variables de entorno del servidor. Nunca en el repositorio ni en código que llegue al navegador: una credencial expuesta permite a un tercero enviar mensajes con cargo a tu cuenta.
¿Vas a integrarlo?
Escríbenos y te damos credenciales de prueba y la documentación completa. Si necesitas ayuda con la integración, también.
Cotizar por WhatsApp