Endpoint
GET https://pilotstatus.com.br/v1/messages/history
Requer uma chave de API com escopo de número (
ps_*) no cabeçalho x-api-key. Chaves com escopo de tenant retornam 403. Você também pode identificar a chave com x-api-key-id: <api_key_id>.Todos os provedores suportados: este endpoint funciona tanto para números não oficiais (Pilot Status web) quanto para números oficiais da Meta Cloud API.Parâmetros de query
Data/hora ISO 8601. Filtra mensagens com
providerTimestamp em ou após esta data.Data/hora ISO 8601. Filtra mensagens com
providerTimestamp em ou antes desta data.Número da página (≥ 1).
Resultados por página (1–100).
startDate quanto endDate são opcionais individualmente. Quando fornecidos, cada um deve ser uma string ISO 8601 válida e startDate não pode ser posterior a endDate; caso contrário, 400 INVALID_DATE_RANGE é retornado.
Os resultados são ordenados por providerTimestamp de forma decrescente (mais recentes primeiro). O endpoint retorna até aproximadamente um mês de histórico armazenado, contado a partir da data de conexão do número.
Efeito do modo PII
A resposta depende do modo PII configurado para o número (definido viaPATCH /api/whatsapp-numbers/[id]). Os limites da query vêm exclusivamente dos seus startDate/endDate — a janela PII não é aplicada à query. Em vez disso, as linhas que ficam fora da janela de retenção ainda são retornadas, porém redigidas: a linha está presente (indexada pelo seu providerTimestamp) com redacted: true e com text, media, participantName e participantPhone nulos.
| Modo PII | Efeito |
|---|---|
STORE_INDEFINITE (padrão) | Todas as mensagens são retornadas na íntegra (sujeitas aos filtros de data). |
STORE_X_DAYS | Mensagens dos últimos N dias são retornadas na íntegra. Mensagens mais antigas que piiRetentionDays são retornadas redigidas (redacted: true, com text/media/participantName/participantPhone nulos), indexadas pelo providerTimestamp. |
RELAY_ONLY | Toda mensagem é retornada redigida (redacted: true, com conteúdo/mídia/contraparte nulos) e a resposta inclui um campo notice: "PII_RELAY_ONLY". |
Exemplo
Campos do objeto de mensagem (ChatMessageDTO)
ID interno da mensagem no Pilot Status.
ID da conversa pai (direta ou em grupo).
"INBOUND" (recebida) ou "OUTBOUND" (enviada).Provedor que processou a mensagem (
PILOT_STATUS, META, …).ID da mensagem no provedor (ex.:
wamid da Meta) quando disponível.Status da mensagem (
QUEUED, SENT, DELIVERED, READ, FAILED, …).text, image, audio, video, document, location, contacts, sticker ou reaction.Origem de uma mensagem enviada (ex.:
APP, API) quando disponível.Texto ou legenda da mensagem quando disponível.
Nome de exibição do WhatsApp da contraparte/remetente quando disponível.
Contraparte/remetente no formato E.164 quando disponível.
externalMessageId da mensagem à qual esta responde, quando disponível.Descritor de mídia
{ provider, id, url, mimeType, fileName } quando a mensagem carrega mídia; null caso contrário.media.provider— o provedor que entregou a mídia —"META"para números da Meta Cloud API, ou uma tag interna de provedor para números não oficiais.media.id— ID de mídia da Meta. Definido em númerosMETA— passe-o paraGET /v1/media/{mediaId}para baixar os bytes;nullpara números não oficiais.media.url— URL de download direto quando disponível. Mídia recebida da META é espelhada no S3 (portanto mensagens META geralmente carregam tantoidquantourl); o provedor não oficial fornece seu próprio link. Melhor esforço — pode sernull.media.mimeType— Tipo MIME da mídia quando conhecido (pode sernull).media.fileName— Nome do arquivo de mídia quando conhecido (pode sernull).
true quando a linha fica fora da janela de retenção de PII do número (ou o número está em RELAY_ONLY). Linhas redigidas mantêm seu id, providerTimestamp e os metadados de entrega, mas text, media, participantName e participantPhone são null.ISO 8601 — quando a mensagem foi enviada.
ISO 8601 — quando a mensagem foi entregue.
ISO 8601 — quando a mensagem foi lida (apenas quando as confirmações de leitura estão habilitadas).
ISO 8601 — timestamp do provedor para a mensagem (chave de ordenação).
ISO 8601 — quando o registro foi criado no Pilot Status.
Erros comuns
400 INVALID_DATE_RANGE—startDateouendDatenão é uma string ISO 8601 válida, oustartDate > endDate.400 NUMBER_NOT_FOUND— a chave de API não está vinculada a um número de WhatsApp.401— cabeçalhox-api-keyausente ou inválido.403— chave com escopo de tenant utilizada (é necessária uma chave com escopo de número).