Geração de imagens do OpenRouter no n8n: fluxo com modelos gratuitos e o custo real
O OpenRouter não lista nenhum modelo de imagem com a etiqueta gratuita, mas 16 modelos de texto gratuitos podem escrever seus prompts. Este fluxo do n8n os combina com uma chamada de imagem de baixo custo, decodificação base64, uma trava de gastos e uma rota gratuita no PicassoIA que mantém os custos próximos de zero.
Procure um modelo gratuito de geração de imagens no OpenRouter e você logo bate em um muro. Em 8 de outubro de 2026, filtramos a lista pública de modelos do OpenRouter para saída de imagem. Ela retornou 61 modelos, e nenhum tinha a etiqueta :free. A lista sem filtro tinha 16 modelos gratuitos, e todos geram apenas texto. Parece uma má notícia para quem queria um fluxo no n8n que gere imagens de graça, mas aponta para uma arquitetura que funciona: um modelo de texto gratuito escreve os prompts, o modelo de imagem mais barato que atenda ao caso os renderiza, e um caminho de custo zero fica pronto para todo o resto.
Este artigo monta esse fluxo nó por nó. Você verá o gatilho, o redator de prompts, a chamada HTTP ao endpoint de imagem do OpenRouter, a decodificação base64, o armazenamento e uma trava de gastos que interrompe um loop descontrolado antes que ele esvazie seu saldo. Ao longo do caminho, você verá quanto custa cada parte, quais configurações costumam dar problema e como rodar o mesmo trabalho pelo PicassoIA quando quiser uma etapa de imagem gratuita.
O que "gratuito" realmente significa no OpenRouter
A palavra "gratuito" é esticada nos marketplaces de modelos, então defina bem o significado antes de conectar qualquer coisa.
Modelos de texto gratuitos escrevem seus prompts
O OpenRouter marca os modelos de custo zero com o sufixo :free no slug. No dia em que verificamos, 16 modelos o tinham, incluindo nvidia/nemotron-3-super-120b-a12b:free, google/gemma-4-31b-it:free, poolside/laguna-s-2.1:free e thinkingmachines/inkling:free, que também aceita imagens e áudio como entrada. Todos devolvem texto. É exatamente o que a primeira metade de um fluxo de imagens precisa, porque um prompt tem apenas algumas centenas de tokens.
Os modelos gratuitos mudam com frequência e têm limites de requisições por minuto e por dia, que afrouxam depois que a conta compra créditos. Trate cada slug deste artigo como exemplo e confira a lista atualizada antes de fixar um no código.
💡 Dica: Teste sua instrução de redação de prompt antes de construir o nó. Cole-a no Gemini 3.5 Flash ou no Llama 4 Scout Instruct do PicassoIA e leia o que volta.
Modelos de imagem cobram por imagem
As imagens passam por um endpoint dedicado, https://openrouter.ai/api/v1/images, usando o mesmo token Bearer das chamadas de texto. A cobrança depende do modelo: alguns cobram por imagem, outros por megapixel ou por token. O próprio tutorial de imagens do OpenRouter mostra uma variação de bem menos de um centavo até mais de dez centavos por imagem. Cada resposta traz um campo usage.cost com a cobrança real, e esse é o número que seu fluxo deve registrar.
⚠️ Atenção: Um 0 nos campos de preço de token não torna um modelo gratuito. A maioria dos modelos apenas de imagem na lista pública mostra 0 tanto no preço do prompt quanto no da conclusão, e o tutorial de imagens do OpenRouter diz que nenhum deles tem a etiqueta gratuita. Leia os preços na página do modelo e confie em usage.cost.
Sete etapas, e cada uma corresponde a um único nó do n8n ou a um pequeno par de nós:
Gatilho: manual enquanto você testa, depois um agendamento, um webhook ou uma nova linha de planilha.
Entradas: tema, estilo e proporção definidos em um nó Edit Fields.
Redator de prompts: uma cadeia de LLM executando um modelo :free.
Chamada de imagem: um nó HTTP Request enviando um POST para /api/v1/images.
Decodificação: copie b64_json para um campo próprio e depois converta-o em arquivo.
Armazenamento: Google Drive, um bucket compatível com S3 ou disco local.
Controle: registrar usage.cost, tentar de novo em caso de falha e alertar quando algo parecer errado.
O n8n traz um nó OpenRouter Chat Model para suas cadeias de IA, então a etapa 3 não precisa de HTTP personalizado. Só a chamada de imagem precisa, porque os nós de cadeia são feitos para texto.
Construa nó por nó
Comece com um Manual Trigger para rodar um item por vez. Depois, adicione um nó Edit Fields que define três valores: topic (por exemplo, "caneca de cerâmica sobre um peitoril ensolarado"), style ("luz natural, 50mm, granulado de filme") e aspectRatio ("16:9"). Troque o gatilho por um Schedule Trigger ou por uma linha do Google Sheets quando a cadeia estiver funcionando.
Redator de prompts em um modelo gratuito
Adicione uma Basic LLM Chain e conecte o subnó OpenRouter Chat Model. Crie uma credencial do OpenRouter com seu token e escolha um dos slugs :free. Use uma mensagem de sistema como esta:
You write one image prompt per request. Describe subject, setting,
light, lens and mood in 60 to 90 words. Put no text in the image.
Return only the prompt.
Um bom resultado fica assim: "Uma caneca de cerâmica com café preto sobre um peitoril ensolarado, vapor subindo em direção a uma cortina de linho, luz suave da manhã vinda da esquerda, lente de 50mm em f/2, profundidade de campo rasa, esmalte fosco com pequenas manchas, clima calmo e tranquilo." É curto, concreto e livre do excesso que os modelos de imagem ignoram.
Passe {{ $json.topic }} e {{ $json.style }} como mensagem do usuário e mantenha a temperatura perto de 0,7. A cadeia devolve o prompt em um campo text. Confira a aba de saída e ajuste o nome se a sua versão do n8n for diferente.
Requisição HTTP ao endpoint de imagem
Adicione um nó HTTP Request com estas configurações:
Método: POST
URL:https://openrouter.ai/api/v1/images
Autenticação: Generic Credential Type, Header Auth, nome Authorization, valor Bearer seguido do seu token
Send Body: ativado, JSON, "Using JSON"
Monte o corpo com uma expressão em vez de JSON escrito à mão, porque os prompts contêm aspas que quebram um template simples:
Troque o slug por qualquer modelo da lista filtrada. O suporte aos parâmetros varia por provedor, então remova uma opção se algum modelo a rejeitar. O endpoint também aceita resolution, quality, n para várias imagens de uma vez e input_references para editar a partir de uma imagem de origem.
A resposta tem este formato (os valores aqui são apenas exemplos):
Abra as configurações do nó e ative Retry On Fail com duas ou três tentativas e uma espera de alguns segundos. Erros transitórios do provedor são comuns, e uma nova tentativa não custa nada quando a chamada que falhou não foi cobrada.
Decodifique e armazene o arquivo
Adicione um segundo nó Edit Fields com duas atribuições: image_base64 definido como {{ $json.data[0].b64_json }} e cost definido como {{ $json.usage.cost }}. Em seguida, adicione Convert to File, escolha "Move Base64 String to File" e digite image_base64 como nome do campo de entrada. Esse é o nome do campo, não a string codificada em si, e é o erro mais comum com este nó.
Dê ao arquivo o nome {{ $now.toFormat('yyyyMMdd-HHmmss') }}.webp e mantenha a extensão de acordo com o output_format que você pediu. Uma divergência gera arquivos que não abrem.
Termine com um nó Google Drive, um nó S3 apontado para qualquer bucket compatível com S3 ou Read/Write Files from Disk se o n8n rodar na sua própria máquina.
Mantenha os gastos sob controle
Um fluxo que entra em loop por acidente é o jeito mais rápido de transformar "quase de graça" em uma fatura surpresa.
Limite e registre os gastos
Defina um limite de créditos no token do OpenRouter que você entrega ao n8n, para que o pior caso seja um número que você escolheu antecipadamente. Depois, acrescente cost e um carimbo de data e hora a uma linha do Google Sheets em cada execução. Um nó IF que compara cost com um limite, ligado a um alerta por e-mail ou chat, pega um modelo que de repente custa mais do que custava na semana passada.
Desacelere as chamadas gratuitas
Modelos gratuitos respondem com erros de limite de requisições quando você os sobrecarrega. Coloque um nó Loop Over Items com tamanho de lote 1 antes do redator de prompts, adicione um nó Wait de alguns segundos dentro do loop e mantenha o Retry On Fail ativado. Um lote de cinquenta temas então passa aos poucos, em vez de falhar no item doze. Dê à chamada de imagem o mesmo tratamento, já que os provedores também podem limitar rajadas ali.
Escolha um modelo de imagem que caiba
Vários slugs de imagem do OpenRouter pertencem a famílias que você pode testar manualmente no PicassoIA, o que é um jeito rápido de avaliar o visual antes de fixar um slug no fluxo.
Para imagens de destaque e tudo que tenha detalhes legíveis, pague por um dos melhores modelos, como o GPT Image 2, e gere uma imagem por tema. Para alto volume, como miniaturas e variações para redes sociais, escolha um slug menor e mais barato e deixe o redator gratuito fazer o trabalho pesado.
Antes de se comprometer, rode dez temas típicos por dois slugs candidatos e some a coluna cost na sua planilha. O modelo mais barato costuma ganhar nas miniaturas e perder na renderização de texto, de mãos e de detalhes finos de produto, e um teste de dez temas mostra isso em minutos. Guarde o slug vencedor em um só lugar, como no nó Edit Fields do início do fluxo, para que trocar de modelo seja uma mudança de uma linha.
Revise antes de publicar
A automação não deve publicar às cegas. Salve os resultados em uma pasta, poste uma grade de miniaturas em um canal de chat e espere um joinha antes que qualquer imagem chegue a um site. Dois minutos de revisão humana valem mais do que uma mão quebrada em uma foto de produto.
Uma rota gratuita pelo PicassoIA
O PicassoIA publica uma API com um fluxo no estilo Replicate. A página da API lista quatro modelos: picassoia/picassoia-image para texto para imagem, picassoia/picassoia-image-editor-pro para editar e combinar imagens, picassoia/picassoia-video, e picassoia/seedance-2.5-lite para vídeo com áudio sincronizado. A mesma página afirma que "API predictions are currently free" e não usa créditos, e que criar predições exige o plano Infinite. Confirme os termos na página da API do PicassoIA antes de construir sobre eles, já que os planos mudam. A concorrência é limitada a 5 predições por conta.
Guarde as palavras de estilo que funcionaram e coloque-as no campo style do seu nó Edit Fields.
Crie, aguarde, consulte, baixe
As tarefas do PicassoIA são assíncronas, então o layout no n8n tem quatro nós em vez de um:
HTTP Request (criar): POST para https://api.picassoia.com/v1/models/picassoia/picassoia-image/predictions com um cabeçalho Bearer e o corpo { "input": { "prompt": "...", "aspect_ratio": "16:9", "num_outputs": 1, "output_format": "webp" } }. Monte-o com JSON.stringify, como acima.
Wait: de cinco a dez segundos.
HTTP Request (consultar): GET https://api.picassoia.com/v1/predictions/{{ $json.id }}.
IF: quando status for igual a succeeded, continue. Quando for starting ou processing, volte para o nó Wait. Quando for failed ou canceled, direcione para o seu alerta.
Em caso de sucesso, o campo output traz uma URL ou uma lista de URLs. Adicione mais um nó HTTP Request com o formato de resposta definido como File e baixe o arquivo, depois reutilize o mesmo nó de armazenamento de antes.
💡 Dica: Precisa editar uma foto em vez de gerar uma? O PicassoIA Image Editor Pro cuida da edição e da combinação de imagens, e é o modelo a chamar para trocas de fundo e retoques de produto.
As imagens que seu fluxo salva também podem alimentar uma etapa de vídeo. Modelos de imagem para vídeo como o Wan 2.7 I2V, o LTX 2.3 Fast e o Seedance 2.0 transformam uma foto em um clipe curto, e o PicassoIA Video é a rota de API para a mesma ideia. Adicione-a como um segundo ramo depois do nó de armazenamento, para que um único tema gere uma imagem e um clipe.
Mantenha tudo funcionando
Correções para falhas comuns
Sintoma
Causa provável
Correção
HTTP 402
A conta ficou sem créditos
Adicione créditos ou mova a etapa com falha para uma rota gratuita
HTTP 429
Limite de requisições do modelo gratuito
Loop Over Items, um nó Wait e Retry On Fail
Corpo JSON inválido
Aspas no prompt quebraram um template escrito à mão
Monte o corpo com JSON.stringify
Arquivo não abre
Nome errado do campo de entrada, ou extensão diferente de media_type
Use o nome do campo image_base64 e ajuste a extensão para output_format
Slug não encontrado
Um modelo foi renomeado ou desativado
Consulte a lista de modelos de novo e atualize o slug
Base64 corrompido
A rota de chat completions devolveu uma URL de dados
Remova o prefixo data:image/...;base64, no Edit Fields
A rota de chat completions, que usa um array modalities, é a forma mais antiga de obter imagens de modelos que devolvem texto e imagens ao mesmo tempo. Ela ainda funciona para esses modelos, mas o endpoint dedicado de imagens oferece uma resposta mais limpa e é o que este artigo usa do início ao fim.
Fique de olho em um modelo de imagem gratuito
Modelos de imagem gratuitos podem surgir um dia, e você vai querer saber na mesma manhã. Crie um segundo fluxo pequeno:
Um Schedule Trigger que dispara uma vez por semana.
Uma HTTP Request para https://openrouter.ai/api/v1/models?output_modalities=image, que não precisa de token.
Um nó Code que devolve os ids que terminam em :free.
Um nó IF que envia uma mensagem somente quando essa lista não estiver vazia.
É um trabalho de cinco minutos, e significa que a principal conclusão deste artigo é verificada de novo automaticamente, em vez de ficar desatualizada.
Experimente no PicassoIA hoje
Seu fluxo agora tem um cérebro gratuito para os prompts, uma etapa de imagem paga que você pode precificar até o centavo e um ramo de custo zero para quando o orçamento estiver apertado. A forma mais rápida de encontrar o visual que você quer é rodar alguns prompts manualmente antes. Abra o PicassoIA Image, cole o prompt que sua cadeia do n8n escreveu e compare com o Flux 2 Pro e o Nano Banana Pro. Quando um deles der a imagem que você tinha em mente, copie as configurações dele para o fluxo e deixe rodar.