Como criar um agente de IA para atender clientes no WhatsApp (com a API oficial)

Tutorial passo a passo para criar um agente de IA no WhatsApp com a API oficial da Meta: conta, webhook, código em Python e custos reais em reais.

Por Daniel Silvestre•Publicado em •13 min de leitura•Inteligência Artificial
#agente de ia#whatsapp#atendimento ao cliente#api oficial#tutorial#automação#brasil
Daniel Silvestre

Daniel Silvestre

CEO e Fundador

Especialista em inteligência artificial e transformação digital. Mais de 10 anos ajudando empresas brasileiras a implementar soluções de analytics e IA.

Ver perfil e outros artigos
Como criar um agente de IA para atender clientes no WhatsApp (com a API oficial)

Sábado, 22h47. Um cliente manda mensagem no WhatsApp da loja perguntando se determinado produto tem em estoque e se dá para retirar no domingo. Em oito segundos chega uma resposta: tem estoque, a loja abre às 9h, e o pedido já fica separado no balcão com o nome dele. Não tem ninguém no caixa nem no celular da empresa. Quem respondeu foi um agente de IA para WhatsApp, rodando na API oficial da Meta, a um custo de centavos por conversa.

Este é o primeiro post de uma série mais técnica do blog: tutoriais de verdade, com código, para quem sabe programar o básico e quer colocar IA em produção sem depender de plataforma pronta. Aqui você vai montar esse agente do zero: conta na Meta, webhook em Python, conexão com o modelo de IA e deploy, com a conta de custos aberta no final.

Um recorte importante antes de começar: o tutorial cobre atendimento receptivo, ou seja, o cliente inicia a conversa e o agente responde. Disparo ativo de mensagens (campanhas, cobranças, notificações) segue outras regras e outros custos, e fica para outro post.

O que você vai construir (e o que precisa saber antes)

A arquitetura tem quatro peças. O cliente manda mensagem no WhatsApp; a Cloud API da Meta recebe e repassa para o seu webhook (um pequeno servidor Python); o webhook monta o contexto da conversa e pergunta ao modelo de IA o que responder; a resposta volta pelo mesmo caminho até o cliente. Nada além disso: sem fila, sem banco de dados, sem orquestrador. É o mínimo que funciona, e é suficiente para um agente de verdade em produção.

O que você precisa ter:

  • Python básico: ler e adaptar uns 80 linhas de código com FastAPI.
  • Uma conta no Meta for Developers, vinculada a uma conta Meta Business da empresa.
  • Um número de telefone que não esteja registrado em nenhum WhatsApp (nem app, nem Business). A API "consome" o número: ele deixa de funcionar no aplicativo. Essa é a pegadinha que mais trava iniciantes, e falo dela de novo na parte de produção.
  • Uma chave de API de um modelo de IA (uso a da Anthropic no exemplo; o padrão vale para qualquer modelo).

Tempo estimado: uma tarde para o agente respondendo no número de teste, mais alguns dias de espera da Meta para verificar o negócio e liberar o número definitivo.

Por que a API oficial (e não a Evolution API)

A maioria dos tutoriais brasileiros ensina a montar bots de WhatsApp com APIs não oficiais, como a Evolution API, que funcionam por engenharia reversa do WhatsApp Web: você escaneia um QR code e o sistema finge ser um navegador conectado. É a rota popular porque, durante anos, a API oficial era cara e burocrática. Esses dois argumentos envelheceram mal.

O custo caiu muito no caso de atendimento. Desde julho de 2025 a Meta cobra por mensagem, e não mais por conversa, e nessa tabela as mensagens de serviço são gratuitas e sem limite: toda resposta que a sua empresa manda dentro da janela de 24 horas após a última mensagem do cliente não custa nada. O que se paga são mensagens iniciadas pela empresa (marketing, utilidade, autenticação), que não fazem parte deste tutorial.

Atenção a uma mudança com data marcada: a partir de 1º de outubro de 2026 a Meta passa a cobrar também as mensagens de serviço, conforme a documentação oficial de preços. Os valores citados neste tutorial são os de agosto de 2026 e a conta muda a partir dessa data. O passo a passo para calcular a sua exposição está em novas tarifas do WhatsApp em outubro de 2026. O argumento de risco a seguir, esse, não muda.

Já o risco das APIs não oficiais só cresceu. Elas violam os termos comerciais do WhatsApp, e a Meta vem intensificando a detecção e o banimento de números conectados por clientes não oficiais. Para um projeto pessoal, é um risco que você pode escolher correr. Para o canal de atendimento de uma empresa, não é.

Número banido em API não oficial é o WhatsApp comercial da empresa fora do ar, sem prazo nem garantia de recuperação.

Passo 1: prepare a conta na Meta e mande a primeira mensagem

1. Crie o app no Meta for Developers

Em developers.facebook.com, crie um app do tipo Business e adicione o produto WhatsApp a ele. A Meta gera automaticamente um número de teste e um token de acesso temporário (validade de 24 horas, suficiente para desenvolver).

2. Cadastre seu celular como destinatário de teste

O número de teste pode conversar com até 5 números cadastrados. Adicione o seu celular pessoal na lista de destinatários e confirme o código que chega por WhatsApp.

3. Mande o primeiro "olá" via cURL

Na própria tela do produto WhatsApp, a Meta mostra um comando cURL pronto. Ele tem esta forma:

bash
curl -X POST "https://graph.facebook.com/v23.0/SEU_PHONE_NUMBER_ID/messages" \
  -H "Authorization: Bearer SEU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"messaging_product": "whatsapp", "to": "5511999999999", "type": "text", "text": {"body": "Olá! Agente no ar."}}'

Se a mensagem chegou no seu celular, a metade burocrática do projeto acabou. O resto é código.

Passo 2: o webhook que recebe as mensagens

Para o agente responder, a Meta precisa avisar o seu servidor sempre que chega mensagem. Isso é o webhook: uma URL sua que a Meta chama. São dois comportamentos no mesmo endpoint.

O primeiro é a verificação: ao cadastrar a URL, a Meta faz um GET com um token combinado e um desafio (hub.challenge), e espera o desafio de volta. Serve para provar que a URL é sua. O segundo é o recebimento: cada mensagem nova chega num POST com um JSON grande, do qual interessam três campos: quem mandou (from), o texto (text.body) e o id da mensagem.

python
from fastapi import FastAPI, Request, Response

app = FastAPI()
VERIFY_TOKEN = "um-segredo-que-voce-inventa"

@app.get("/webhook")
async def verificar(request: Request):
    params = request.query_params
    if params.get("hub.verify_token") == VERIFY_TOKEN:
        return Response(content=params.get("hub.challenge"))
    return Response(status_code=403)

@app.post("/webhook")
async def receber(request: Request):
    payload = await request.json()
    try:
        msg = payload["entry"][0]["changes"][0]["value"]["messages"][0]
        telefone, texto = msg["from"], msg["text"]["body"]
    except (KeyError, IndexError):
        return {"status": "ignorado"}  # status de entrega, não mensagem
    resposta = gerar_resposta(telefone, texto)   # passo 3
    enviar_whatsapp(telefone, resposta)          # passo 3
    return {"status": "ok"}

Em desenvolvimento, exponha o servidor local com ngrok (ngrok http 8000) e cadastre a URL gerada no painel da Meta, marcando o evento messages. Mande um oi do seu celular e veja o JSON chegar no terminal.

Passo 3: plugue a inteligência

Até aqui você tem um eco burro. O agente nasce de três coisas: um system prompt bem escrito, memória da conversa e a chamada ao modelo.

O system prompt é o funcionário que você contrata

Imagine uma loja de suplementos com 500 pedidos por mês (cenário hipotético; troque pelos dados do seu negócio). O prompt define persona, escopo e, principalmente, os limites:

python
SYSTEM_PROMPT = """Você é a atendente virtual da loja Suplementos Silva.
Responda em português, em tom simpático e direto, mensagens curtas.

Você sabe: horário (seg-sáb 9h-19h), endereço, política de troca (7 dias
com nota), formas de pagamento e a tabela de produtos abaixo.

Regras inegociáveis:
- Nunca invente preço, prazo ou estoque. Sem certeza? Diga que vai
  confirmar com a equipe.
- Não prometa nada fora desta lista.
- Se o cliente pedir um humano, ou você não souber resolver, responda:
  "Vou te transferir para nossa equipe, um momento" e pare de responder.

Tabela de produtos: [...]"""

Memória e chamada ao modelo

Para um MVP, um dicionário em memória guardando o histórico por telefone resolve; a versão com banco de dados fica para o próximo post da série. A chamada ao modelo manda o histórico inteiro mais a mensagem nova, e o envio da resposta reaproveita o mesmo endpoint do cURL do passo 1:

python
import os, httpx, anthropic

client = anthropic.Anthropic()  # lê ANTHROPIC_API_KEY do ambiente
historico: dict[str, list] = {}

def gerar_resposta(telefone: str, texto: str) -> str:
    conversa = historico.setdefault(telefone, [])
    conversa.append({"role": "user", "content": texto})
    resposta = client.messages.create(
        model="claude-haiku-4-5",
        max_tokens=1024,
        system=SYSTEM_PROMPT,
        messages=conversa,
    )
    conteudo = resposta.content[0].text
    conversa.append({"role": "assistant", "content": conteudo})
    return conteudo

def enviar_whatsapp(telefone: str, texto: str):
    httpx.post(
        f"https://graph.facebook.com/v23.0/{os.environ['PHONE_NUMBER_ID']}/messages",
        headers={"Authorization": f"Bearer {os.environ['WHATSAPP_TOKEN']}"},
        json={"messaging_product": "whatsapp", "to": telefone,
              "type": "text", "text": {"body": texto}},
    )

Pronto: mande "vocês abrem domingo?" do seu celular e o agente responde com base no prompt. É aqui que muitas empresas travam achando que acabou. Faltam duas coisas que separam demo de produção.

A janela de 24 horas é uma regra de design

O agente só responde em texto livre dentro de 24 horas após a última mensagem do cliente. Fora da janela, a empresa só pode mandar templates pré-aprovados, pagos por mensagem. Consequência prática: desenhe o agente para resolver dentro da conversa, sem depender de "te respondo amanhã". Follow-up ativo é outro projeto.

Passo 4: produção sem sustos

Quatro mudanças levam o MVP para o mundo real:

  1. Token permanente. O token de teste morre em 24 horas. Crie um system user na conta Business (em business.facebook.com, seção usuários do sistema) e gere um token sem expiração com permissão whatsapp_business_messaging.
  2. Número real e verificação do negócio. Cadastre o número definitivo (aquele que não está em nenhum WhatsApp) e passe pela verificação da empresa na Meta, com CNPJ e documentos. O processo leva de horas a alguns dias e libera limites maiores de conversa.
  3. Deploy do webhook. Qualquer serviço simples serve; Railway é um caminho feliz: conecta no GitHub, faz deploy do FastAPI e entrega uma URL HTTPS estável para substituir o ngrok.
  4. Log e alerta. Guarde o registro das conversas (você vai precisar para melhorar o prompt) e configure um alerta mínimo para erros da API.

E um parágrafo que não é opcional: conversa de cliente é dado pessoal sob a LGPD. Informe no primeiro contato que o atendimento é feito por assistente virtual, colete apenas o necessário, defina prazo de retenção dos históricos e nunca mande esses dados para ferramentas de analytics. Regras de escalonamento para humano e limites do que o agente pode prometer são parte da mesma disciplina; tratei disso em detalhe no post sobre governança de agentes de IA.

Quanto custa por mês (a conta aberta)

Cenário hipotético: 1.000 conversas de atendimento por mês, média de 6 trocas de mensagem cada, sempre iniciadas pelo cliente. Aos preços de agosto de 2026:

Esta conta vale até 30 de setembro de 2026: a partir de 1º de outubro a Meta passa a cobrar as mensagens de serviço que hoje são gratuitas, e até 9 de setembro de 2026 não tinha publicado a nova tarifa.

  • WhatsApp: R$ 0 até 30 de setembro de 2026. Atendimento receptivo dentro da janela de 24 horas não paga nada à Meta na tabela vigente até essa data. A partir de 1º de outubro passa a pagar, e as 6.000 mensagens deste cenário viram linha na fatura: entre R$ 210 e R$ 420 por mês nas estimativas de fornecedores que circulavam em setembro de 2026, nenhuma delas oficial. Refaça a conta com a tabela definitiva seguindo novas tarifas do WhatsApp em outubro de 2026.
  • Modelo de IA: na casa de R$ 30 a R$ 60. Com um modelo rápido como o Claude Haiku 4.5 (US$ 1 por milhão de tokens de entrada e US$ 5 por milhão de saída), 1.000 conversas com histórico consomem algo como 5 milhões de tokens de entrada e meio milhão de saída: perto de US$ 8 no mês.
  • Hospedagem: R$ 30 a R$ 60. O plano de entrada de serviços como Railway ou Render roda esse webhook com folga.

Total: menos de R$ 150 por mês para um canal que atende 24 horas até 30 de setembro de 2026, e algo entre R$ 270 e R$ 540 a partir de outubro, dependendo da tarifa que a Meta publicar. Plataformas prontas de agente para WhatsApp cobram tipicamente algumas centenas de reais mensais pelo mesmo volume, e faz sentido pagar por elas quando não há ninguém técnico no time; o ponto do tutorial é que a barreira técnica é menor do que o mercado faz parecer. Todos esses preços mudam com frequência, então refaça a conta com as tabelas vigentes antes de decidir.

Perguntas frequentes

Posso usar o número de WhatsApp que a empresa já usa hoje?

Pode, mas ele precisa ser desvinculado do aplicativo antes (apague a conta no app, espere a liberação e cadastre na API). O número deixa de funcionar no celular: todo o atendimento passa a acontecer via API. O histórico de conversas do aplicativo não migra, então exporte o que for importante antes.

O agente pode mandar a primeira mensagem para o cliente?

Só com templates pré-aprovados pela Meta e pagando por mensagem enviada (a categoria marketing custa cerca de US$ 0,06 por mensagem no Brasil na tabela de agosto de 2026). O modelo barato deste tutorial é o receptivo: o cliente inicia e o agente responde na janela de 24 horas, sem custo de template. As mensagens de serviço passam a ser cobradas em 1º de outubro de 2026.

Preciso verificar minha empresa na Meta para começar?

Para desenvolver, não: o número de teste funciona sem verificação, com até 5 destinatários. Para produção, sim: a verificação do negócio (CNPJ e documentos) libera o número definitivo e aumenta progressivamente o limite de conversas diárias.

Usando a API oficial ainda existe risco de banimento?

O risco de banimento por usar cliente não autorizado desaparece, porque você está no canal oficial. Permanecem as regras de conduta: spam, mensagens fora da janela sem template e alto índice de denúncias de usuários podem gerar restrições em qualquer canal. Um agente receptivo e bem-comportado dificilmente esbarra nelas.

Do tutorial para a operação

O que você montou nesta tarde já é um agente funcional: entende linguagem natural, respeita limites definidos por você e custa quase nada para operar. A barreira de entrada, que até pouco tempo atrás justificava APIs piratas ou plataformas caras, praticamente sumiu. O que separa esse agente de um atendimento confiável em escala não é mais código de integração: é memória persistente, conexão com os seus sistemas (estoque, pedidos, agenda), transbordo bem-feito para humanos e medição de qualidade. Cada um desses vai virar um tutorial desta série.

Se o seu caso é comercial (responder o lead na hora, qualificar, agendar e registrar no CRM), a Waxi já roda esse agente pela API oficial como serviço: veja os agentes de IA para operações comerciais, com teste grátis de qualificação em até 10 contas.

Se você quer o caminho inverso, entender o caso de negócio antes do código, o post sobre automação de atendimento com agentes de IA cobre essa camada. E se quiser pular a curva de aprendizado e colocar um agente desses para atender os seus clientes com quem já fez isso, vamos conversar. A Waxi implementa agentes de IA em produção para empresas brasileiras, do diagnóstico à operação.