VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/WhatsApp: histórico e ligações

Mensagens e CSV

Pagina as mensagens de uma conversa do WhatsApp e exporta as mais recentes em um arquivo CSV.

Depois de escolher uma conversa em Conversas, estas rotas devolvem o que foi dito nela: uma página de mensagens em JSON, com um resumo da conversa para montar o cabeçalho da tela, ou um arquivo CSV para guardar ou auditar.

Mensagens da conversa

As mensagens vêm da mais nova para a mais antiga. Para paginar para trás, passe o next_before da resposta anterior como before.

GET/api/v1/admin/whatsapp-confluence/threads/{id}/messagesAdmin

Pagina as mensagens de uma conversa

Cabeçalhos

Authorizationstringobrigatório
Bearer $TOKEN. Token de acesso de um administrador da loja. Veja Tokens.

Parâmetros de caminho

iduuidobrigatório
Id da conversa (id de Listar conversas). Um UUID válido que não existe também responde, veja os erros de cada rota.

Parâmetros de consulta

beforeinteger
Devolve só mensagens com id menor que este valor. Omitido, 0 ou não numérico devolve as mais recentes.
limitintegerpadrão: 50
Mensagens por página, de 1 a 200. Fora disso vale 50.

Exemplo de requisição

bash
curl "$BASE_URL/api/v1/admin/whatsapp-confluence/threads/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60/messages?limit=20" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Mensagens
json
{
  "messages": [
    {
      "id": 28,
      "thread_id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
      "wamid": "wamid.HBgNNTUxMTk4NzY1NDMyMRUCABIYFjNFQjA",
      "direction": "O",
      "origin": "A",
      "msg_type": "text",
      "body": "Olá, Maria! Seu pedido sai amanhã.",
      "status": "S",
      "meta_timestamp": "2026-10-10T14:35:00Z",
      "created_at": "2026-10-10T14:35:00Z"
    }
  ],
  "next_before": 28,
  "thread": {
    "id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
    "account_id": "3b9d8c52-1f0a-4e7b-8a21-6d5c4b3a2f10",
    "customer_phone": "5511987654321",
    "contact_name": "Maria Souza",
    "assignee_user_id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
    "assignee_name": "Ana Lima",
    "unread_count": 2,
    "last_message_at": "2026-10-10T14:32:10Z",
    "last_message_preview": "Quero 3 caixas, pode entregar amanhã?",
    "last_message_origin": "C",
    "csw_expires_at": "2026-10-11T14:32:10Z",
    "status": "A",
    "bot_mode": "H",
    "bot_mode_updated_at": "2026-10-10T14:20:00Z",
    "created_at": "2026-09-28T21:56:44Z",
    "updated_at": "2026-10-10T14:32:10Z"
  }
}

Campos da resposta

messagesarray
Mensagens da página, da mais nova para a mais antiga. Cada item tem os campos abaixo.
next_beforeinteger
id da mensagem mais antiga da página: o before da próxima chamada. Vale 0 se a página veio vazia.
threadobject
Resumo da conversa (bot, responsável, janelas), no formato de Conversas. Omitido se a conversa não existe. Quando a conversa voltou sozinha para o assistente por falta de resposta, traz também handoff_timeout (reason e at).

Campos de cada mensagem:

idinteger
Id numérico da mensagem. Cresce com o tempo; serve de cursor e de messageID em Mídia da mensagem.
thread_iduuid
Conversa.
wamidstring
Id da mensagem na Meta. Omitido se ainda não houve envio.
directionstring
IO
I recebida do cliente, O enviada pela loja.
originstring
CABEH
C cliente, A API ou atendente, B assistente, E eco do aplicativo WhatsApp Business, H histórico.
msg_typestring
Tipo: text, image, audio, voice, video, document, sticker, interactive, template, order e outros que a Meta enviar.
bodystring
Texto da mensagem, ou a descrição quando não é texto.
media_idstring
Id da mídia na Meta. Omitido sem mídia.
media_mimestring
Tipo MIME da mídia. Omitido sem mídia.
media_captionstring
Legenda da mídia. Omitido quando não há.
filenamestring
Nome do arquivo, para documentos.
media_urlstring
Link assinado e temporário (12 horas) para exibir a mídia sem cabeçalho Authorization. Presente em mensagens de imagem, áudio, voz, vídeo, documento e figurinha.
transcriptionstring
Texto transcrito de um áudio, quando existe.
interactiveobject
Conteúdo de botões, listas e links enviados ou recebidos, no formato que a Meta define.
order_payloadobject
Carrinho enviado pelo cliente pelo catálogo do WhatsApp.
statusstring
QSDRF
Entrega: Q na fila, S enviada, D entregue, R lida, F falhou.
errorstring
Motivo da falha quando status é F.
meta_timestampstring
Horário na Meta (RFC 3339).
created_atstring
Quando a plataforma gravou (RFC 3339).

Erros

StatusQuandoCorpo de exemplo
401Token ausente, inválido ou expirado.{"error":"missing authorization header"}
403O token não é de um administrador.{"error":"insufficient permissions"}
400Um segmento do caminho é 0 ou um inteiro negativo.{"error":"invalid id parameter"}
404id que não é um UUID.{"error":"thread not found"}
500Falha interna ao ler ou gravar.{"error":"..."}
UUID inexistente devolve 200

Se o id é um UUID válido mas não existe, a resposta é 200 com "messages": [], "next_before": 0 e sem thread. Só um id que não é UUID responde 404. Para confirmar que a conversa existe, use Conversas.

Ler não marca como lida

Esta rota não zera unread_count. Quem marca a conversa como lida é uma ação da caixa de entrada, em outra seção.

Exportar em CSV

Gera um arquivo CSV com as mensagens em ordem cronológica (da mais antiga para a mais nova). Cobre no máximo as 200 mensagens mais recentes: conversas mais longas saem cortadas no começo.

GET/api/v1/admin/whatsapp-confluence/threads/{id}/export.csvAdmin

Baixa as mensagens da conversa em CSV

Cabeçalhos

Authorizationstringobrigatório
Bearer $TOKEN. Token de acesso de um administrador da loja. Veja Tokens.

Parâmetros de caminho

iduuidobrigatório
Id da conversa (id de Listar conversas). Um UUID válido que não existe também responde, veja os erros de cada rota.

Exemplo de requisição

bash
curl "$BASE_URL/api/v1/admin/whatsapp-confluence/threads/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60/export.csv" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Arquivo CSV
csv
id,created_at,origin,direction,msg_type,status,body
27,2026-10-10T14:30:00Z,C,I,text,S,"Quero 3 caixas, pode entregar amanhã?"
28,2026-10-10T14:35:00Z,A,O,text,S,"Olá, Maria! Seu pedido sai amanhã."

Campos da resposta

Content-Typeheader
text/csv; charset=utf-8. O arquivo sai como anexo wa-thread-{id}.csv.
colunascsv
id, created_at (UTC, RFC 3339), origin, direction, msg_type, status, body. Aspas no texto são dobradas e quebras de linha viram espaço. Mídia não vai no arquivo, só o texto ou a legenda.

Erros

StatusQuandoCorpo de exemplo
401Token ausente, inválido ou expirado.{"error":"missing authorization header"}
403O token não é de um administrador.{"error":"insufficient permissions"}
400Um segmento do caminho é 0 ou um inteiro negativo.{"error":"invalid id parameter"}
500id que não é um UUID (a mensagem de erro é um texto técnico, sem tratamento).{"error":"..."}
CSV com texto do cliente

O campo body é texto livre escrito pelo cliente e não é protegido contra fórmulas de planilha: uma mensagem que começa com =, +, - ou @ pode ser interpretada como fórmula ao abrir no Excel. Importe o arquivo como texto ou higienize antes de abrir. Um UUID válido que não existe devolve 200 com só o cabeçalho.

Veja também

  • Conversas
  • Mídia da mensagem
  • Visão geral da seção
Anterior
Conversas
Próxima
Mídia da mensagem
Nesta página
  • Mensagens da conversa
  • Exemplo de requisição
  • Resposta
  • Erros
  • Exportar em CSV
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também