Ir al contenido
angel.library

OpenWA — sesiones y mensajes

Toda la API vive bajo http://localhost:2785/api y se autentica con una cabecera X-API-Key. La clave se crea desde el panel y se muestra una sola vez: para rotarla se genera una nueva y se borra la anterior.

La documentación interactiva de Swagger está en /api/docs mientras no estés en NODE_ENV=production.

Una sesión es una cuenta de WhatsApp vinculada. El ciclo mínimo son tres llamadas.

Ventana de terminal
curl -X POST http://localhost:2785/api/sessions \
-H "Content-Type: application/json" \
-H "X-API-Key: TU_API_KEY" \
-d '{"name": "mi-bot"}'

La respuesta trae el sessionId que usarás en el resto de las rutas.

Ventana de terminal
curl -X POST http://localhost:2785/api/sessions/{sessionId}/start \
-H "X-API-Key: TU_API_KEY"
Ventana de terminal
curl http://localhost:2785/api/sessions/{sessionId}/qr \
-H "X-API-Key: TU_API_KEY"

El QR se escanea desde WhatsApp en el teléfono, igual que WhatsApp Web. Desde el panel el proceso es visual y no hace falta pasar por curl.

Ventana de terminal
curl -X POST http://localhost:2785/api/sessions/{sessionId}/messages/send-text \
-H "Content-Type: application/json" \
-H "X-API-Key: TU_API_KEY" \
-d '{
"chatId": "628123456789@c.us",
"text": "Hola desde OpenWA"
}'

Es el punto donde más se tropieza al empezar:

DestinoFormatoEjemplo
Contacto<indicativo><número>@c.us573001112233@c.us
Grupo<id-del-grupo>@g.us120363000000000000@g.us

El número va con indicativo de país, sin +, sin espacios y sin guiones.

CategoríaIncluye
MensajesTexto, imagen, video, documento, audio
InteracciónReacciones con emoji, edición de mensajes ya enviados
VolumenEnvío masivo a varios destinatarios
SeguimientoEstado de entrega y confirmaciones de lectura

La edición de mensajes emite además un evento message.edited en vivo, y funciona en los dos motores.

ÁreaQué permite
GruposCrear, administrar, unirse con código de invitación y configurar
PerfilCambiar nombre visible, texto de estado y foto
LlamadasEvento call.received, rechazar llamadas, rechazo automático por sesión
CanalesSoporte de Canales de WhatsApp
EtiquetasOrganizar chats con etiquetas
ProxyConfiguración de proxy por sesión

Tres mecanismos que conviene activar antes de exponer nada:

  • API keys con rol. Crea claves del menor privilegio posible y acotadas a una sesión cuando el consumidor solo necesita una.
  • Límite de peticiones. Configurable con las variables RATE_LIMIT_*. No es solo protección del servidor: enviar despacio es lo que reduce el riesgo de que WhatsApp restrinja el número.
  • Lista de IPs por CIDR. Restringe desde qué redes se acepta cada clave.

Además hay registro de auditoría para operaciones sobre API keys, sesiones, instancias de integración e infraestructura. Los envíos de mensajes y las entregas de webhooks se registran en sus propias tablas, no en el log de auditoría.

Antes de automatizar envíos conviene releer las reglas de uso seguro: número dedicado, calentamiento, ritmo bajo y destinatarios que ya esperan tus mensajes.