Conversas e mensagens
Lista as conversas do WhatsApp, abre uma conversa, pagina as mensagens, exporta em CSV e baixa a mídia.
Uma conversa (thread) liga um telefone de cliente a um número da loja. Todas as mensagens trocadas entre os dois ficam nela, venham do cliente, do assistente automático, de um atendente ou do aplicativo WhatsApp Business. Estas cinco rotas leem tudo isso. O seller só enxerga as conversas das contas dele; uma conversa de outro seller responde 404 como se não existisse.
Listar conversas
/api/v1/vendor/whatsapp-confluence/threadsSellerLista as conversas, as mais recentes primeiro
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário seller (lojista). Veja Tokens.Parâmetros de consulta
filterstringunreadhumanminevia_appunansweredunread com mensagens não lidas; human com atendimento humano ou assistente pausado; mine atribuídas a você; via_app cuja última mensagem veio do aplicativo WhatsApp Business; unanswered cuja última mensagem é do cliente.unreadbooleantrue equivale a filter=unread.originstringCABEHvia_app e unanswered sobrescrevem este parâmetro.assigneeuuidqstringpageintegerpadrão: 1per_pageintegerpadrão: 50Exemplo de requisição
curl "$BASE_URL/api/v1/vendor/whatsapp-confluence/threads?filter=unread&per_page=20" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"page": 1,
"threads": [
{
"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
pageintegerthreadsarrayiduuidaccount_iduuidcustomer_phonestring5511987654321).contact_namestringcustomer_user_iduuidassignee_user_iduuidassignee_namestringunread_countintegerlast_message_atstringlast_message_previewstringlast_message_originstringCABEHC cliente, A API ou atendente pela caixa, B assistente, E aplicativo WhatsApp Business (eco), H histórico importado.csw_expires_atstringfep_expires_atstringreferralobjectstatusstringA. Não confunda com bot_mode.bot_modestringAPHA assistente, P assistente pausado por um tempo, H pessoa.bot_mode_updated_atstringbot_mode mudou. Omitido se nunca mudou.created_atstringupdated_atstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não é um seller, ou o seller ainda está em análise de cadastro. | {"error":"vendor_pending_review"} |
| 500 | Falha interna ao ler ou gravar. | {"error":"..."} |
Consultar conversa
/api/v1/vendor/whatsapp-confluence/threads/{id}SellerRetorna uma conversa
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário seller (lojista). Veja Tokens.Parâmetros de caminho
iduuidobrigatórioid de Listar conversas).Exemplo de requisição
curl "$BASE_URL/api/v1/vendor/whatsapp-confluence/threads/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"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
iduuidaccount_iduuidcustomer_phonestring5511987654321).contact_namestringcustomer_user_iduuidassignee_user_iduuidassignee_namestringunread_countintegerlast_message_atstringlast_message_previewstringlast_message_originstringCABEHC cliente, A API ou atendente pela caixa, B assistente, E aplicativo WhatsApp Business (eco), H histórico importado.csw_expires_atstringfep_expires_atstringreferralobjectstatusstringA. Não confunda com bot_mode.bot_modestringAPHA assistente, P assistente pausado por um tempo, H pessoa.bot_mode_updated_atstringbot_mode mudou. Omitido se nunca mudou.created_atstringupdated_atstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não é um seller, ou o seller ainda está em análise de cadastro. | {"error":"vendor_pending_review"} |
| 404 | Conversa de outro seller. Um id desconhecido também dá 404 em algumas rotas, mas 200 ou 502 em outras quando não há escopo de seller (veja a visão geral da seção). | {"error":"thread not found"} |
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.
/api/v1/vendor/whatsapp-confluence/threads/{id}/messagesSellerPagina as mensagens de uma conversa
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário seller (lojista). Veja Tokens.Parâmetros de caminho
iduuidobrigatórioid de Listar conversas).Parâmetros de consulta
beforeintegerid menor que este valor. Omitido ou 0 devolve as mais recentes.limitintegerpadrão: 50Exemplo de requisição
curl "$BASE_URL/api/v1/vendor/whatsapp-confluence/threads/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60/messages?limit=20" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"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
messagesarraynext_beforeintegerid da mensagem mais antiga da página, o before da próxima. Vale 0 se a página veio vazia.threadobjecthandoff_timeout (reason e at) quando a conversa voltou ao assistente por tempo: N ninguém respondeu, I o cliente não voltou. Omitido se não for possível lê-la.idintegerthread_iduuidwamidstringdirectionstringIOI recebida do cliente, O enviada pela loja.originstringCABEHC cliente, A API ou atendente, B assistente, E eco do aplicativo WhatsApp Business, H histórico.msg_typestringtext, image, audio, voice, video, document, sticker, interactive, template, order e outros que a Meta enviar.bodystringmedia_idstringmedia_mimestringmedia_captionstringfilenamestringmedia_urlstringAuthorization. Aparece em mensagens com mídia que a conversa já listou.transcriptionstringinteractiveobjectorder_payloadobjectstatusstringQSDRFQ na fila, S enviada, D entregue, R lida, F falhou.errorstringstatus é F.meta_timestampstringcreated_atstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não é um seller, ou o seller ainda está em análise de cadastro. | {"error":"vendor_pending_review"} |
| 404 | Conversa de outro seller. Um id desconhecido também dá 404 em algumas rotas, mas 200 ou 502 em outras quando não há escopo de seller (veja a visão geral da seção). | {"error":"thread not found"} |
| 500 | Falha interna ao ler ou gravar. | {"error":"..."} |
Exportar em CSV
Gera um arquivo CSV com as mensagens em ordem cronológica. Cobre no máximo as 200 mensagens mais recentes: conversas mais longas saem cortadas no começo.
/api/v1/vendor/whatsapp-confluence/threads/{id}/export.csvSellerBaixa as mensagens da conversa em CSV
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário seller (lojista). Veja Tokens.Parâmetros de caminho
iduuidobrigatórioid de Listar conversas).Exemplo de requisição
curl "$BASE_URL/api/v1/vendor/whatsapp-confluence/threads/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60/export.csv" \
-H "Authorization: Bearer $TOKEN"Resposta
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-Typeheadertext/csv; charset=utf-8. O arquivo sai como anexo wa-thread-{id}.csv.colunascsvid, created_at (UTC, RFC 3339), origin, direction, msg_type, status, body. Aspas no texto são dobradas e quebras de linha viram espaço.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não é um seller, ou o seller ainda está em análise de cadastro. | {"error":"vendor_pending_review"} |
| 404 | Conversa de outro seller. Um id desconhecido também dá 404 em algumas rotas, mas 200 ou 502 em outras quando não há escopo de seller (veja a visão geral da seção). | {"error":"thread not found"} |
| 500 | Falha interna ao ler ou gravar. | {"error":"..."} |
Baixar mídia
Entrega a imagem, o áudio, o vídeo ou o documento que veio na mensagem. O arquivo vem do cache da plataforma ou é buscado na Meta na hora (até 16 MB). Tipos que não são seguros para abrir direto no navegador, como SVG, saem como download.
/api/v1/vendor/whatsapp-confluence/media/{messageID}SellerDevolve os bytes da mídia de uma mensagem
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso de um usuário seller (lojista). Veja Tokens.Parâmetros de caminho
messageIDintegerobrigatórioid em Mensagens da conversa). Deve ser maior que 0.Exemplo de requisição
curl "$BASE_URL/api/v1/vendor/whatsapp-confluence/media/28" \
-H "Authorization: Bearer $TOKEN"Resposta
HTTP/1.1 200 OK
Content-Type: image/jpeg
Content-Disposition: inline; filename="foto.jpg"
Cache-Control: private, no-store
X-Content-Type-Options: nosniff
<bytes do arquivo>Campos da resposta
corpobinaryContent-Type é o tipo real; tipos fora da lista segura (imagens jpeg, png, webp, gif; áudios ogg, mpeg, mp4, aac, amr, webm; vídeos mp4, 3gpp, webm; pdf) vêm como application/octet-stream com Content-Disposition: attachment.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não é um seller, ou o seller ainda está em análise de cadastro. | {"error":"vendor_pending_review"} |
| 400 | messageID não é um número, ou é 0 ou negativo. | {"error":"invalid id parameter"} |
| 404 | Mensagem sem mídia, inexistente, ou de uma conversa de outro seller. | {"error":"media not found"} |
| 502 | A Meta não devolveu a mídia, ou veio vazia. | {"error":"empty media"} |