curl --request POST \
--url https://api.wppfy.com/message/find \
--header 'Content-Type: application/json' \
--header 'token: <api-key>' \
--data '
{
"chatid": "5511999999999@s.whatsapp.net",
"limit": 20,
"offset": 0
}
'{
"messages": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"messageid": "<string>",
"chatid": "<string>",
"sender": "<string>",
"senderName": "<string>",
"isGroup": false,
"fromMe": false,
"messageType": "<string>",
"source": "<string>",
"messageTimestamp": 0,
"status": "<string>",
"text": "",
"quoted": "",
"edited": "",
"reaction": "",
"vote": "",
"convertOptions": "",
"buttonOrListid": "",
"owner": "",
"error": "",
"content": {},
"wasSentByApi": true,
"pinned": true,
"sendFunction": "<string>",
"sendPayload": {},
"fileURL": "<string>",
"callPeer": {
"jid": "<string>",
"name": "<string>",
"imagePreviewUrl": "<string>"
},
"send_folder_id": "<string>",
"track_source": "<string>",
"track_id": "<string>",
"ai_metadata": {
"agent_id": "<string>",
"turn": "<string>",
"flow_id": "<string>",
"request": {
"messages": "<array>",
"tools": "<array>",
"options": {
"model": "<string>",
"temperature": 123,
"maxTokens": 123,
"topP": 123,
"frequencyPenalty": 123,
"presencePenalty": 123
}
},
"response": {
"choices": "<array>",
"toolResults": "<array>",
"error": "<string>"
},
"outcome": {
"status": "sent",
"texts": 123,
"audio": true,
"menus": 123,
"files": 123,
"handoff": "<string>",
"lead": [
"<string>"
],
"detail": "<string>"
}
},
"sender_pn": "<string>",
"sender_lid": "<string>",
"sender_image_preview_url": "<string>"
}
],
"pagination": {
"limit": 123,
"offset": 123,
"hasMore": true,
"nextOffset": 123
}
}Buscar mensagens em um chat
Busca mensagens com múltiplos filtros disponíveis. Este endpoint permite:
- Busca por ID específico: Use
idpara encontrar uma mensagem exata - Filtrar por chat: Use
chatidpara mensagens de uma conversa específica - Filtrar por rastreamento: Use
track_sourceetrack_idpara mensagens com dados de tracking - Histórico de ligações: Use apenas
messageType: call,limiteoffsetpara listar as chamadas mais recentes. A resposta pode trazercallPeer(identidade conhecida do contato) econtent.isVideo. - Status dos contatos: Use
chatid: status@broadcastpara os Status recebidos, mesmo sem webhookstatus_posts. Sem essechatid, a busca não traz Status. Eles ficam guardados por 24 horas, como no WhatsApp (a limpeza roda uma vez por dia, então filtremessageTimestampse precisar do corte exato), e o Status que o autor apaga sai da lista. Cada um vem com o autor emsender_pn,sender_lidesender_image_preview_url(foto, quando conhecida) e, nos de imagem, vídeo ou link, com a miniatura emcontent.JPEGThumbnail. Baixe a mídia pelo/message/download. Um Status que não abriu vem commessageType: errore só o ID, o autor e o horário. Status de grupo (enviados e recebidos) ficam na conversa de cada grupo commessageType: GroupStatusMessagee o texto emtext: liste todos commessageType: GroupStatusMessage, semchatid. Saem em 24 horas, como os outros Status. - Limitar resultados: Use
limitpara controlar quantas mensagens retornar - Ordenação: Resultados ordenados por data (mais recentes primeiro)
Fora dos Status, as mensagens guardadas só trazem no content as
miniaturas em base64 que não têm cópia no servidor (prévia de link sem
cópia, localização, anúncio, convites); as de mídia que pode ser baixada de
novo (JPEGThumbnail e afins) chegam só no webhook, na hora da mensagem.
Nas mensagens enviadas pela API nos últimos 7 dias, sendPayload traz o
pedido de envio, sem os arquivos em base64 (links vêm). Depois do envio (em
conversa individual, 1 hora depois), o arquivo em base64 guardado vira o
texto [arquivo removido após o envio: tipo, N bytes].
curl --request POST \
--url https://api.wppfy.com/message/find \
--header 'Content-Type: application/json' \
--header 'token: <api-key>' \
--data '
{
"chatid": "5511999999999@s.whatsapp.net",
"limit": 20,
"offset": 0
}
'{
"messages": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"messageid": "<string>",
"chatid": "<string>",
"sender": "<string>",
"senderName": "<string>",
"isGroup": false,
"fromMe": false,
"messageType": "<string>",
"source": "<string>",
"messageTimestamp": 0,
"status": "<string>",
"text": "",
"quoted": "",
"edited": "",
"reaction": "",
"vote": "",
"convertOptions": "",
"buttonOrListid": "",
"owner": "",
"error": "",
"content": {},
"wasSentByApi": true,
"pinned": true,
"sendFunction": "<string>",
"sendPayload": {},
"fileURL": "<string>",
"callPeer": {
"jid": "<string>",
"name": "<string>",
"imagePreviewUrl": "<string>"
},
"send_folder_id": "<string>",
"track_source": "<string>",
"track_id": "<string>",
"ai_metadata": {
"agent_id": "<string>",
"turn": "<string>",
"flow_id": "<string>",
"request": {
"messages": "<array>",
"tools": "<array>",
"options": {
"model": "<string>",
"temperature": 123,
"maxTokens": 123,
"topP": 123,
"frequencyPenalty": 123,
"presencePenalty": 123
}
},
"response": {
"choices": "<array>",
"toolResults": "<array>",
"error": "<string>"
},
"outcome": {
"status": "sent",
"texts": 123,
"audio": true,
"menus": 123,
"files": 123,
"handoff": "<string>",
"lead": [
"<string>"
],
"detail": "<string>"
}
},
"sender_pn": "<string>",
"sender_lid": "<string>",
"sender_image_preview_url": "<string>"
}
],
"pagination": {
"limit": 123,
"offset": 123,
"hasMore": true,
"nextOffset": 123
}
}Autorizações
Corpo
ID específico da mensagem para busca exata
"user123:r3EB0538"
ID do chat no formato internacional
"5511999999999@s.whatsapp.net"
Tipo da mensagem. Use call com limit e offset para o histórico de ligações.
"call"
Origem do rastreamento para filtrar mensagens
"chatwoot"
ID de rastreamento para filtrar mensagens
"msg_123456789"
Número máximo de mensagens a retornar (padrão 100, sem máximo). Para muitas mensagens, prefira páginas de até 1000 e avance com pagination.nextOffset.
x >= 120
Deslocamento para paginacao (0 retorna as mensagens mais recentes)
