Chats

Métodos para gestionar chats y mensajes de WhatsApp.

Obtener todos los chats

http
GET /api/{session}/chats

Parámetros de consulta:

http
GET /api/{session}/chats?limit=100&offset=0&sortBy=messageTimestamp&sortOrder=desc
  • limit=100 — limita el número de chats a devolver.
  • offset=0 — omite N chats desde el inicio.
  • sortBy — ordena por campo: messageTimestamp (último mensaje), id o name.
  • sortOrder — desc (nuevos primero) o asc(antiguos primero).

Obtener resumen de chats

La API que casi todo cliente de interfaz de chat necesita.

http
GET /api/{session}/chats/overview?limit=20&offset=0
  • limit / offset — paginación.
  • ids=11111&[email protected] — filtra por ID o número de teléfono.

Usa POST si tienes muchos chats (>400) en el filtro ids:

http
POST /api/{session}/chats/overview
jsonCuerpo
{
  "pagination": { "limit": 20, "offset": 0 },
  "filter": { "ids": ["[email protected]"] }
}
jsonRespuesta
[
  {
    "id": "[email protected]",
    "name": "Juan Pérez",
    "picture": "https://ejemplo.com/foto.jpg",
    "lastMessage": {
      "id": "[email protected]_AAAA",
      "timestamp": 1667561485,
      "from": "[email protected]",
      "fromMe": true,
      "body": "Hola"
    }
  }
]

Obtener foto del chat

http
GET /api/{session}/chats/{chatId}/picture?refresh=true
jsonRespuesta
{ "url": "https://ejemplo.com/foto.jpg" }

url puede ser null si el chat no tiene foto. refresh=true fuerza el refresco (cacheado 24 h).

Archivar / desarchivar chat

http
POST /api/{session}/chats/{chatId}/archive
http
POST /api/{session}/chats/{chatId}/unarchive

Marcar chat como no leído

http
POST /api/{session}/chats/{chatId}/unread

Eliminar chat

http
DELETE /api/{session}/chats/{chatId}

Marcar mensajes como leídos

Marca todos los mensajes no leídos del chat como leídos (doble check azul).

http
POST /api/{session}/chats/{chatId}/messages/read
jsonCuerpo
{ "messages": 30, "days": 7 }
jsonCuerpo
{
  "ids": [
    "[email protected]_AAAA",
    "[email protected]_BBBB"
  ]
}
  • messages — cuántos mensajes leer (default 30 en chats directos, 100 en grupos).
  • days — cuántos días leer (default 7).

Obtener mensajes

http
GET /api/{session}/chats/{chatId}/messages?limit=10

Parámetros disponibles:

  • downloadMedia=true — descargar archivos multimedia.
  • limit / offset paginación.
  • filter.timestamp.gte / filter.timestamp.lte — filtrar por timestamp.
  • filter.fromMe=false — excluir mensajes propios.
  • filter.ack — filtrar por estado de confirmación: ERROR (-1), PENDING (0), SERVER (1), DEVICE (2), READ (3), PLAYED (4).
jsonRespuesta
[
  {
    "id": "[email protected]_AAAAAA",
    "timestamp": 1727745026,
    "from": "[email protected]",
    "fromMe": false,
    "body": "¡Hola!",
    "hasMedia": false,
    "ack": 3,
    "ackName": "READ",
    "replyTo": null
  }
]

Obtener mensaje por id

http
GET /api/{session}/chats/{chatId}/messages/{messageId}?downloadMedia=true

Fijar / desfijar mensaje

http
POST /api/{session}/chats/{chatId}/messages/{messageId}/pin
jsonCuerpo
{
  "duration": 86400
}

Duración: 24 horas = 86400, 7 días = 604800, 30 días = 2592000.

http
POST /api/{session}/chats/{chatId}/messages/{messageId}/unpin

Editar mensaje

http
PUT /api/{session}/chats/{chatId}/messages/{messageId}
jsonCuerpo
{ "text": "Mensaje editado" }

Eliminar mensaje

http
DELETE /api/{session}/chats/{chatId}/messages/{messageId}

Eliminar todos los mensajes

http
DELETE /api/{session}/chats/{chatId}/messages

Eventos

Recibe eventos de chats mediante Eventos. El evento chat.archive se dispara cuando un chat se archiva o desarchiva (consulta el detalle del payload en la página de Eventos).