Desarrolladores
Construye con las APIs de Inalambria
APIs REST para SMS, RCS, WhatsApp y Email, conexiones SMPP y envíos por archivo. Autenticación con token, payloads JSON y notificaciones de estado en tu propia infraestructura.
Introducción
Cada servicio tiene su propio host:
| Servicio | Host |
|---|---|
| SMS, RCS, token y monitoreo | https://rest.inalambria.com |
https://multichannel.inalambria.com | |
https://emailrest.inalambria.com | |
| SMPP | smsc.inalambria.com · smscssl.inalambria.com |
Requisitos: una cuenta de envío configurada por Inalambria, credenciales de autenticación y conexión HTTPS. Algunos servicios (RCS, notificaciones, monitoreo, archivos) requieren habilitación previa.
Esta página resume la referencia oficial. Para el detalle completo de cada endpoint consulta docs.inalambria.com .
Inicio rápido
- 1
Solicita tu cuenta
Inalambria configura tu cuenta de envío y te entrega usuario y contraseña.
- 2
Obtén el token
POST /tokencon Basic Authentication ygrant_type: password. - 3
Envía tu primer SMS
POST /mtmessagecon el Bearer Token. Guarda elTransactionNumber. - 4
Recibe los estados
Activa el webhook de cuenta o el callback por petición.
# 1. Solicita el token (Basic Authentication con tus credenciales)
TOKEN=$(curl -s -X POST https://rest.inalambria.com/token \
-u "$INALAMBRIA_USER:$INALAMBRIA_PASSWORD" \
-H "Content-Type: application/json" \
-d '{"grant_type": "password"}' | jq -r '.access_token')
# 2. Envía un SMS (Colombia: 12 dígitos, 57 + celular)
curl -X POST https://rest.inalambria.com/mtmessage \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"Type": 1,
"MessageText": "Tu pedido PEDIDO-4471 va en camino",
"Devices": "573001234567",
"CustomMessageId": "PEDIDO-4471"
}'// Node.js 18+
const BASE = 'https://rest.inalambria.com';
async function getToken() {
const basic = Buffer.from(`${process.env.INALAMBRIA_USER}:${process.env.INALAMBRIA_PASSWORD}`).toString('base64');
const res = await fetch(`${BASE}/token`, {
method: 'POST',
headers: { Authorization: `Basic ${basic}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ grant_type: 'password' }),
});
const { access_token } = await res.json(); // vigencia por defecto: 4 horas
return access_token;
}
const token = await getToken();
const res = await fetch(`${BASE}/mtmessage`, {
method: 'POST',
headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
Type: 1,
MessageText: 'Recordatorio: tu cita es mañana a las 8:30 a. m.',
Devices: '573001234567',
}),
});
console.log(await res.json()); // { TransactionNumber, Status: 0 | 1, MessageText }# Python 3 + requests
import os, requests
BASE = "https://rest.inalambria.com"
token = requests.post(
f"{BASE}/token",
auth=(os.environ["INALAMBRIA_USER"], os.environ["INALAMBRIA_PASSWORD"]),
json={"grant_type": "password"},
timeout=10,
).json()["access_token"]
resp = requests.post(
f"{BASE}/mtmessage",
headers={"Authorization": f"Bearer {token}"},
json={
"Type": 1,
"MessageText": "Tu factura de octubre ya está disponible",
"Devices": "573001234567-573007654321", # varios destinos separados por guion
"DateMessage": "2027-01-15 08:00:00", # envío programado (opcional)
},
timeout=10,
)
print(resp.status_code, resp.json())
Autenticación
- Token:
POST /tokencon Basic Authentication (usuario y contraseña en Base64) y el cuerpo{"grant_type": "password"}. La respuesta traeaccess_token,expires_in,refresh_tokenytoken_type. - Por defecto el token dura 4 horas y cada cuenta tiene 1 token activo: pedir uno nuevo expira el anterior. Ambos valores se pueden ampliar bajo solicitud.
- Para renovarlo sin credenciales, envía
{"grant_type": "refresh_token", "refresh_token": "..."}. - Los servicios SMS y RCS usan
Authorization: Bearer <token>(recomendado) o Basic. WhatsApp usa Basic. Email usa la cabecerax-api-key. - Las peticiones desde direcciones IP no autorizadas reciben
403.
SMS: POST /mtmessage
| Campo | Descripción |
|---|---|
Type* | 1 masivo (mismo texto), 2 personalizado (MessagePattern + MessageData), 3 plantilla (TemplateId + MessageData). |
Devices | Destinatarios separados por guion: 573XXXXXXXXX-573YYYYYYYYY. |
MessageText | Texto del mensaje (modo masivo). |
Channel | SMS (por defecto) o RCS. |
DateMessage | Programación: yyyy-MM-dd HH:mm:ss. |
FlashSMS | 1 para SMS flash. |
Url | URL larga que se acorta e inserta en el mensaje. |
HasMore / TransactionNumber | Envíos por partes bajo un mismo número de transacción. |
CustomMessageId / CallbackData | Datos propios que se devuelven en la notificación de estado. |
Respuesta: TransactionNumber (28 dígitos), Status (0 validado, 1 rechazado) y MessageText con el motivo del rechazo.
Formato: números de Colombia de 12 dígitos (57 + celular) y E.164 para el resto del mundo. No hay límite de caracteres, pero se recomienda no superar 500.
RCS
RCS usa el mismo endpoint /mtmessage con "Channel": "RCS". La cuenta y el agente RCS deben estar configurados previamente.
# RCS: mismo endpoint, con "Channel": "RCS" (requiere configuración previa de la cuenta)
curl -X POST https://rest.inalambria.com/mtmessage \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"Type": 1,
"Channel": "RCS",
"MessageText": "Tu pedido PEDIDO-4471 llega hoy entre 2 y 5 p. m.",
"Devices": "573001234567"
}'
Envíos en lotes: POST /mtmessage/massive
Varios mensajes, cada uno con su lista de destinations, en una sola petición. Cada mensaje admite flash, shortCode, notifyUrl, notifyContentType y callbackData (texto); en la raíz, bulkId agrupa la campaña.
# Lotes: varios mensajes y destinatarios en una sola petición, con notificación por petición
curl -X POST https://rest.inalambria.com/mtmessage/massive \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"bulkId": "CAMPANA-001",
"messages": [
{
"destinations": [
{ "to": "573001234567", "messageId": "1" },
{ "to": "573007654321", "messageId": "2" }
],
"text": "Tu cuota vence el 5 de diciembre",
"notifyUrl": "https://tu-servidor.example/inalambria/estado?token=TU_TOKEN",
"callbackData": "{\"campana\": \"cobro-dic\"}"
}
]
}'
SMS bidireccional: POST /momessage
Envía desde tu código corto asignado (ShortCode) para recibir respuestas. Responde Id, Message (OK o ERROR) y Status. Las respuestas de los usuarios también pueden recibirse por SMPP (modo Receiver).
# Bidireccional: envío por tu código corto asignado
curl -X POST https://rest.inalambria.com/momessage \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"MessageText": "¿Confirmas tu cita del jueves? Responde 1 para Sí, 2 para No",
"PhoneNumber": "573001234567",
"ShortCode": "12345"
}'
Notificaciones de estado
| Modalidad | Uso | Autenticación de tu endpoint |
|---|---|---|
| Webhook de cuenta | Con /mtmessage. La URL queda configurada en tu cuenta (puede tardar hasta 10 minutos en activarse). | Basic o token en la URL |
| Callback por petición | Con /mtmessage/massive. La URL viaja en notifyUrl. | Token en la URL |
- Ambas se habilitan escribiendo a soporte con las cuentas de envío y la URL receptora.
- Llega una petición por mensaje (
resultstrae un solo elemento) cuando el operador recibe o rechaza el envío;smsCountindica los segmentos. - Responde
2xx. Solo503provoca reintentos: hasta 5, a los 10, 20, 30, 40 y 50 segundos. Otro código o la falta de respuesta no se reintenta. - Sé idempotente con
transactionNumber+toy no asumas orden de llegada. status.nameesDELIVERED_TO_HANDSETen un envío exitoso yNO_SUCCESSen uno fallido.
// Receptor de notificaciones de estado (Node.js)
import http from 'node:http';
const seen = new Set();
http.createServer((req, res) => {
if (req.method !== 'POST' || !req.url.startsWith('/inalambria/estado')) {
res.writeHead(404).end();
return;
}
let body = '';
req.on('data', (chunk) => (body += chunk));
req.on('end', () => {
// Acusa recibo con 2xx de inmediato; responde 503 solo si quieres un reintento.
res.writeHead(200).end();
const [result] = JSON.parse(body).results; // siempre un único elemento
const key = `${result.transactionNumber}:${result.to}`;
if (seen.has(key)) return; // idempotencia
seen.add(key);
console.log(result.messageId, result.status.name, result.smsCount);
});
}).listen(8080);
Envía plantillas aprobadas por Meta con source, destination, templateId y parameters (en el orden exacto de la plantilla). Un 200 confirma la recepción y genera un número de transacción, no la entrega final.
# WhatsApp con plantilla aprobada de Meta (Basic Authentication)
curl -X POST https://multichannel.inalambria.com/MultiChannelInput/SendMessageMetaWhatsApp \
-u "$INALAMBRIA_USER:$INALAMBRIA_PASSWORD" \
-H "Content-Type: application/json" \
-d '{
"source": "573000000000",
"destination": "573000000001",
"templateId": "ID_PLANTILLA",
"parameters": ["Ana", "PEDIDO-4471"]
}'
fromdebe pertenecer a un dominio remitente verificado para tu cuenta.- Usa
templateId(consultaGET /email/v1/templates) ohtmlconsubject. Las variables{{variable}}se llenan confields. - Hasta 50 destinatarios por petición; adjuntos en base64 (máximo 10 archivos y 8 MB; la petición completa no puede superar 20 MB).
# Email con plantilla almacenada (cabecera x-api-key)
curl -X POST https://emailrest.inalambria.com/email/v1/deliver \
-H "x-api-key: $INALAMBRIA_EMAIL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "notificaciones@tu-dominio-verificado.example",
"fromName": "Tu empresa",
"templateId": "TEMPLATE_ID_ASIGNADO",
"payload": [
{ "recipient": "usuario@example.com", "fields": { "nombre": "Ana" } }
]
}'
# Responde 202: revisa overallStatus, errors y el estado de cada destinatario.
SMPP y archivos
| Conexión | Host | Puerto |
|---|---|---|
| SMPP sin SSL | smsc.inalambria.com | 5020 |
| SMPP con SSL/TLS | smscssl.inalambria.com | 6011 |
| Mensajes entrantes (MO), modo Receiver | smscmo.inalambria.com | 6900 |
Modos de conexión: Transceiver, Transmitter o Receiver, con el System ID y la contraseña que te entrega Inalambria.
SMS por archivo: deja un archivo .txt (personalizado: número y mensaje por línea; o masivo: un mensaje para muchos números) en un sitio SFTP o un bucket S3 configurado, y en minutos se generan los envíos.
Monitoreo
GET /platformmonitory: estado de los operadores, si se usan como alternos y su tiempo de entrega, en lo posible en tiempo real.GET /bireports/effectivitybyclient: tiempos de procesamiento por estado (últimos 15 minutos).GET /bireports/msgmtclient: mensajes procesados por operador y estado (últimos 15 minutos).
Servicios de valor agregado: requieren habilitación previa.
Códigos de respuesta
| Código | Significado |
|---|---|
| 200 | Recibido y en procesamiento (o token generado). |
| 202 | Email: solicitud registrada; revisa el estado de cada destinatario. |
| 400 | Estructura del payload inválida. |
| 401 | No autorizado: revisa las credenciales. |
| 403 | Permisos insuficientes, por ejemplo una IP no permitida. |
| 500 | Error interno: reintenta en unos minutos o contacta a soporte. |
Catálogo de servicios
| Servicio | Endpoint | Host | Autenticación | Referencia |
|---|---|---|---|---|
| Solicitar token | POST /token | rest.inalambria.com | Basic | Ver |
| SMS / RCS unidireccional | POST /mtmessage | rest.inalambria.com | Bearer | Ver |
| SMS en lotes | POST /mtmessage/massive | rest.inalambria.com | Bearer | Ver |
| SMS bidireccional | POST /momessage | rest.inalambria.com | Bearer | Ver |
| Webhook de cuenta | Inalambria → tu servidor | — | Basic o token en URL | Ver |
| Callback por petición | Inalambria → tu servidor | — | Token en URL | Ver |
POST /MultiChannelInput/SendMessageMetaWhatsApp | multichannel.inalambria.com | Basic | Ver | |
| Enviar Emails | POST /email/v1/deliver | emailrest.inalambria.com | x-api-key | Ver |
| Plantillas de Email | GET /email/v1/templates | emailrest.inalambria.com | x-api-key | Ver |
| Monitoreo de operadores | GET /platformmonitory | rest.inalambria.com | Bearer | Ver |
| Monitoreo de efectividad | GET /bireports/effectivitybyclient | rest.inalambria.com | Bearer | Ver |
| Monitoreo de estado de mensajes | GET /bireports/msgmtclient | rest.inalambria.com | Bearer | Ver |
| SMS por archivo | SFTP / Amazon S3 | — | — | Ver |
| SMPP | smsc.inalambria.com | :5020 / :6011 (TLS) | System ID | Ver |
Inalambria Express API
Para pymes y desarrolladores que quieren empezar sin contrato, la API de Inalambria Express (OpenAPI 3.1, Bearer Token) ofrece:
- Envío de SMS a uno o varios destinatarios
- Lotes con mensajes distintos para distintos grupos
- Mensajes personalizados con plantillas y variables
- Historial de consumo, saldo y presupuesto
- Seguimiento de trabajos asíncronos y colas
Soporte técnico
Escribe a soporte@inalambria.com o abre una solicitud en el formulario de soporte seleccionando «API REST» como producto.
¿Listo para comunicarte mejor con tus clientes?
Cuéntanos tu caso y diseñamos contigo la solución adecuada, con el respaldo de más de 23 años de experiencia en Colombia.