Como simular "digitando..." no WhatsApp pela API
Tutorial: como enviar presença de "digitando..." e "gravando áudio..." no WhatsApp pela API, para dar tempo de reação natural a respostas automáticas.
O endpoint de presença da API do WhatsApp manda o indicador de "digitando..." ou "gravando áudio..." para o contato antes da resposta chegar — um detalhe pequeno que muda como uma resposta automática é percebida. Este tutorial mostra como usar esse endpoint e quando o atraso deliberado vale a pena.
Por que simular presença importa
Uma resposta automática que chega em milissegundos, para uma pergunta que uma pessoa levaria alguns segundos para responder, tem um efeito sutil: sinaliza "isto é um robô" de um jeito que uma resposta com um pequeno atraso natural não sinaliza. Isso não é sobre enganar o cliente — é sobre não quebrar o ritmo esperado de uma conversa.
Esse cuidado combina com o que já vale para quando a IA deve parar de responder no WhatsApp: parte de fazer a automação funcionar bem é fazer ela se comportar de um jeito que não atrapalhe a experiência, e o ritmo da resposta é parte disso tanto quanto o conteúdo dela.
Vale notar que presença é um detalhe de percepção, não uma garantia de entrega — a mensagem real ainda depende do envio funcionar normalmente, com todo o tratamento de erro que uma automação de produção já deveria ter. Presença não substitui isso; ela só melhora a experiência de quem está do outro lado esperando.
Pré-requisitos
- Uma instância conectada com webhook recebendo mensagens.
- Uma automação de resposta já funcionando — presença é um complemento ao envio, não substitui a mensagem em si.
Passo a passo
1. Envie o estado de "digitando"
curl -X POST https://us.api-wa.me/{KEY}/message/presence \
-H "Content-Type: application/json" \
-d '{"to": "5511999999999", "presence": "composing"}'O contato vê o indicador de "digitando..." aparecer na conversa, do mesmo jeito que veria se uma pessoa estivesse escrevendo.
2. Espere um tempo proporcional à resposta
Depois de mandar o presence, aguarde antes de enviar a mensagem real. Um cálculo simples: 1 segundo de base mais um pequeno acréscimo por tamanho do texto, com um teto para não atrasar demais.
function tempoDigitando(texto) {
const base = 1000; // 1s mínimo
const porCaractere = 20; // 20ms por caractere
const teto = 4000; // nunca mais que 4s
return Math.min(base + texto.length * porCaractere, teto);
}3. Envie a mensagem depois do atraso
async function responderComDigitando(to, texto) {
await fetch(`https://us.api-wa.me/${KEY}/message/presence`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ to, presence: 'composing' }),
});
await new Promise((r) => setTimeout(r, tempoDigitando(texto)));
await fetch(`https://us.api-wa.me/${KEY}/message/text`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ to, text: texto }),
});
}4. Use "gravando áudio" para respostas em voz
Se a automação responde com nota de voz — como uma automação de transcrição que responde também em áudio — o mesmo endpoint aceita o estado equivalente antes de enviar o arquivo de áudio, sinalizando que uma gravação está a caminho em vez de um texto.
Mantendo o indicador visível em respostas mais longas
Para uma resposta que realmente demora — uma consulta a um sistema externo, uma chamada a um modelo de IA que leva alguns segundos — o indicador de "digitando" pode sumir antes da mensagem chegar, se o processamento passar do tempo padrão que o WhatsApp mantém o indicador ativo. Reenviar o presence periodicamente resolve isso:
async function manterDigitando(to, promessaDeResposta) {
const intervalo = setInterval(() => {
fetch(`https://us.api-wa.me/${KEY}/message/presence`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ to, presence: 'composing' }),
});
}, 4000);
try {
const texto = await promessaDeResposta;
return texto;
} finally {
clearInterval(intervalo);
}
}Esse padrão é especialmente relevante para automação que depende de uma transcrição de áudio com IA ou de uma consulta a um sistema externo antes de responder — processos que raramente terminam nos 2-3 segundos de uma resposta simples.
Diferença entre "composing" e outros estados de presença
O valor composing cobre tanto texto digitando quanto o estado equivalente de gravação, dependendo do contexto da automação — o parâmetro é o mesmo campo, e o que muda é o tipo de conteúdo que a sua aplicação pretende enviar em seguida. Vale manter consistência: se a automação vai responder em texto, dispare presence antes do envio de texto; se vai responder em áudio, o mesmo aviso prepara o usuário para o tipo certo de conteúdo que está por vir.
Quando não vale a pena atrasar
Presença simulada ajuda em conversa de atendimento, onde um pequeno atraso humaniza. Ela não ajuda em:
- Notificação transacional urgente — confirmação de pedido, alerta de segurança. Nesses casos, atraso deliberado só irrita quem está esperando uma informação objetiva.
- Resposta a comando explícito — se o cliente pediu "manda o cardápio", a expectativa é receber rápido, não esperar um "digitando" artificial.
- Alto volume automatizado — atraso multiplicado por milhares de conversas simultâneas soma tempo de processamento sem necessidade, sem ganho perceptível de naturalidade em escala.
Medindo o efeito antes de generalizar
Antes de aplicar presença simulada em toda a automação, vale testar num subconjunto de conversas e comparar CSAT ou taxa de resposta positiva entre quem recebeu com o indicador e quem recebeu sem. Times que pulam essa validação e aplicam globalmente correm o risco de adicionar atraso sem confirmar que o ganho de naturalidade realmente existe para o público específico deles — em alguns contextos B2B, por exemplo, o cliente pode preferir a resposta mais rápida possível a qualquer simulação de comportamento humano.
Um jeito simples de medir sem infraestrutura extra: alternar o comportamento por dia da semana ou por faixa de horário, e comparar o mesmo tipo de métrica usada em métricas de campanha no WhatsApp — taxa de resposta é o sinal mais direto de que o ritmo da conversa está funcionando bem.
Erros comuns
Atraso longo demais. Mais de 8-10 segundos de "digitando" sem a mensagem chegar tende a gerar ansiedade, não naturalidade — o efeito contrário do pretendido.
Mandar presence e esquecer de enviar a mensagem. Se o passo seguinte falhar (erro de rede, exceção não tratada), o indicador de digitando aparece e nada chega depois — pior do que não ter mandado presence nenhuma.
Aplicar em toda automação sem critério. Como qualquer detalhe de UX, presença simulada vale para conversa que parece humana; em fluxo claramente identificado como automação (menu numerado, bot institucional), o efeito de naturalidade se perde e vira só atraso sem propósito.
Calcular o atraso com um valor fixo para qualquer resposta. Uma resposta de uma palavra e uma resposta de três parágrafos não deveriam ter o mesmo tempo de "digitando" — um atraso fixo de 3 segundos para tudo soa artificial de um jeito diferente, mas ainda artificial. O cálculo proporcional ao tamanho do texto, mostrado no passo 2, evita esse problema com pouco código a mais.
Aplicando em diferentes canais
Como a WAME API atende WhatsApp, Instagram e Messenger na mesma instância, vale verificar se o indicador de presença está disponível no canal específico antes de aplicar a mesma lógica de atraso em todos — cada plataforma trata esse tipo de sinal de forma um pouco diferente do lado do usuário final, mesmo quando o endpoint de envio é compartilhado entre os três.
Próximos passos
Presença combina bem com responder mensagem citada pela API, no mesmo fluxo de automação de resposta. Para o restante do ciclo de vida de uma mensagem automática, veja também editar, apagar e encaminhar mensagem pela API.
Pronto para automatizar seu WhatsApp?
Crie sua conta gratuita e comece a enviar mensagens pela API em minutos.
Começar grátisPerguntas frequentes
O que é o endpoint de presença da API do WhatsApp?+
É o endpoint que envia o indicador visual de "digitando..." ou "gravando áudio..." para o contato, antes da mensagem de fato chegar — o mesmo indicador que aparece quando uma pessoa está escrevendo no app.
Por que um bot precisaria simular que está digitando?+
Resposta instantânea demais, para uma pergunta que parece exigir pensar, soa artificial e denuncia automação de um jeito que incomoda parte dos usuários. Um pequeno atraso com o indicador de digitando aproxima o ritmo da resposta automática do ritmo de uma conversa humana.
Quanto tempo devo esperar entre mandar 'digitando' e a mensagem real?+
Não há um valor fixo certo, mas 1 a 3 segundos para uma resposta curta e proporcional ao tamanho da resposta para textos mais longos costuma soar natural. Atraso maior que 8-10 segundos tende a frustrar quem está esperando, mesmo que pareça mais "humano".
Preciso mandar 'parar de digitar' antes de enviar a mensagem?+
Não é obrigatório — o indicador some sozinho quando a mensagem chega ou depois de alguns segundos de inatividade. Mas, se a resposta for demorar mais do que o esperado, reenviar o presence periodicamente mantém o indicador visível em vez de sumir no meio da espera.
Presença funciona para chamada de áudio (gravando) também?+
Sim, o mesmo endpoint aceita o estado de "gravando áudio", útil quando a resposta automática vai enviar uma nota de voz — por exemplo, numa automação de transcrição e resposta em áudio.
Continue lendo
Coexistência e a nova cobrança do WhatsApp: o que muda para quem atende pelo celular e pela API
Quem usa Coexistência (API oficial + celular) sente a nova cobrança de agosto e outubro de 2026 de um jeito específico. Veja o que é cobrado e o que continua grátis.
Como simular o custo da nova cobrança do WhatsApp antes de outubro de 2026
Passo a passo para medir, via webhook e API de analytics da Meta, quantas mensagens de serviço e de Business Agent seu número gera hoje — antes da cobrança começar.
Automatizar grupos de WhatsApp pela API: guia completo
Como automatizar grupos de WhatsApp pela API: criar, adicionar participante, moderar entrada e enviar aviso automático, com exemplos práticos em cURL.