Enviar requisições GET, POST, PUT, PATCH ou DELETE para qualquer API REST.
Nó HTTP
O nó HTTP (http_request) envia uma requisição HTTP genérica para qualquer URL. É o bloco de integração mais flexível do editor de workflows — use-o para APIs REST, webhooks internos, microsserviços e serviços que ainda não tenham um nó dedicado na paleta.
Figura 1: Campos do nó HTTP — URL, método, headers e body
O que ele faz
A cada execução, o motor de workflows:
- Resolve todos os placeholders
{{variable}}em URL, método, headers e body - Envia a requisição HTTP a partir dos servidores do WhatsWave (não do navegador do usuário final)
- Faz parse de respostas JSON quando possível
- Retorna status, data e headers para os nós seguintes
| Propriedade | Valor |
|---|---|
| Node type ID | http_request |
| Rótulo na paleta | HTTP |
| Executor | http_request |
| Métodos suportados | GET, POST, PUT, PATCH, DELETE |
| Timeout da requisição | 30 segundos |
| Tamanho máximo da resposta | 10 MB |
Guia de configuração
Passo 1 — Adicionar o nó
- Abra Automações e edite seu workflow
- Abra a paleta de nós e selecione o grupo APIs
- Arraste HTTP para o canvas
- Conecte-o após o gatilho ou um nó de lógica que prepare o payload
Passo 2 — Definir a URL (obrigatório)
Informe a URL completa do endpoint. Você pode incluir query strings e variáveis:
https://api.example.com/v1/orders/{{trigger.body.order_id}}
https://hooks.example.com/notify?source=whatswave&phone={{variables.contact_phone}}
Regras:
- Use
https://em produção sempre que o provedor suportar - Não acrescente fragmentos
#— o motor remove fragmentos de URL antes de enviar - URLs vazias ou não resolvidas causam erros de execução
Passo 3 — Escolher o método HTTP
Selecione o verbo que corresponde ao contrato da API externa:
| Método | Uso típico |
|---|---|
| GET | Ler dados; nenhum body é enviado |
| POST | Criar recursos ou disparar ações |
| PUT | Substituição completa de um recurso |
| PATCH | Atualização parcial |
| DELETE | Remover um recurso |
O campo de método também aceita variáveis, por exemplo {{variables.http_method}}, mas a maioria dos fluxos usa um método fixo.
Passo 4 — Configurar headers (JSON)
Os headers devem ser um objeto JSON. Padrões comuns:
Bearer token (OAuth / API key):
{
"Authorization": "Bearer {{variables.partner_api_token}}",
"Content-Type": "application/json"
}
Header de API key:
{
"X-API-Key": "{{variables.shop_api_key}}",
"Accept": "application/json"
}
ID de correlação customizado:
{
"Authorization": "Bearer {{variables.api_token}}",
"X-Request-Id": "{{trigger.body.event_id}}"
}
Se você enviar um body e omitir Content-Type, o motor adiciona automaticamente Content-Type: application/json.
Passo 5 — Definir o body (JSON)
Para GET e DELETE, deixe o body vazio — o motor não anexa body em requisições GET.
Para POST, PUT e PATCH, forneça um objeto JSON. Os campos suportam variáveis:
{
"phone": "{{trigger.body.telefone}}",
"name": "{{trigger.body.nome}}",
"order_id": "{{trigger.body.pedido}}",
"metadata": {
"source": "whatswave",
"workflow_id": "{{variables.workflow_ref}}"
}
}
O motor resolve as variáveis primeiro e depois envia o objeto como JSON.
Passo 6 — Testar e inspecionar a saída
- Clique em Test na barra de ferramentas do workflow ou use o botão Play do nó
- Expanda o nó no log de execução
- Compare input_resolved (o que foi realmente enviado) com output (resposta da API)
- Referencie a saída no próximo nó:
{{http_1.data.id}}(substituahttp_1pelo ID do seu nó)
Passo 7 — Tratar erros nos nós seguintes
Adicione um nó Condição após o HTTP para ramificar pelo status:
- Caminho de sucesso:
{{http_1.status}}igual a200ou201 - Caminho de erro: envie uma mensagem de alerta ou grave no CRM com
{{http_1.error}}
Campos de saída
Após uma requisição bem-sucedida, a saída do nó é:
| Campo | Tipo | Descrição |
|---|---|---|
status | number | Código de status HTTP (200, 201, 404, 500, …) |
data | any | Body da resposta parseado (objeto/array JSON ou string bruta) |
headers | object | Headers de resposta do servidor remoto |
Acesse-os com o ID do nó no canvas:
{{http_1.status}}
{{http_1.data.user.email}}
{{http_1.data.items[0].sku}}
{{http_1.headers.content-type}}
Em caso de falha, o status do nó é error e a saída inclui:
| Campo | Descrição |
|---|---|
error | Mensagem legível, por exemplo HTTP 401: Unauthorized |
http_error_detail.statusCode | Status HTTP (0 em falha de rede) |
http_error_detail.url | URL da requisição (query params sensíveis mascarados nos logs) |
http_error_detail.responseBody | Body da resposta truncado para depuração |
Padrões de autenticação
| Padrão | Exemplo de header | Onde armazenar o secret |
|---|---|---|
| Bearer token | "Authorization": "Bearer {{variables.token}}" | Variável de workflow ou API key da empresa |
| Header de API key | "X-API-Key": "{{variables.key}}" | Variável de workflow |
| Basic auth | "Authorization": "Basic {{variables.basic_credentials}}" | user:pass codificado em Base64 em uma variável |
| Customizado | Headers específicos do provedor | Conforme documentação do provedor |
Token de integração WhatsWave: Ao chamar https://api.whatswave.com.br/..., o motor pode injetar {{api_token}} automaticamente em nós WhatsWave dedicados. No nó genérico HTTP, passe Authorization: Bearer {{api_token}} explicitamente se chamar a REST API do WhatsWave.
Armazene secrets em Settings → API Keys ou Variáveis do workflow — não em texto puro em workflows compartilhados.
Dicas e boas práticas
- Comece com GET em endpoints somente leitura antes de POST/PUT que alteram dados
- Use o botão Play do nó para testar um passo com entrada JSON mínima antes de rodar o fluxo completo
- Nomeie os nós de forma clara (
fetch_order,notify_erp) para que caminhos como{{fetch_order.data.id}}permaneçam legíveis - Normalize telefones e IDs em um nó Variável ou JavaScript antes do HTTP
- Configure timeouts na API externa quando possível — o motor de workflows limita em 30 segundos
- Payloads amigáveis a logs — evite enviar blobs base64 enormes, a menos que seja necessário
- POSTs idempotentes — ao reexecutar workflows, prefira APIs que aceitem chaves de idempotência
- Respeite rate limits — adicione nós Delay entre chamadas HTTP em massa
- Prefira nós dedicados quando disponíveis (Stripe, Shopify, etc.) para auth e URLs padrão mantidas
FAQ
Por que minha requisição GET ignora o body?
Por design, requisições GET não enviam body. Mova parâmetros para a query string da URL ou mude para POST se a API exigir payload.
Por que {{trigger.body.field}} está vazio em input_resolved?
O nome do campo pode diferir do que o remetente envia (telefone vs phone, body.data.email aninhado). Inspecione a saída do gatilho webhook no painel de teste e copie o caminho exato.
Recebo HTTP 401 — o que devo verificar?
- Token expirado ou ambiente errado (sandbox vs produção)
- Nome do header (
AuthorizationvsX-API-Key) - Prefixo
Bearerausente - Para API WhatsWave: copie o token de integração em Settings → API Keys
O motor acrescenta uma dica em respostas 401 apontando para a configuração de API keys.
Recebo HTTP 404 com uma URL que parece correta
Verifique barras duplas, prefixo de versão da API ausente (/v1/) ou variáveis que resolveram para strings vazias e colapsaram parte do caminho.
Posso chamar localhost ou minha rede interna?
Não. As requisições partem dos servidores em nuvem do WhatsWave. A URL de destino precisa ser acessível na internet pública (ou via túnel como ngrok durante o desenvolvimento).
O nó segue redirects?
Aplica-se o comportamento padrão do cliente HTTP. Prefira URLs finais quando o provedor as documentar.
Como envio form data ou XML?
O nó HTTP genérico é otimizado para JSON. Para application/x-www-form-urlencoded ou XML, defina o Content-Type correto e passe um body em string se a API aceitar — teste com o botão Play do nó e inspecione input_resolved.
O que acontece no timeout?
O nó falha com erro após ~30 segundos. Divida operações longas em webhooks assíncronos (o sistema externo chama seu webhook WhatsWave quando terminar).
Exemplos de casos de uso
Exemplo 1 — Notificar ERP interno sobre novo lead
Gatilho: Webhook de formulário de landing page
Nó HTTP:
| Campo | Valor |
|---|---|
| URL | https://erp.example.com/api/leads |
| Method | POST |
| Headers | {"Authorization": "Bearer {{variables.erp_token}}", "Content-Type": "application/json"} |
| Body | {"name": "{{trigger.body.nome}}", "phone": "{{trigger.body.telefone}}", "utm": "{{trigger.query.utm}}"} |
Próximo passo: Send message do WhatsWave confirmando o cadastro.
Exemplo 2 — Buscar status do pedido e responder no WhatsApp
Nó HTTP (GET):
URL: https://api.store.com/orders/{{trigger.body.order_id}}
Headers: {"X-API-Key": "{{variables.store_key}}"}
Condição: {{http_1.data.status}} igual a shipped
Send message: Your order {{http_1.data.id}} shipped! Tracking: {{http_1.data.tracking_code}}
Exemplo 3 — Encaminhar payload de webhook para n8n
Nó HTTP:
{
"url": "https://n8n.example.com/webhook/whatswave-bridge",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"X-Bridge-Secret": "{{variables.n8n_secret}}"
},
"body": {
"source": "whatswave",
"payload": "{{trigger.body}}"
}
}
Veja também: integração com n8n.
Exemplo 4 — GET paginado dentro de um Loop
- Variável define
page = 1 - HTTP GET
https://api.example.com/items?page={{variables.page}} - JavaScript acrescenta
{{http_1.data.items}}a um acumulador e incrementa a página - Condição repete enquanto
{{http_1.data.has_more}}for true
Referências de API e documentação relacionada
| Recurso | Link |
|---|---|
| Métodos HTTP (MDN) | developer.mozilla.org — HTTP request methods |
| Headers HTTP (MDN) | developer.mozilla.org — HTTP headers |
| Base da REST API WhatsWave | https://api.whatswave.com.br |
| Variáveis no workflow | /ajuda/variaveis-no-workflow |
| Testar workflows | /ajuda/como-testar-e-depurar-um-workflow |
| Webhooks recebidos | /ajuda/como-usar-webhooks-recebidos |
| Visão geral do grupo APIs | /ajuda/nos-workflow-apis |
| Nó GraphQL | /ajuda/nos-workflow-apis-graphql |
Este artigo foi útil?
Precisa de mais ajuda? Falar com suporte