API SMS

Esta API permite enviar mensajes SMS de forma masiva y unitaria.

Que hace

La API de SMS permite enviar SMS de forma:

  • Unitaria (un número por request).
  • Masiva (muchos números en un request) usando:
    • JSON (hasta 200.000 registros).
    • Parquet (hasta 500.000 registros y recomendado por performance).

Autenticación y headers requeridos

Todas las solicitudes deben incluir:

  • x-auth: api key entregada por Saem Colombia (si falta, rechaza la petición).
  • x-prefix: código del país como header (ej: 57).

Regla: sin estos headers, la API no procesa.


Modelo de datos (parámetros de entrada)

La guía lista estos campos (aplican según endpoint/formato):

  • from: identificador del remitente autorizado.
  • flash: obligatorio en todos los servicios; valores yes o no.
  • numbers: lista de mensajes a enviar; cada item incluye:
    • to: número destino.
    • content: texto del mensaje (incluye el shortname obligatorio, ver errores).
  • msg_id (opcional): id único del mensaje; si no lo envías, el sistema lo genera.

Nota importante: la guía menciona “content incluyendo el shortname” y existe error SHORTNAME_NOT_FOUND si no está.


Edpoint: Envío unitario

URL: https://apisms.saem.tel/v3/send

Metodo: GET

Headers: Headers: x-auth, x-prefix

Cómo funciona:

  • Envías los parámetros como query params (to, content, from, flash).
  • El sistema procesa un SMS a un destinatario.

Cuándo usar

  • Notificaciones puntuales (OTP, confirmaciones individuales, etc.).

Endpoint: Envío masivo en JSON

URL: https://apisms.saem.tel/v3/send

Método: POST

Headers: x-auth, x-prefix

Body: JSON

Límite:

  • Máximo 200.000 registros por envío en JSON.
  • Si excedes: error SMS_008.

Cómo funciona

  • Mandas un objeto con metadata (ej. from, flash) y la lista numbers.
  • Cada elemento de numbers representa un SMS a enviar.

Recomendación práctica

  • Si necesitas trazabilidad: envía msg_id tú (UUID) para correlacionar.
  • Si no lo envías, la API lo genera.

Endpoint: Envío masivo en Parquet

URL: https://apisms.saem.tel/v3/send/parquet

Método: POST

Headers: x-auth, x-prefix

Body: form-data (archivo .parquet + parámetros adicionales)

Límite

  • Máximo 500.000 registros.
  • Si excedes: error SMS_008.

Cómo funciona

  • En vez de pasar numbers en JSON, subes un archivo Parquet con los registros.
  • La guía recomienda Parquet por:
    • carga más rápida,
    • menor tamaño,
    • mejor rendimiento general.

Parámetros de salida

Descripciones de campos en la respuesta (especialmente para campañas masivas):

  • request_id: id único de la campaña masiva.
  • total_credits: créditos consumidos.
  • records: total de mensajes procesados.
  • total_pdu_count: total de PDUs generados entre todos los mensajes (útil para entender segmentación de SMS largos).

Manejo de errores

Errores de Autenticación

CódigoHTTP StatusDescripción
AUTH.TOKEN_MISSING400No se envió el header x-auth.
API_KEY_NOT_FOUND400La API Key enviada no existe o es inválida.
USER_NOT_FOUND404No se encontró el usuario asociado a la API Key.
USER_INACTIVE401El usuario está inactivo.
COUNTRY_001400El prefijo (x-prefix) no tiene un país asociado o no está configurado.

Errores de Envío / Validación

CódigoHTTP StatusDescripción
SMS_002402Créditos insuficientes (cuentas prepago).
SMS_008400Se excedió el límite máximo de registros permitidos.
SMS_009400Archivo Parquet inválido o mal formado.
DUPLICATED_MSG_ID400El msg_id ya fue utilizado en una campaña previa.
FORBIDDEN_TERMS400El contenido contiene términos no permitidos.
SHORTNAME_INACTIVE400El shortname está inactivo.
SHORTNAME_NOT_FOUND400No se encontró el shortname en el contenido del mensaje.
CONTENT_TOO_LONG400El contenido del mensaje excede la longitud permitida.

PARQUET

Formato de archivo columnar recomendado para cargas masivas de números y parámetros de campaña.

PDU

Protocol Data Unit. Unidad de datos que representa los fragmentos en los que se divide un SMS para su envío.

UUID

Identificador único universal utilizado para msg_id y request_id en la API.

SUBSERVICE

Tipo de campaña: standard (audio pregrabado) o custom (texto a voz).

AUDIOID

Identificador del recurso multimedia asociado a un audio pregrabado en modo STANDARD.

VOICE

Voz utilizada en campañas CUSTOM para convertir el texto en audio. Se pueden usar voces como “Juan” o “Maria”.

MAILBOX

Indica si se deja mensaje en el buzón de voz cuando el destinatario no contesta.