Guias/Chats
Documentação

Chats

Operações de conversa, leitura, arquivo e edição.

Todas as rotas atuais usam o JWT da instância.

MétodoRotaBody ou querySucesso
POST/instance/:instance/chat/is-accountnumbers200
PATCH/instance/:instance/chat/read-messageIDs ou remetente/chat/IDs200
PUT/instance/:instance/chat/archivelastMessage e archive204
DELETE/instance/:instance/chat/delete-message?id=1query id204
POST/instance/:instance/chat/profile-picturedestinatário200
POST/instance/:instance/chat/reject-callcallId, callFrom204
POST/instance/:instance/chat/edit-messageid, text200
POST/instance/:instance/db/messagesfiltros e cursor opcionais200
POST/chat/findMessages/:instanceNamewhere, offset, page legados200

Buscar mensagens persistidas

POST /instance/codechat/db/messages consulta somente o banco de dados da instancia da rota. A instancia nao precisa estar conectada ao WhatsApp; a rota nao resolve cliente WhatsApp nem valida sessao conectada.

Body vazio e valido:

{}

Filtros opcionais:

{
  "filter": {
    "keyRemoteJid": "[email protected]",
    "keyFromMe": "true",
    "messageType": "conversation",
    "status": "DELIVERY_ACK"
  },
  "cursor": {
    "type": "next",
    "id": 1200
  },
  "limit": 50
}

O limite padrao e 50, com minimo 1 e maximo 100. O cursor usa o ID interno da mensagem. A resposta sempre vem em id DESC; next busca IDs menores e previous busca IDs maiores, invertendo internamente a pagina antes de responder.

keyFromMe e string publica ("true" ou "false", case-insensitive apos trim) e e convertido para booleano antes da consulta. status e filtrado por MessageUpdate com EXISTS, preservando mensagens sem atualizacoes quando nao ha filtro e evitando registros duplicados.

O alias legado POST /chat/findMessages/:instanceName permanece disponivel com where.keyid, where.messageStatus, offset como tamanho da pagina e page baseado em 1. A resposta preserva total, pages, currentPage, records e o campo legado MessageUpdate.

Exemplo:

curl --location --request POST \
  'http://localhost:8084/instance/codechat-01/db/messages' \
  --header 'Authorization: Bearer SEU_TOKEN' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "filter": {
      "keyRemoteJid": "[email protected]",
      "keyFromMe": "true",
      "messageType": "conversation",
      "status": "DELIVERY_ACK"
    },
    "cursor": {
      "type": "next",
      "id": 1200
    },
    "limit": 50
  }'

Verificar contas

{"numbers":["5511999999999","[email protected]"]}

Aceita de 1 a 100 telefones/JIDs individuais, não grupos. A resposta é um array com jid, lid opcional e exists.

Marcar como lida

Modo por IDs internos:

{"ids":[101,102]}

Modo por chaves do WhatsApp:

{
  "sender":"[email protected]",
  "chat":"[email protected]",
  "messageIds":["3EB0...", "3EB1..."]
}

Use apenas um modo. A resposta é {"message":"Read messages","read":"success"}.

Arquivar

{
  "archive": true,
  "lastMessage": {
    "key": {"remoteJid":"[email protected]","fromMe":false,"id":"3EB0..."}
  }
}

Responde 204 sem body.

Excluir mensagem

DELETE /instance/codechat/chat/delete-message?id=101 recebe o ID interno positivo e responde 204.

Foto de perfil

Envie exatamente um entre number, chat e recipient. A resposta é {"profilePictureUrl":"https://..."} ou {"profilePictureUrl":null}.

Rejeitar chamada

{"callId":"ABCD","callFrom":"[email protected]"}

callFrom precisa ser JID válido. Responde 204.

Editar mensagem

{"id":"3EB0...","text":"Texto corrigido"}

id aceita ID interno positivo ou ID WhatsApp não vazio. Só mensagens próprias do tipo conversation/extended text são editáveis. O sucesso retorna a mensagem persistida.

O download de mídia de uma mensagem está em Mídia. Aliases antigos /chat/* estão em Endpoints legados.