GUÍA PARA DESARROLLADORES

Cómo enviar SMS con cURL y la API de Grupo Tecnophone

Pruebe el envío de SMS desde la terminal con una sola petición HTTPS: autenticación por token, IP autorizada y respuesta JSON con el identificador de cada mensaje.

Antes de empezar

  • Una conexión API creada en el panel web (app.grupotecnophone.com), con su Bearer Token de sandbox o de producción.
  • La IP pública del equipo o servidor desde el que ejecuta cURL, registrada como autorizada para ese token.
  • Un User-Agent que identifique a su aplicación, por ejemplo MiEmpresa/1.0.
  • cURL, que ya viene instalado en Linux, macOS y Windows 10 o superior. Para leer la respuesta en los scripts usamos jq, que es opcional.

Guarde el token en una variable de entorno (en estos ejemplos, GTP_SMS_TOKEN) para que no quede escrito en sus scripts. En Windows use curl.exe y guarde el JSON en un archivo (-d @sms.json) para evitar problemas con las comillas.

Enviar un SMS con cURL

Este comando envía un SMS y, al final, muestra el código HTTP de la respuesta:

curl -sS https://api.grupotecnophone.com/prod/v1/sms/send \
  -H "Authorization: Bearer $GTP_SMS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "User-Agent: MiEmpresa/1.0" \
  --max-time 30 \
  -w "\nHTTP %{http_code}\n" \
  -d '{"to":"+525512345678","body":"Su codigo de verificacion es 482913. Vence en 5 minutos."}'

Es la forma más rápida de comprobar que el token, la IP autorizada y el formato del mensaje están bien antes de integrar la API en su aplicación.

Respuesta de la API

Si el mensaje fue aceptado, la API responde con HTTP 200 y un JSON como este:

{
  "sid": "sms_20261012143201_39bdafbd",
  "status": "success",
  "to": "+525512345678",
  "body": "Su codigo de verificacion es 482913. Vence en 5 minutos.",
  "encoding": "GSM7",
  "num_chars": 56,
  "num_segments": 1,
  "error": null
}

Guarde el sid: es el identificador con el que podrá conciliar el reporte de entrega del mensaje. El campo num_segments indica cuántos segmentos se cobrarán; vea cómo se calculan los segmentos.

Enviar SMS a varios destinatarios desde la terminal

Para una lista corta puede recorrer un archivo de números con un script de Bash. El script muestra el sid de cada mensaje o el código de error:

#!/usr/bin/env bash
# destinatarios.txt: un número por línea, en formato +52...
while IFS= read -r numero; do
  respuesta=$(curl -sS https://api.grupotecnophone.com/prod/v1/sms/send \
    -H "Authorization: Bearer $GTP_SMS_TOKEN" \
    -H "Content-Type: application/json" \
    -H "User-Agent: MiEmpresa/1.0" \
    --max-time 30 \
    -d "{\"to\":\"$numero\",\"body\":\"Su pedido fue enviado. Gracias por su compra.\"}")
  echo "$numero $(echo "$respuesta" | jq -r '.sid // .error.code')"
  sleep 0.2
done < destinatarios.txt

Para volúmenes altos o envíos recurrentes, integre la API desde su aplicación con una cola de envíos. Sin programar, también puede enviar SMS masivos desde Excel o CSV.

Probar en sandbox con cURL

Cambie el endpoint por el de sandbox y use el token de sandbox. Ese entorno valida token, IP, payload y cifrado con la misma lógica que producción, pero no envía SMS reales:

curl -sS https://api.grupotecnophone.com/test/v1/sms/send \
  -H "Authorization: Bearer $GTP_SMS_TOKEN_SANDBOX" \
  -H "Content-Type: application/json" \
  -H "User-Agent: MiEmpresa/1.0" \
  -d '{"to":"+525512345678","body":"Mensaje de prueba"}'

Errores frecuentes

HTTPCódigoQué significa
400ENCRYPTION_REQUIREDLa conexión exige que to y body viajen cifrados con RSA-OAEP
400ENCRYPTION_NOT_ALLOWEDLa conexión opera en texto plano y se recibió contenido cifrado
400INPUT_PHONE_BLACKLISTEDEl número de destino está en lista negra
400INSUFFICIENT_BALANCESaldo insuficiente para el envío
401—Token ausente o inválido
403—La IP de origen no está autorizada para el token
500—Error interno no esperado

En los errores 400 la respuesta incluye un objeto error con code, code_num y message.

Del comando a su aplicación

El comando de cURL tiene las mismas partes que cualquier integración: el endpoint, el encabezado Authorization con el Bearer Token, el User-Agent y un JSON con to y body. Cuando la prueba funcione, lleve esa misma petición al lenguaje de su backend con nuestras guías para PHP, Laravel, Python, Node.js, Java y C# (.NET).

Buenas prácticas

  • Defina un timeout y registre cada respuesta con su sid.
  • Ante un error de red sin respuesta, no reenvíe a ciegas: verifique primero para no duplicar el mensaje al usuario.
  • Reintente solo errores 500, con espera progresiva y un número máximo de intentos.
  • Encole los envíos masivos en lugar de enviarlos en el ciclo de una petición web.
  • Si el contenido es sensible, active el cifrado de la conexión; la documentación de la API describe el formato de cifrado RSA-OAEP.

Vea también la API SMS México, la conexión SMPP y las guías para PHP, Laravel, Python, Node.js, Java y C# (.NET). Si necesita credenciales de prueba, contáctenos.

Preguntas frecuentes: Enviar SMS con cURL

Scroll al inicio