O que é e por que usar
O OpenRouter é um gateway de API que unifica o acesso a dezenas de modelos de linguagem (LLMs) — como GPT-4o, Claude 3.5, Llama 3.1, Mistral, Gemma e muitos outros — através de uma única interface. Em vez de criar integrações separadas para cada provedor de IA, você utiliza um endpoint único e troca de modelo com uma simples alteração no parâmetro model.
Para quem trabalha com automação no n8n, isso resolve um problema real: dependência de um único fornecedor. Se você usa apenas a OpenAI e o serviço cai, sua automação para. Com o OpenRouter, você pode configurar um fallback automático para outro modelo ou escolher o modelo mais barato para cada tipo de tarefa. Além disso, o custo é frequentemente menor: modelos como Llama 3.1 70B custam uma fração do GPT-4o para tarefas de classificação ou extração de dados.
Neste artigo, vou mostrar como criar um sistema de respostas inteligentes usando o OpenRouter dentro do n8n. O fluxo completo envolve receber uma mensagem, processá-la com um modelo de IA e devolver uma resposta contextualizada — tudo sem escrever uma linha de código além da configuração dos nós.
Pré-requisitos
- Conta no OpenRouter — crie em openrouter.ai e gere uma API key no painel (você precisa adicionar créditos, a partir de US$ 5).
- Instância do n8n — self-hosted (Docker ou npm) ou n8n Cloud. Qualquer versão recente serve.
- Conhecimento básico de n8n — saber criar um workflow, conectar nós e usar o nó HTTP Request.
- Credenciais de teste — uma planilha Google Sheets ou um webhook de teste para simular entrada de dados.
Exemplo Prático: Atendimento automatizado para e-mails de suporte
Imagine que você administra uma loja online e recebe cerca de 50 e-mails de suporte por dia. A maioria é sobre status de pedido, política de troca e horário de funcionamento. Responder cada um manualmente consome 2 horas diárias da sua equipe.
O que vamos automatizar: um workflow que recebe o texto do e-mail (via webhook), envia para o OpenRouter com instruções de resposta, e retorna um rascunho de resposta pronto para revisão. O sistema classifica a intenção (pedido, troca, dúvida) e gera uma resposta personalizada com base em um tom pré-definido.
Resultado esperado: redução de 70% do tempo gasto com e-mails repetitivos. A equipe apenas revisa e envia, em vez de escrever do zero. Para e-mails que exigem ação manual (reembolso, erro de entrega), o sistema adiciona um marcador “REVISÃO HUMANA NECESSÁRIA” no início da resposta.
Configuração Passo a Passo
Passo 1: Criar o workflow e o nó de entrada (Webhook)

No n8n, crie um novo workflow e adicione um nó Webhook. Configure o método como POST e o caminho como receber-email. Este webhook receberá um JSON com o conteúdo do e-mail:
{
"assunto": "Onde está meu pedido #12345?",
"mensagem": "Fiz o pedido na semana passada e ainda não chegou. Preciso de uma atualização.",
"cliente_nome": "Maria Silva"
}
Salve o workflow e copie a URL do webhook para testar depois.
Passo 2: Configurar o nó HTTP Request para o OpenRouter
Adicione um nó HTTP Request conectado ao webhook. Configure assim:
- Método: POST
- URL:
https://openrouter.ai/api/v1/chat/completions - Autenticação: Header — adicione
Authorizationcom valorBearer SUA_API_KEY - Header adicional:
Content-Type: application/json
No corpo da requisição (Body), selecione JSON e insira:
{
"model": "openai/gpt-4o-mini",
"messages": [
{
"role": "system",
"content": "Você é um assistente de suporte de uma loja online. Responda de forma educada e profissional. Se a solicitação exigir ação manual (reembolso, erro de entrega), comece a resposta com 'REVISÃO HUMANA NECESSÁRIA'. Máximo 150 palavras."
},
{
"role": "user",
"content": "Assunto: {{ $json['assunto'] }}. Mensagem: {{ $json['mensagem'] }}. Cliente: {{ $json['cliente_nome'] }}"
}
],
"temperature": 0.7
}
A expressão {{ $json['assunto'] }} puxa os dados do webhook dinamicamente. O modelo openai/gpt-4o-mini é um bom equilíbrio entre custo e qualidade. Você pode trocar por anthropic/claude-3.5-sonnet ou meta-llama/llama-3.1-70b-instruct conforme necessidade.
Passo 3: Processar a resposta e formatar
Adicione um nó Code após o HTTP Request para extrair o texto gerado. O OpenRouter retorna uma estrutura JSON padrão:
{
"choices": [
{
"message": {
"role": "assistant",
"content": "Olá Maria, tudo bem? Sobre o pedido #12345..."
}
}
]
}

No nó Code, use o seguinte script para extrair e formatar:
const resposta = $json.choices[0].message.content;
return {
resposta_final: resposta,
assunto_original: $json.assunto,
timestamp: new Date().toISOString()
};
Passo 4: Enviar para um canal de saída
Conecte um nó Google Sheets (ou Email, ou Slack) para registrar a resposta. Para Google Sheets, configure:
- Operação: Append (adicionar linha)
- Planilha: selecione a que deseja usar
- Colunas: mapeie
assunto_original,resposta_finaletimestamp
Se preferir testar sem integração, use um nó Respond to Webhook para retornar a resposta diretamente ao chamador.
Passo 5: Ativar e testar
Clique em Active no workflow. Envie um POST de teste com o JSON do exemplo:
curl -X POST https://SEU_WEBHOOK_URL \
-H "Content-Type: application/json" \
-d '{"assunto":"Onde está meu pedido #12345?","mensagem":"Fiz o pedido na semana passada e ainda não chegou.","cliente_nome":"Maria Silva"}'
Você deve receber uma resposta gerada pelo modelo no formato configurado.
Dicas e Variações
- Use modelos diferentes por tarefa: para classificação simples, use
meta-llama/llama-3.1-8b-instruct(mais barato). Para respostas complexas, useopenai/gpt-4oouanthropic/claude-3.5-sonnet. O OpenRouter cobra por token, então essa escolha impacta diretamente seu custo mensal. - Implemente fallback automático: no n8n, use o nó IF para verificar se a resposta contém um erro (status HTTP != 200). Se sim, faça uma segunda chamada ao OpenRouter com outro modelo.
- Adicione contexto via memória: em vez de enviar apenas a mensagem atual, use um nó Read/Write Files from Disk ou um banco de dados (SQLite) para armazenar interações anteriores e enviá-las no array
messages. - Limite de tokens: defina
max_tokensna requisição (ex: 300) para evitar respostas longas demais e custos inesperados. - Teste com streaming: o OpenRouter suporta SSE (Server-Sent Events). No n8n, você pode usar o nó HTTP Request com a opção Stream habilitada para receber respostas em tempo real, útil para chat interativo.
Erros Comuns e Como Evitá-los
- Erro 401 (Unauthorized): a API key está incorreta ou expirou. Verifique se você copiou corretamente e se há créditos na conta.
- Erro 429 (Rate Limit): você excedeu o número de requisições por minuto. No n8n, adicione um nó Wait (ex: 5 segundos) entre chamadas ou use o nó Queue para controlar o fluxo.
- Formato de resposta inesperado: alguns modelos retornam conteúdo em campos diferentes. Sempre valide a estrutura com um nó Code que faça um log do
$jsoncompleto antes de processar. - Contexto muito longo: se a mensagem do usuário for muito grande, o modelo pode estourar o limite de tokens. Trunque o texto com
slice(0, 5000)no nó Code antes de enviar. - Esquecer o header Content-Type: sem ele, a API retorna erro 400. Sempre inclua
Content-Type: application/json.
Próximos Passos
Você já tem a base de um sistema de respostas inteligentes funcionando. Agora, amplie o escopo:
- Conecte ao seu e-mail real: use o nó IMAP do n8n para ler mensagens automaticamente e alimentar o webhook que você criou.
- Adicione classificação de prioridade: inclua no prompt uma instrução para o modelo retornar também um nível de prioridade (alta, média, baixa) e use o nó Switch para rotear a resposta para filas diferentes.
- Implemente confirmação humana: em vez de enviar a resposta automaticamente, envie para um canal Slack com botões “Aprovar” e “Rejeitar” usando o nó Slack e a funcionalidade de interatividade.
- Monitore custos: crie um workflow separado que consulta a API de uso do OpenRouter (endpoint
/api/v1/auth/key) diariamente e registra o gasto em uma planilha.
O OpenRouter + n8n é uma combinação poderosa porque separa a lógica de automação da escolha do modelo. Você pode trocar de provedor sem reescrever nada — apenas alterando o nome do modelo no corpo da requisição. Comece com um caso simples, meça o tempo economizado e expanda gradualmente para outros fluxos como geração de conteúdo, resumo de reuniões ou triagem de leads.
Gostou do conteúdo? Inscreva-se para receber as novidades:


Comments are closed