Pular para o conteúdo principal

Consultar os registros de WhatsApp de um processo

GET/whatsapp/recordschave públicapuk_

Este serviço retorna o histórico completo de conversas do WhatsApp de um processo da Auco: as mensagens que o bot da Auco enviou ao participante, as respostas do participante e os status de entrega informados pelo WhatsApp.

A resposta é um array plano em ordem cronológica crescente, sem paginação e sem filtros. Se o processo não teve atividade no WhatsApp, o array volta vazio ([]).

O que esta página cobre

Esta página documenta como consultar o histórico de mensagens, e não como configurar o WhatsApp como canal de assinatura ou notificação. Para habilitar o fluxo de assinatura por WhatsApp (options.whatsapp, options.both), consulte Validações de identidade.


Autenticação​

Inclua sua chave pública no cabeçalho Authorization.

Authorization: puk_xxx...

Parâmetros de consulta​

NomeTipoDescrição
codeString obrigatórioCódigo do processo. Mínimo de 9 caracteres. Seu comprimento determina o tipo de processo consultado.
userIdString condicionalIdentificador do participante dentro do processo. Obrigatório para processos de assinatura e não permitido para AucoFace.
Os registros são por participante

Não é possível obter um processo completo com vários signatários em uma única chamada: você deve consultar participante por participante e combinar os resultados na sua integração.


🧩 Tipos de processo suportados​

O comprimento de code determina qual tipo de processo a Auco consulta e se userId é obrigatório.

ComprimentoTipo de processouserIdOnde obter os identificadores
9Contratoobrigatóriocode e signProfile[].id de GET /document
10Documentoobrigatóriocode e signProfile[].id de GET /document
16Validação de identidade (AucoFace)não permitidocode de GET /veriface
24Pacote de documentosobrigatórioo id do pacote e signers[].userId

Os processos AucoFace têm um único participante, por isso não recebem userId.


🧪 Exemplos de uso​

dica

Você pode copiar qualquer um dos exemplos conforme a sua linguagem preferida.

🔹 Processo de assinatura (code e userId)​

curl --location 'https://api.auco.ai/v1.5/ext/whatsapp/records?code=CODEDOCUM&userId=01' \
--header 'Authorization: puk_yourPublicKey'

🔸 Processo AucoFace (somente code)​

curl --location 'https://api.auco.ai/v1.5/ext/whatsapp/records?code=VERIFACECODE1234' \
--header 'Authorization: puk_yourPublicKey'

📥 Exemplos de resposta​

🔹 Conversa com mensagens enviadas e recebidas​

[
{
"entity": "auco",
"phone": "+573001234567",
"message": "👋🏼 Hola Juan, has sido invitado a firmar un documento creado por ACME...",
"date": 1746028800000,
"actions": [
{ "action": "sent", "timestamp": 1746028800000 },
{ "action": "delivered", "timestamp": 1746028805000 },
{ "action": "read", "timestamp": 1746028860000 }
]
},
{
"entity": "signer",
"phone": "+573001234567",
"message": "comenzar",
"date": 1746028900000
},
{
"entity": "auco",
"phone": "+573001234567",
"message": "Este es el documento, recuerda que debes leerlo en su *totalidad*.",
"date": 1746028950000,
"actions": [
{ "action": "sent", "timestamp": 1746028950000 },
{ "action": "delivered", "timestamp": 1746028952000 }
]
},
{
"entity": "signer",
"phone": "+573001234567",
"message": "Completo el formulario",
"date": 1746029050000
}
]

As mensagens recebidas neste exemplo mostram os dois casos que você pode encontrar. O segundo registro, comenzar, é o texto de um botão que o participante tocou. O último, Completo el formulario, não é algo que o participante digitou: é a referência sob a qual uma de suas ações dentro do fluxo foi registrada. Esse texto é descritivo e varia conforme o processo, portanto não dependa dele para detectar ações na sua integração.

Por que os exemplos estão em espanhol

Os valores de message nestes exemplos são literais do canal WhatsApp, que opera no idioma do próprio participante. A API não os localiza.

🔸 Mensagem que não pôde ser entregue​

[
{
"entity": "auco",
"phone": "+573001234567",
"message": "👋🏼 Hola Juan, has sido invitado a firmar un documento creado por ACME...",
"date": 1746028800000,
"actions": [
{ "action": "sent", "timestamp": 1746028800000 },
{
"action": "failed",
"timestamp": 1746028802000,
"errors": ["WHATSAPP_NUMBER_NOT_REGISTERED"]
}
]
}
]

🔸 Processo sem atividade no WhatsApp​

[]

📋 Campos da resposta​

CampoTipoDescrição
entityStringSempre presente. auco = mensagem enviada pelo bot da Auco. signer = mensagem recebida, enviada pelo participante.
phoneStringSempre presente. Número de telefone do participante em formato internacional, com código do país e o sinal +.
messageStringSempre presente. Texto simples, já renderizado: os modelos do WhatsApp chegam com suas variáveis substituídas.
dateNumberSempre presente. Timestamp epoch em milissegundos.
actionsArray<Object>Opcional. Somente em mensagens com status de entrega informados pelo WhatsApp. As mensagens do participante (entity: "signer") não o incluem.
actions[].actionStringStatus de entrega: sent, delivered, read ou failed.
actions[].timestampNumberTimestamp epoch em milissegundos do momento em que o WhatsApp informou o status.
actions[].errorsArray<String>Opcional. Somente quando action é failed. Contém os motivos da falha.
Datas em milissegundos

Tanto date quanto actions[].timestamp estão em milissegundos, não em segundos. Por exemplo, 1746028800000 corresponde a 2025-04-30T16:00:00.000Z. Se a linguagem da sua integração espera segundos, divida o valor por 1000.

Não compare message com um texto fixo

A resposta não inclui URLs de mídia nem arquivos. Quando o participante envia um anexo ou realiza uma ação dentro do fluxo, o registro armazena uma referência textual a essa ação (por exemplo, algo como Completo el formulario) em vez do conteúdo em si.

Esse texto é descritivo, não um identificador: depende do fluxo do processo, pode ser personalizado e pode mudar. Além disso, vem do canal WhatsApp no idioma do participante e não é localizado pela API. Se a sua integração precisa reagir a ações específicas, não a construa comparando o conteúdo de message.

Para baixar os arquivos enviados pelo participante, use Consultar processo e anexos.


🔄 Status de entrega (actions[].action)​

StatusDescrição
sentA Auco entregou a mensagem ao WhatsApp e o WhatsApp a aceitou para envio.
deliveredO WhatsApp confirmou que a mensagem chegou ao dispositivo do participante.
readO participante abriu a mensagem.
failedO WhatsApp não conseguiu entregar a mensagem; o motivo está em actions[].errors.

Os status são cumulativos e chegam na ordem em que o WhatsApp os informa. Uma mensagem pode permanecer em sent se o participante tiver desativado a confirmação de leitura.


🚫 Motivos de falha (actions[].errors)​

Estes códigos não são códigos HTTP: a requisição pode retornar 200 e ainda assim conter mensagens com status failed.

CódigoDescrição
WHATSAPP_RATE_LIMITO limite de mensagens permitido pelo WhatsApp na janela de tempo atual foi excedido.
WHATSAPP_NUMBER_NOT_REGISTEREDO número do participante não está registrado no WhatsApp.
WHATSAPP_NO_ACTIVE_CONVERSATIONNão há conversa ativa; o WhatsApp não permite mensagens fora de modelo.
WHATSAPP_UNSUPPORTED_MESSAGE_TYPEO WhatsApp rejeitou o tipo de mensagem.
WHATSAPP_TEMPLATE_NOT_FOUNDO modelo utilizado não existe.
WHATSAPP_TEMPLATE_PAUSEDO modelo está pausado pelo WhatsApp.
WHATSAPP_TEMPLATE_DISABLEDO modelo foi desativado pelo WhatsApp.
WHATSAPP_SERVICE_UNAVAILABLEO serviço do WhatsApp estava indisponível.
WHATSAPP_NUMBER_NOT_ACTIVEO número de envio da Auco não estava ativo.
WHATSAPP_SEND_ERRORErro de envio não classificado.

⚠️ Respostas de erro​

CódigoDescrição
400Erro de validação ou processo não encontrado: CODE_REQUIRED (code ausente), CODE_NOT_VALID (code com menos de 9 caracteres), USER_ID_REQUIRED (userId ausente em um processo de assinatura), USER_ID_NOT_ALLOWED (userId enviado em um processo AucoFace) e PROCESS_NOT_FOUND
401Autenticação inválida ou ausente

PROCESS_NOT_FOUND é retornado quando o processo não existe, não pertence à sua organização, o participante não faz parte do processo ou o processo AucoFace não usou o WhatsApp como canal.

Processos AucoFace concluídos pela web

Um processo AucoFace concluído pela web, sem o canal WhatsApp, retorna PROCESS_NOT_FOUND em vez de um array vazio.