nexosmsIr al panel
RECURSOS PARA DESARROLLADORES

API de NexoSMS

Enviá mensajes, administrá campañas y consultá saldo desde tu aplicación. Todas las rutas usan JSON y requieren HTTPS en producción.

Inicio rápido

Generá una clave en Panel → API. Enviá la clave en X-API-Key. En el navegador, la cookie de sesión se envía automáticamente.

curl -X POST https://TU-DOMINIO/api/messages -H "X-API-Key: sms_TU_CLAVE" -H "Content-Type: application/json" -d '{"phone":"595981234567","message":"Hola desde NexoSMS"}'
Los números se normalizan al formato 5959XXXXXXXX. En modo demo el envío queda como simulado. En producción, aceptado indica recepción por la API de Winsap, no entrega final al dispositivo.

Autenticación

Usá X-API-Key para integraciones externas. Guardá la clave en el servidor de tu aplicación. Cada clave accede sólo a los datos de su usuario y puede revocarse desde el panel.

Endpoints

POST/api/auth/register

Crear cuenta con nombre, correo y contraseña de al menos 10 caracteres.

POST/api/auth/login

Iniciar sesión y recibir una cookie segura.

GET/api/me

Consultar usuario y saldo.

POST/api/messages

Enviar un SMS individual: phone, message.

GET/api/dashboard

Métricas y actividad reciente.

GET/api/contacts

Listar contactos.

POST/api/contacts

Importar hasta 2000 contactos: contacts: [{phone,name,variables}].

DELETE/api/contacts/:id

Eliminar un contacto.

GET/api/campaigns

Listar campañas.

POST/api/campaigns

Crear campaña: name, body, recipients y scheduledAt opcional.

GET/api/campaigns/:id

Ver detalle y destinatarios.

PUT/api/campaigns/:id

Editar nombre, mensaje y horario de una campaña pendiente o pausada.

POST/api/campaigns/:id/pause

Detener una campaña en curso o programada.

POST/api/campaigns/:id/cancel

Cancelar definitivamente una campaña.

DELETE/api/campaigns/:id

Eliminar la campaña y su lista de destinatarios (no se puede si está enviando).

POST/api/campaigns/:id/run

Procesar hasta 20 destinatarios; con now: true reanuda o envía sin esperar el horario. Repetir hasta remaining=0.

POST/api/campaigns/process

Procesar campañas programadas que ya vencieron.

GET/api/reports

Historial filtrable: from, to, campaign, status.

GET/api/wallet

Saldo, movimientos, paquetes y compras.

POST/api/orders

Crear link de pago por la cantidad de SMS elegida: credits (Gs. 130 por SMS, compra mínima 1.000 SMS).

POST/api/orders/verify-pending

Verificar pagos pendientes y acreditar los confirmados.

POST/api/orders/:id/verify

Verificar pago y acreditar créditos si fue confirmado.

GET/api/optouts

Listar números excluidos. Nunca se les envía SMS.

POST/api/optouts

Excluir números: phone o phones: [].

DELETE/api/optouts/:id

Quitar un número de la lista de exclusión.

GET/api/keys

Listar claves sin revelar secretos.

POST/api/keys

Crear clave API: name. Se muestra una sola vez.

DELETE/api/keys/:id

Revocar una clave.

Ejemplo de campaña

{
  "name": "Recordatorio de citas",
  "body": "Hola {nombre}, tu cita es el {fecha}.",
  "scheduledAt": "2026-10-12T13:00:00Z",
  "recipients": [
    {
      "phone": "595981234567",
      "name": "María",
      "variables": {
        "fecha": "12/10"
      }
    }
  ]
}

El procesamiento se realiza en lotes de hasta 20 destinatarios. El panel revisa campañas pendientes mientras está abierto. Para ejecutar sin el panel abierto, un programador externo debe invocar POST /api/campaigns/process periódicamente con una clave de la cuenta.

Personalización e importación

El mensaje admite {nombre}, {numero} y las claves de variables de cada destinatario. En el panel podés importar Excel o CSV. Las columnas adicionales se convierten en variables en minúsculas, reemplazando espacios por guiones bajos. También podés pegar líneas como 0981234567,María.

Estados y créditos

El costo se estima por segmentos: 160 caracteres GSM o 70 Unicode en un SMS; los mensajes largos usan segmentos de 153 o 67 caracteres. El saldo se reserva antes del envío y se devuelve si Winsap rechaza la solicitud. Los estados incluyen pendiente, simulado, aceptado y fallido.

La compra crea un link de Winsap para pagar con tarjeta o QR. Volver del checkout no acredita saldo: la plataforma verifica el pago, el monto y el link antes de acreditar.

Errores

Los errores devuelven JSON con un campo error. Códigos: 400 datos inválidos, 401 autenticación, 402 saldo insuficiente, 403 permisos, 404 recurso no encontrado y 422 número excluido, 429 límite de solicitudes (ver encabezado Retry-After) y 503 integración aún no activada.

Volver al inicio
¿Consultas? Escribinos