Waxi - Transformação Analítica com Inteligência Artificial

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.

13/08/202612 min de leituraInteligência Artificial
#agente de ia#whatsapp#atendimento ao cliente#api oficial#tutorial#automação#brasil
Daniel Silvestre

Daniel Silvestre

CEO & 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.

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 para perto de zero 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, conforme a página oficial de preços da Meta. O que se paga são mensagens iniciadas pela empresa (marketing, utilidade, autenticação), que não fazem parte deste tutorial. Como preço de API muda, confira a tabela vigente antes de planejar; os valores citados aqui são os de agosto de 2026.

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 de graça (e 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:

Dados de mercado
R$0

custo das mensagens de serviço na API oficial

Respostas ao cliente dentro da janela de 24 horas não são cobradas, sem limite de volume, na tabela por mensagem vigente em agosto de 2026

Fonte: Meta
  • WhatsApp: R$ 0. Como o painel acima mostra, atendimento receptivo dentro da janela de 24 horas não paga nada à Meta.
  • 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. 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, o agente responde de graça na janela de 24 horas.

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 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.