O bloco “Requisição HTTP (API)” conecta o seu fluxo do WhatsApp a qualquer sistema. No meio da conversa o AgeuBot chama a sua API, guarda a resposta em variáveis e continua o atendimento — criando cadastros, consultando pedidos ou liberando testes sem ninguém digitar nada.
O que dá para fazer
- Criar acesso/teste automático — o cliente pede, o sistema gera usuário e senha e o bot já responde com os dados.
- Consultar informação — status do pedido, saldo, validade do plano, dados de um CEP.
- Cadastrar no seu sistema — mandar nome, telefone e respostas do fluxo direto para o CRM/ERP.
- Validar antes de seguir — conferir se o CPF existe, se o cliente está em dia, se há vaga na agenda.
- Avisar outro sistema — disparar um webhook quando o cliente concluir uma etapa.
Onde encontrar
- Abra o painel e vá em Automação → Construtor de Fluxos.
- Na barra lateral esquerda, procure o bloco Requisição HTTP (API).
- Arraste para a área do fluxo e clique nele para configurar.
Não está aparecendo? Dê Ctrl+F5 na página do construtor para atualizar o cache do navegador.
Passo 1 — Método e endereço (URL)
Escolha o método (GET, POST, PUT, PATCH ou DELETE) e informe o endereço. Só endereços https:// são aceitos.
Você pode usar variáveis na URL — elas são substituídas pelos dados do contato e codificadas automaticamente:
https://api.seusistema.com/criar-teste?whats={{telefone}}
https://api.seusistema.com/pedidos/{{numero_pedido}}
https://viacep.com.br/ws/{{cep}}/json/
{{nome}} e {{telefone}} sempre existem. Qualquer variável capturada antes — pelo bloco Capturar Dados ou pelo Menu — também pode ser usada.
Passo 2 — Cabeçalhos (headers)
Servem para autenticação e formato. Clique em + Adicionar header e preencha nome e valor:
Content-Type: application/json Authorization: Bearer SEU_TOKEN_AQUI X-API-Key: sua-chave
Enviando JSON no corpo? Inclua sempre Content-Type: application/json, senão muitas APIs recusam a chamada.
Passo 3 — Corpo da requisição (body)
Usado em POST, PUT e PATCH. Escreva o JSON com as variáveis entre chaves duplas:
{
"nome": "{{nome}}",
"whats": "{{telefone}}",
"plano": "{{plano_escolhido}}"
}
As aspas das variáveis são obrigatórias: escreva "{{nome}}" e não {{nome}} solto — sem as aspas o JSON fica inválido e a API recusa.
Passo 4 — Guardar a resposta em variáveis
É aqui que a resposta da API vira mensagem no WhatsApp. Suponha que a sua API devolva:
{
"sucesso": true,
"data": {
"username": "cliente_8842",
"password": "Xy7k92",
"validade": "3 dias"
}
}
Em Extrair da resposta, informe o caminho do campo e o nome da variável que você quer criar:
| Caminho na resposta | Salvar como | Vai valer |
|---|---|---|
data.username | usuario | cliente_8842 |
data.password | senha | Xy7k92 |
data.validade | validade | 3 dias |
Depois é só usar nos blocos seguintes:
Prontinho, {{nome}}! 🎉
Usuário: *{{usuario}}*
Senha: *{{senha}}*
Válido por {{validade}}.
Para campos dentro de listas, use o índice: data.itens.0.nome pega o nome do primeiro item.
Passo 5 — Tempo limite
Quanto o bot espera pela resposta antes de desistir. Aceita de 3 a 30 segundos (padrão: 10). Se a sua API costuma demorar, aumente — mas lembre que o cliente fica esperando do outro lado.
As duas saídas: Sucesso e Erro
O bloco tem duas saídas, e ligar as duas é obrigatório para o fluxo nunca travar:
| Saída | Quando é usada | O que ligar nela |
|---|---|---|
| Sucesso | A API respondeu normalmente (status 2xx) | Mensagem com o resultado |
| Erro | API fora do ar, token inválido, demorou demais ou recusou | Mensagem de desculpas + transferir para atendente |
Deixar a saída Erro solta é o erro mais comum: se a API falhar, a conversa simplesmente para e o cliente fica sem resposta.
Exemplo completo (copiar e colar)
Fluxo “quero um teste”: pergunta o nome, chama a API, entrega usuário e senha — e, se der problema, chama um atendente.
{
"nodes": [
{ "id": 1, "type": "start", "x": 60, "y": 160,
"data": { "label": "Início", "triggerMode": "any", "triggers": "teste, quero testar" } },
{ "id": 2, "type": "input", "x": 340, "y": 160,
"data": { "label": "Pergunta o nome", "inputPrompt": "Qual o seu nome?",
"inputVariable": "nome", "inputValidation": "any" } },
{ "id": 3, "type": "http", "x": 620, "y": 160,
"data": {
"label": "Criar teste no sistema",
"httpMethod": "POST",
"httpUrl": "https://api.seusistema.com/criar-teste",
"httpHeaders": [
{ "key": "Content-Type", "value": "application/json" },
{ "key": "Authorization", "value": "Bearer SEU_TOKEN" }
],
"httpBody": "{\"nome\": \"{{nome}}\", \"whats\": \"{{telefone}}\"}",
"httpTimeoutSec": 15,
"httpExtractions": [
{ "path": "data.username", "variable": "usuario" },
{ "path": "data.password", "variable": "senha" }
]
} },
{ "id": 4, "type": "content", "x": 900, "y": 70,
"data": { "label": "Deu certo",
"message": "Prontinho, {{nome}}! 🎉\n\nUsuário: *{{usuario}}*\nSenha: *{{senha}}*" } },
{ "id": 5, "type": "content", "x": 900, "y": 270,
"data": { "label": "Deu erro",
"message": "Ops, não consegui gerar agora. Já chamei um atendente pra te ajudar!" } },
{ "id": 6, "type": "transfer", "x": 1180, "y": 270,
"data": { "label": "Chamar atendente", "transferMessage": "Transferindo para um atendente..." } }
],
"connections": [
{ "fromNode": 1, "fromPort": "next", "toNode": 2 },
{ "fromNode": 2, "fromPort": "next", "toNode": 3 },
{ "fromNode": 3, "fromPort": "success", "toNode": 4 },
{ "fromNode": 3, "fromPort": "error", "toNode": 5 },
{ "fromNode": 5, "fromPort": "next", "toNode": 6 }
]
}
Para usar: troque a URL pela do seu sistema, coloque o seu token no header Authorization e ajuste os caminhos em httpExtractions conforme a resposta da sua API.
Teste antes de publicar
- Chame a sua API primeiro em um cliente REST (Postman, Insomnia) ou pelo terminal e veja a resposta real.
- Confira os caminhos: se a resposta é
{"data":{"username":"x"}}, o caminho édata.username. - Monte o bloco, ligue as duas saídas e teste mandando mensagem para o seu próprio número.
- Não veio a variável? Quase sempre é o caminho errado — reveja o passo 2.
Limites e segurança
- Somente HTTPS — endereços
http://são bloqueados. - Endereços internos/privados são bloqueados (proteção contra acesso indevido ao servidor).
- A resposta é lida até 1 MB; o excedente é descartado.
- Tempo limite entre 3 e 30 segundos.
- Proteção anti-loop: o mesmo bloco roda no máximo 5× por minuto e 20× a cada 10 minutos por contato — evita ciclos infinitos de chamadas.
Problemas comuns
| Sintoma | Causa provável | Solução |
|---|---|---|
| Cai sempre no Erro | URL sem HTTPS, API fora do ar ou token inválido | Confirme o https:// e teste a chamada no Postman/Insomnia |
| Variável chega vazia | Caminho JSON errado | Veja a resposta real da API e corrija o caminho (ex.: data.username) |
| API recusa o envio | Falta o Content-Type ou o JSON está inválido | Adicione o header e confira as aspas nas variáveis |
| Bloco não aparece na lateral | Cache do navegador | Ctrl+F5 no construtor de fluxos |
| Demora e falha | API lenta | Aumente o tempo limite (até 30s) ou otimize a API |
| Dados antigos vão junto | Variáveis de um atendimento anterior | Veja como limpar os dados do contato |
Artigos relacionados
- Guardar a escolha do menu em variável e limpar dados do contato
- Como criar um fluxo de conversa
- Tipos de blocos do editor visual
- Usar a API pública do AgeuBot
- Configurar webhooks e API
Pronto para integrar seu sistema ao WhatsApp?
Abrir o painel e criar meu fluxo