Documentación · integración

API de SMS: enviar mensajes desde tu sistema

Si el SMS es parte de tu operación —códigos, avisos, recordatorios— no debería mandarlo una persona desde un panel. Debería mandarlo tu sistema.

  • Qué necesitas para empezar
  • Acuse de entrega por webhook
  • Ejemplo en PHP
Qué es

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.

Lo mínimo

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 detalle que se olvida

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.

Ejemplo

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.

Producción

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.

Preguntas frecuentes

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

Ecosistema Neruc · CPaaS

Ecosistema de comunicación Neruc (CPaaS)

Neruc conecta todos tus canales en un solo lugar. Suma los demás canales de comunicación a tu operación, todos coordinados en un mismo ecosistema:

WhatsApp