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 mensajes en un chat
Busca mensajes con múltiples filtros disponibles. Este endpoint permite:
- Búsqueda por ID específico: Use
idpara encontrar un mensaje exacto - Filtrar por chat: Use
chatidpara mensajes de una conversación específica - Filtrar por seguimiento: Use
track_sourceytrack_idpara mensajes con datos de tracking - Historial de llamadas: Use solo
messageType: call,limityoffsetpara listar las llamadas más recientes. La respuesta puede incluircallPeer(identidad conocida del contacto) ycontent.isVideo. - Estados de los contactos: Use
chatid: status@broadcastpara los Estados recibidos, incluso sin el webhookstatus_posts. Sin esechatid, la búsqueda no devuelve Estados. Se guardan durante 24 horas, como en WhatsApp (la limpieza se ejecuta una vez al día, así que filtre pormessageTimestampsi necesita el corte exacto), y el Estado que el autor elimina sale de la lista. Cada uno viene con el autor ensender_pn,sender_lidysender_image_preview_url(foto, cuando se conoce) y, en los de imagen, video o enlace, con la miniatura encontent.JPEGThumbnail. Descargue el contenido multimedia mediante/message/download. Un Estado que no se pudo abrir viene conmessageType: errory solo el ID, el autor y la hora. Estados de grupo (enviados y recibidos) quedan en la conversación de cada grupo conmessageType: GroupStatusMessagey el texto entext: liste todos conmessageType: GroupStatusMessage, sinchatid. Expiran en 24 horas, como los demás Estados. - Limitar resultados: Use
limitpara controlar cuántos mensajes devolver - Ordenamiento: Resultados ordenados por fecha (más recientes primero)
Fuera de los Estados, los mensajes guardados solo incluyen en content las
miniaturas en base64 que no tienen copia en el servidor (vista previa de enlace sin
copia, ubicación, anuncio, invitaciones); las de contenido multimedia que puede descargarse
de nuevo (JPEGThumbnail y similares) llegan solo en el webhook, en el momento del mensaje.
En los mensajes enviados por la API en los últimos 7 días, sendPayload contiene la
solicitud de envío, sin los archivos en base64 (los enlaces sí se incluyen). Después del envío (en
conversación individual, 1 hora después), el archivo en base64 guardado se convierte en el
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
}
}Autorizaciones
Cuerpo
ID específico del mensaje para búsqueda exacta
"user123:r3EB0538"
ID del chat en formato internacional
"5511999999999@s.whatsapp.net"
Tipo del mensaje. Use call con limit y offset para el historial de llamadas.
"call"
Origen de rastreo para filtrar mensajes
"chatwoot"
ID de seguimiento para filtrar mensajes
"msg_123456789"
Número máximo de mensajes a devolver (predeterminado 100, sin máximo). Para muchos mensajes, se recomiendan páginas de hasta 1000 y avanzar con pagination.nextOffset.
x >= 120
Desplazamiento para paginación (0 devuelve los mensajes más recientes)
