---
title: "Recusar ligação no WhatsApp automaticamente e responder por mensagem (API)"
description: "Como recusar ligações no WhatsApp automaticamente pela API não oficial e responder por texto na hora, com horário comercial e link de chamada."
url: "https://wame.api.br/blog/recusar-ligacao-whatsapp-automatico-api"
language: "pt-BR"
og:type: "article"
published_time: "2026-09-28"
modified_time: "2026-09-28"
author: "Raphael Serafim"
keywords: "api whatsapp não oficial, api não oficial whatsapp, recusar ligação whatsapp automaticamente, rejeitar chamada whatsapp api, bloquear ligação whatsapp business, responder ligação whatsapp com mensagem, ligação whatsapp api"
reading_time: "8 min de leitura"
---

# Recusar ligação no WhatsApp automaticamente e responder por mensagem (API)

> Como recusar ligações no WhatsApp automaticamente pela API não oficial e responder por texto na hora, com horário comercial e link de chamada.

**Sim, dá para recusar ligações no WhatsApp automaticamente e responder por mensagem na hora: com a API não oficial da WAME, o evento de chamada chega no seu webhook, você recusa com `DELETE /{key}/call/{id}/{from}` e envia um texto com `POST /{key}/message/text` dizendo como a pessoa será atendida.** Em poucos segundos, uma ligação que ninguém ia atender vira uma conversa por escrito — que é onde a sua operação funciona.

Quem atende pelo WhatsApp conhece o problema: o cliente liga, ninguém pode atender, a ligação toca até cair e ele fica sem resposta. Pior ainda quando o número é de um bot ou de um sistema, sem ninguém do outro lado. Este guia mostra como montar a recusa automática com regras de horário e alternativa de chamada agendada.

## Por que recusar (e não só ignorar)

Deixar tocar parece inofensivo, mas tem três custos:

- **O cliente não sabe o que fazer.** Ele tenta de novo, desiste ou vai para o concorrente.
- **O atendente é interrompido.** Se o número está num aparelho da equipe, a ligação corta o fluxo de quem está respondendo por texto.
- **Números de sistema não têm quem atenda.** Uma instância que só envia notificação de pedido nunca vai atender, e o cliente merece saber disso.

Recusar e responder imediatamente resolve os três: a pessoa recebe uma explicação e um caminho, e ninguém da equipe é interrompido.

Esse tipo de controle é uma das vantagens práticas da [API não oficial do WhatsApp](/blog/api-nao-oficial-whatsapp): como a instância funciona como um aparelho conectado, ela enxerga as chamadas recebidas e pode agir sobre elas. Para ir além da recusa e **fazer** ligações pela API, veja [como fazer ligação pelo WhatsApp com a API não oficial](/blog/fazer-ligacao-whatsapp-api-nao-oficial).

## Como o fluxo funciona

1. Alguém liga para o número conectado na sua instância.
2. A WAME envia o **evento de chamada** para o webhook configurado, com o identificador da chamada e quem está ligando.
3. Seu código decide o que fazer (recusar, deixar tocar, recusar com link).
4. Se recusar, chama `DELETE /{key}/call/{id}/{from}`.
5. Envia a mensagem de texto para quem ligou.

Os nomes exatos dos campos do evento de chamada estão na [documentação](/docs). No exemplo abaixo, a função `lerChamada` isola esse ponto — é o único lugar que você ajusta ao payload real.

## Recusar a chamada

A recusa é um `DELETE` com o id da chamada e o JID de quem ligou na URL:

```bash
curl -X DELETE "https://server.wame.api.br/SUA_KEY/call/ID_DA_CHAMADA/5511999999999@s.whatsapp.net"
```

E a resposta por texto, logo em seguida:

```bash
curl -X POST "https://server.wame.api.br/SUA_KEY/message/text" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999999999",
    "text": "Oi! Por aqui a gente atende só por mensagem. Me conta o que você precisa que eu já te respondo 🙂"
  }'
```

Repare na ordem: primeiro recusa, depois escreve. Se a mensagem chegar enquanto o telefone ainda toca, ela passa despercebida.

## Webhook completo em Node.js

Um servidor Express que recebe o evento, aplica a regra e responde:

```js
import express from 'express';

const BASE = 'https://server.wame.api.br/SUA_KEY';
const app = express();
app.use(express.json());

// No formato meta, a chamada chega com field "call" e a lista em value.calls.
// `from` vem só com dígitos; `from_jid` traz o JID completo, que é o que
// a API usa para recusar ou atender.
function lerChamada(body) {
  const change = body?.entry?.[0]?.changes?.[0];
  if (change?.field !== 'call') return null;
  const chamada = change.value?.calls?.[0];
  if (!chamada || chamada.status !== 'offer') return null; // só a chamada chegando
  return { id: chamada.id, de: chamada.from_jid ?? chamada.from, numero: chamada.from };
}
// Se from_jid terminar em "@lid" (identificador interno do WhatsApp, não
// telefone), resolva o número com POST /{key}/contacts/resolve-lids antes do texto.

async function recusar(id, de) {
  await fetch(`${BASE}/call/${encodeURIComponent(id)}/${encodeURIComponent(de)}`, {
    method: 'DELETE',
  });
}

async function enviarTexto(to, text) {
  await fetch(`${BASE}/message/text`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ to, text }),
  });
}

app.post('/webhook/wame', async (req, res) => {
  // 200 imediato: webhook lento é reenviado, e o cliente
  // receberia a mesma mensagem duas vezes.
  res.sendStatus(200);

  const chamada = lerChamada(req.body);
  if (!chamada) return;

  await recusar(chamada.id, chamada.de);
  await enviarTexto(chamada.numero, mensagemPara(new Date()));
});

app.listen(3000);
```

Como o mesmo webhook também recebe mensagens, status e eventos de grupo, a guarda `if (!chamada) return` é o que impede o código de tentar recusar algo que não é ligação. E como webhooks podem ser reenviados, vale registrar os ids de chamada já tratados — detalhes em [webhook em produção: assinatura, retry e idempotência](/blog/webhook-producao-assinatura-retry-idempotencia).

## Regras de horário comercial

A mensagem certa depende da hora. Uma função simples resolve:

```js
function mensagemPara(agora) {
  const dia = agora.getDay();   // 0 = domingo
  const hora = agora.getHours();
  const expediente = dia >= 1 && dia <= 5 && hora >= 9 && hora < 18;

  if (expediente) {
    return 'Oi! No momento não conseguimos atender ligação, mas estamos online por aqui. ' +
      'Me conta o que você precisa que já te respondo.';
  }
  return 'Oi! Nosso horário é de segunda a sexta, das 9h às 18h. ' +
    'Deixa sua mensagem que a gente responde assim que abrir.';
}
```

Atenção ao fuso: se o servidor roda em UTC, converta para o horário de Brasília antes de comparar. É o erro mais comum nesse tipo de regra — a mensagem de "fechado" sai às 15h porque o servidor acha que são 18h.

Uma variação útil: **dentro do expediente, deixar tocar** e só recusar fora dele. Aí o `if` fica no webhook — se for horário comercial, você simplesmente não chama `recusar`, e um atendente atende no aparelho.

## Oferecer uma ligação em outro momento

Tem cliente que realmente precisa falar por voz. Em vez de fechar a porta, ofereça um link de chamada. A API tem dois caminhos:

**Gerar o link sem enviar**, para montar a mensagem do seu jeito:

```bash
curl -X POST "https://server.wame.api.br/SUA_KEY/message/create-call-link" \
  -H "Content-Type: application/json" \
  -d '{ "type": "audio" }'
```

**Gerar e já enviar** com uma legenda:

```bash
curl -X POST "https://server.wame.api.br/SUA_KEY/message/call-link" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "5511999999999",
    "type": "video",
    "caption": "Vamos conversar por vídeo? Entre por este link às 15h."
  }'
```

Outra saída é mandar um convite de evento com data e hora (`POST /{key}/message/event`), que o WhatsApp mostra como um card de agenda. Combina bem com atendimento consultivo: o cliente liga, recebe a recusa e, na mesma hora, um horário para a conversa.

## O que escrever na mensagem

A recusa automática só funciona se a mensagem for boa. Três regras:

- **Curta e humana.** Uma ou duas frases. Nada de "Prezado cliente, informamos que...".
- **Com um próximo passo claro.** "Me conta o que você precisa", "responda com o número do pedido", "clique no link para agendar".
- **Sem aproveitar para vender.** A pessoa ligou por um motivo. Transformar a recusa em anúncio irrita e gera denúncia — e a WAME não apoia spam em nenhuma forma.

Se quiser um toque a mais, antes do texto mande o indicador de "digitando" com `POST /{key}/message/presence` (`status: "composing"`). O guia de [presença "digitando" pela API](/blog/tutorial-presenca-digitando-whatsapp-api) mostra como.

## E o risco de bloqueio?

Recusar ligação é algo que qualquer pessoa faz no celular várias vezes por dia. Não é o que derruba número. O que derruba é comportamento de robô em escala: volume alto para quem não pediu, texto idêntico para milhares de contatos, rajadas sem pausa.

A resposta automática deste guia vai só para quem ligou — um contato que acabou de procurar você. É o cenário mais legítimo possível. Além disso, a WAME roda uma camada de proteção por trás de cada instância: identidade de dispositivo própria e coerente com o país do número, tempo de digitação e leitura com ritmo humano, limites de ritmo e reconexão espaçada. Por isso a taxa de bloqueio é muito baixa para quem usa do jeito certo — o que não significa zero, e nenhuma plataforma honesta promete isso.

Um lembrete necessário: a camada não oficial não é afiliada nem endossada pelo WhatsApp ou pela Meta, e o uso é de responsabilidade de quem envia. Se a sua operação precisa de garantia formal da Meta, compare as opções em [API oficial vs não oficial](/blog/whatsapp-api-oficial-vs-nao-oficial).

## Casos em que vale a pena

- **Número de notificações** (pedido, cobrança, agendamento): ninguém atende, então a recusa com explicação é obrigatória.
- **Bots de atendimento**: o cliente liga por hábito; a recusa o devolve ao fluxo por texto, onde o bot resolve.
- **Equipes pequenas**: a ligação interromperia quem está atendendo por escrito.
- **Fora do expediente**: a mensagem informa o horário e evita a sensação de abandono.

## Conclusão

Recusar ligação automaticamente é uma daquelas automações pequenas que melhoram muito a experiência: o cliente que ligaria para o nada recebe, em segundos, uma explicação e um caminho. Com a API não oficial da WAME são duas chamadas — `DELETE /{key}/call/{id}/{from}` e `POST /{key}/message/text` — e o resto é regra de negócio: horário, tom da mensagem e, quando fizer sentido, um link de chamada para outro momento. Hospedada e gerenciada, com 99,9% de uptime e suporte 24/7 em português, a instância cuida da conexão; você cuida da conversa. Os detalhes de cada endpoint estão na [documentação](/docs).

## Perguntas frequentes

### Dá para recusar ligação no WhatsApp automaticamente?

Sim. Com a API não oficial da WAME, a instância recebe o evento de chamada no webhook e você recusa com DELETE /{key}/call/{id}/{from}, usando o id da chamada e quem ligou. Em seguida envia uma mensagem de texto explicando como o atendimento funciona.

### Quem ligou fica sabendo que a chamada foi recusada?

Sim, a pessoa vê a chamada encerrada, como acontece quando alguém recusa pelo celular. Por isso a mensagem automática logo em seguida é importante: ela transforma uma recusa seca em um próximo passo claro.

### Posso recusar só fora do horário comercial?

Pode. A regra fica no seu código: ao receber o evento de chamada, você verifica dia e hora e decide se recusa com mensagem de fora do expediente, se recusa oferecendo um link de chamada agendada ou se deixa tocar para um atendente atender no aparelho.

### Como ofereço uma ligação em outro momento?

Gere um link de chamada com POST /{key}/message/create-call-link (tipo audio ou video) e envie na resposta, ou use POST /{key}/message/call-link, que já gera e envia o link para o contato com uma legenda.

### Recusar ligações automaticamente aumenta o risco de bloqueio?

Não pelo simples fato de recusar. O que pesa é o comportamento geral do número. Uma resposta curta, útil e só para quem ligou é atendimento legítimo. O que não faz sentido é aproveitar a recusa para empurrar promoção: a WAME não apoia spam.
