Workflow n8n de génération d’images avec OpenRouter : modèles gratuits et coût réel

OpenRouter ne propose aucun modèle d’image gratuit, mais 16 modèles de texte gratuits peuvent rédiger vos prompts. Ce workflow n8n les associe à un appel d’image à faible coût, au décodage base64, à un garde-fou de dépenses et à une voie PicassoIA gratuite qui maintient les coûts près de zéro.

Workflow n8n de génération d’images avec OpenRouter : modèles gratuits et coût réel
Cristian Da Conceicao
Fondateur de Picasso IA

Lancez une recherche de modèle de génération d’images gratuit sur OpenRouter et vous butez vite sur un mur. Le 8 octobre 2026, nous avons extrait la liste publique des modèles d’OpenRouter filtrée sur la sortie image. Elle a renvoyé 61 modèles, et aucun ne portait l’étiquette :free. La liste non filtrée comptait 16 modèles gratuits, et chacun ne produit que du texte. Cela semble être une mauvaise nouvelle pour quiconque voulait un workflow n8n qui crée des images sans rien payer, mais cela pointe vers une conception qui fonctionne : un modèle de texte gratuit rédige les prompts, le modèle d’image le moins cher adapté les génère, et une voie à coût nul reste prête pour tout le reste.

Cet article construit ce workflow nœud par nœud. Vous obtenez le déclencheur, le rédacteur de prompts, l’appel HTTP vers le point de terminaison image d’OpenRouter, le décodage base64, le stockage et un garde-fou de dépenses qui arrête une boucle incontrôlée avant qu’elle ne vide votre solde. Au passage, vous verrez ce que coûte chaque élément, quels réglages piègent souvent les utilisateurs, et comment exécuter le même travail via PicassoIA lorsque vous voulez une étape d’image gratuite.

Mains d’une femme tapant sur un ordinateur portable argenté à une table de cuisine, avec une toile de workflow floue à l’écran

Ce que « gratuit » signifie vraiment sur OpenRouter

Le mot « gratuit » est galvaudé sur les places de marché de modèles, alors précisez-le avant de tout câbler.

Les modèles de texte gratuits rédigent vos prompts

OpenRouter marque les modèles à coût nul avec un suffixe :free dans le slug. Le jour de notre vérification, 16 modèles le portaient, dont nvidia/nemotron-3-super-120b-a12b:free, google/gemma-4-31b-it:free, poolside/laguna-s-2.1:free et thinkingmachines/inkling:free, qui accepte aussi les images et l’audio en entrée. Tous renvoient du texte. C’est exactement ce dont la première moitié d’un workflow d’image a besoin, car un prompt ne fait que quelques centaines de tokens.

Les modèles gratuits changent, et ils imposent des limites de requêtes par minute et par jour qui se relâchent une fois qu’un compte a acheté des crédits. Considérez chaque slug de cet article comme un exemple et vérifiez la liste en direct avant d’en coder un en dur.

💡 Astuce : Testez votre instruction de rédaction de prompt avant de construire le nœud. Collez-la dans Gemini 3.5 Flash ou Llama 4 Scout Instruct sur PicassoIA et lisez ce qui revient.

Les modèles d’image se facturent à l’image

Les images passent par un point de terminaison dédié, https://openrouter.ai/api/v1/images, avec le même token Bearer que les appels de texte. La facturation dépend du modèle : certains facturent par image, d’autres par mégapixel ou par token. Le tutoriel image d’OpenRouter indique un écart allant de bien moins d’un centime à plus de dix centimes par image. Chaque réponse contient un champ usage.cost avec le coût réel, et c’est ce chiffre que votre workflow doit journaliser.

⚠️ Attention : La présence d’un 0 dans les champs de prix par token ne rend pas un modèle gratuit. La plupart des modèles image seuls de la liste publique affichent 0 pour le prix du prompt comme pour celui de la complétion, et le tutoriel image d’OpenRouter indique qu’aucun ne porte l’étiquette gratuit. Lisez la tarification sur la page du modèle et fiez-vous à usage.cost.

Quatre voies comparées

VoiePrixSortieUsage idéal
Modèle de texte OpenRouter :free0 $, avec limites de débitTexte uniquementRédiger et reformuler des prompts
Modèle image payant OpenRouterPar image, indiqué en usage.costImage en base64Images finales de production
API PicassoIA avec PicassoIA ImageIndiqué comme gratuit sur la page APIURL de l’imageUne étape d’image à coût nul
PicassoIA dans le navigateurDépend du modèle et du planImages, retouches, vidéoTester des prompts à la main

Pièce d’argent posée sur une pile de photos de paysages imprimées, sur une table en chêne pâle

Le flux de travail en un coup d’œil

Sept étapes, et chacune correspond à un seul nœud n8n ou à une courte paire de nœuds :

  1. Déclencheur : manuel pendant les tests, puis un planning, un webhook ou une nouvelle ligne de tableur.
  2. Entrées : sujet, style et format définis dans un nœud Edit Fields.
  3. Rédacteur de prompts : une chaîne LLM qui exécute un modèle :free.
  4. Appel d’image : un nœud HTTP Request qui envoie une requête POST vers /api/v1/images.
  5. Décodage : copier b64_json dans son propre champ, puis le convertir en fichier.
  6. Stockage : Google Drive, un bucket compatible S3 ou le disque local.
  7. Garde-fou : journaliser usage.cost, relancer en cas d’échec et alerter quand quelque chose semble anormal.

n8n propose un nœud OpenRouter Chat Model pour ses chaînes d’IA, donc l’étape 3 ne nécessite aucun HTTP personnalisé. Seul l’appel d’image en nécessite un, car les nœuds de chaîne sont conçus pour le texte.

Organigramme dessiné au crayon, cinq cases vides reliées par des flèches dans un carnet

Construire nœud par nœud

Commencez par un Manual Trigger pour lancer un élément à la fois. Reliez-le à un nœud Edit Fields qui définit trois valeurs : topic (par exemple « tasse en céramique sur un rebord de fenêtre ensoleillé »), style (« lumière naturelle, 50 mm, grain argentique ») et aspectRatio (« 16:9 »). Remplacez le déclencheur par un Schedule Trigger ou une ligne Google Sheets une fois la chaîne fonctionnelle.

Le rédacteur de prompts sur un modèle gratuit

Ajoutez une Basic LLM Chain et rattachez le sous-nœud OpenRouter Chat Model. Créez un identifiant OpenRouter avec votre token, puis choisissez l’un des slugs :free. Utilisez un message système de ce type :

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.

Un bon résultat se présente ainsi : « Une tasse de café noir en céramique sur un rebord de fenêtre ensoleillé, de la vapeur qui s’enroule vers un rideau de lin, une lumière matinale douce venant de la gauche, objectif 50 mm à f/2, faible profondeur de champ, émail mat avec de minuscules mouchetures, ambiance calme et paisible. » Il est court, concret et exempt du remplissage que les modèles d’image ignorent.

Transmettez {{ $json.topic }} et {{ $json.style }} comme message utilisateur, et gardez la température autour de 0,7. La chaîne renvoie le prompt dans un champ text. Vérifiez l’onglet de sortie et ajustez le nom si votre version de n8n diffère.

Homme en pull gris réfléchissant à un bureau debout tout en lisant sur un ordinateur portable

Requête HTTP vers le point de terminaison image

Ajoutez un nœud HTTP Request avec ces réglages :

  • Méthode : POST
  • URL : https://openrouter.ai/api/v1/images
  • Authentification : Generic Credential Type, Header Auth, nom Authorization, valeur Bearer suivi de votre token
  • Send Body : activé, JSON, « Using JSON »

Construisez le corps avec une expression plutôt qu’avec du JSON écrit à la main, car les prompts contiennent des guillemets qui cassent un gabarit simple :

={{ JSON.stringify({
  model: "bytedance-seed/seedream-4.5",
  prompt: $json.text,
  aspect_ratio: "16:9",
  output_format: "webp"
}) }}

Remplacez le slug par n’importe quel modèle de la liste filtrée. La prise en charge des paramètres varie selon le fournisseur, donc retirez une option si un modèle la refuse. Le point de terminaison accepte aussi resolution, quality, n pour plusieurs images à la fois, et input_references pour retoucher à partir d’une image source.

La réponse a cette forme (les valeurs ici sont des exemples) :

{
  "data": [{ "b64_json": "...", "media_type": "image/webp" }],
  "usage": { "cost": 0.04 }
}

Ouvrez les réglages du nœud et activez Retry On Fail avec deux ou trois tentatives et une attente de quelques secondes. Les erreurs transitoires du fournisseur sont fréquentes, et une nouvelle tentative ne coûte rien lorsque l’appel échoué n’a pas été facturé.

Ordinateur portable d’un développeur avec un éditeur de code flou dans un salon peu éclairé

Décoder et stocker le fichier

Ajoutez un second nœud Edit Fields avec deux affectations : image_base64 défini sur {{ $json.data[0].b64_json }} et cost défini sur {{ $json.usage.cost }}. Ajoutez ensuite Convert to File, choisissez « Move Base64 String to File » et saisissez image_base64 comme nom du champ d’entrée. Il s’agit du nom du champ, pas de la chaîne encodée elle-même, et c’est l’erreur la plus courante avec ce nœud.

Nommez le fichier {{ $now.toFormat('yyyyMMdd-HHmmss') }}.webp et gardez l’extension cohérente avec le output_format demandé. Une incohérence produit des fichiers qui ne s’ouvrent pas.

Terminez par un nœud Google Drive, un nœud S3 pointé vers n’importe quel bucket compatible S3, ou Read/Write Files from Disk si n8n tourne sur votre propre machine.

Main posant un petit SSD externe à côté de planches-contacts imprimées sur un bureau gris

Garder les dépenses sous contrôle

Un workflow qui boucle par accident est le moyen le plus rapide de transformer « presque gratuit » en facture surprise.

Plafonner et journaliser les dépenses

Fixez une limite de crédits sur le token OpenRouter que vous confiez à n8n, afin que le pire scénario soit un montant choisi à l’avance. Ajoutez ensuite cost et un horodatage dans une ligne Google Sheets à chaque exécution. Un nœud IF qui compare cost à un seuil, relié à une alerte par e-mail ou dans un chat, repère un modèle dont le coût a soudain augmenté par rapport à la semaine précédente.

Ralentir les appels gratuits

Les modèles gratuits répondent par des erreurs de limite de débit quand vous les sollicitez trop. Placez un nœud Loop Over Items avec une taille de lot de 1 devant le rédacteur de prompts, ajoutez un nœud Wait de quelques secondes dans la boucle, et gardez Retry On Fail activé. Un lot de cinquante sujets passera alors progressivement au lieu d’échouer à l’élément douze. Appliquez le même traitement à l’appel d’image, car les fournisseurs peuvent aussi brider les rafales à cet endroit.

Calculatrice, tickets de caisse en papier et tasse en céramique sur un bureau bien rangé, vus d’en haut

Choisir un modèle d’image adapté

Plusieurs slugs d’image d’OpenRouter appartiennent à des familles que vous pouvez tester à la main sur PicassoIA, ce qui permet de juger du rendu avant d’intégrer un slug au workflow.

Slug OpenRouterÉditeurEssayer la même famille sur PicassoIA
openai/gpt-image-2OpenAIGPT Image 2
bytedance-seed/seedream-4.5ByteDanceSeedream 4.5
black-forest-labs/flux.2-proBlack Forest LabsFlux 2 Pro
google/gemini-3-pro-imageGoogleNano Banana Pro

Pour les images phares et tout ce qui comporte des détails lisibles, payez pour un modèle haut de gamme comme GPT Image 2 et générez une image par sujet. Pour les gros volumes, comme les miniatures et les déclinaisons pour les réseaux sociaux, choisissez un slug plus petit et moins cher, et laissez le rédacteur gratuit faire le gros du travail.

Avant de vous engager, passez dix sujets types sur deux slugs candidats et additionnez la colonne cost de votre tableur. Le moins cher des deux l’emporte souvent en matière de miniatures et perd en matière de rendu du texte, des mains et des détails fins de produit, et un test de dix sujets vous le montre en quelques minutes. Conservez le slug retenu à un seul endroit, comme le nœud Edit Fields au début du workflow, pour qu’un changement de modèle ne demande qu’une modification d’une seule ligne.

Relire avant de publier

L’automatisation ne doit pas publier à l’aveugle. Enregistrez les résultats dans un dossier, publiez une grille de miniatures dans un canal de discussion et attendez un pouce levé avant qu’une image n’atteigne un site. Deux minutes de relecture humaine valent mieux qu’une main cassée sur une photo de produit.

Deux collègues penchés vers un écran pour relire une grille de photographies

Une voie gratuite via PicassoIA

PicassoIA publie une API au fonctionnement similaire à Replicate. Sa page API liste quatre modèles : picassoia/picassoia-image pour le texte vers image, picassoia/picassoia-image-editor-pro pour retoucher et combiner des images, picassoia/picassoia-video, et picassoia/seedance-2.5-lite pour la vidéo avec audio synchronisé. La même page indique que « les prédictions API sont actuellement gratuites » et n’utilisent aucun crédit, et que la création de prédictions nécessite le plan Infinite. Vérifiez les conditions sur la page API de PicassoIA avant de bâtir dessus, car les plans évoluent. La concurrence est limitée à 5 prédictions par compte.

Lancer d’abord le prompt à la main

  1. Ouvrez la page du modèle PicassoIA Image.
  2. Collez le prompt rédigé par votre modèle de texte gratuit.
  3. Choisissez le format 16:9 et lancez la génération.
  4. Comparez le résultat avec le même prompt sur Seedream 4.5 ou Qwen Image 2512.
  5. Conservez les mots de style qui ont fonctionné et placez-les dans le champ style de votre nœud Edit Fields.

Créer, attendre, interroger, télécharger

Les tâches PicassoIA sont asynchrones, donc la mise en place n8n comporte quatre nœuds au lieu d’un seul :

  1. HTTP Request (création) : POST vers https://api.picassoia.com/v1/models/picassoia/picassoia-image/predictions avec un en-tête Bearer et le corps { "input": { "prompt": "...", "aspect_ratio": "16:9", "num_outputs": 1, "output_format": "webp" } }. Construisez-le avec JSON.stringify comme précédemment.
  2. Wait : cinq à dix secondes.
  3. HTTP Request (interrogation) : GET https://api.picassoia.com/v1/predictions/{{ $json.id }}.
  4. IF : quand status est égal à succeeded, continuez. Quand il vaut starting ou processing, revenez au nœud Wait. Quand il vaut failed ou canceled, dirigez vers votre alerte.

En cas de succès, le champ output contient une URL, ou une liste d’URL. Ajoutez un nœud HTTP Request supplémentaire avec le format de réponse réglé sur File pour le télécharger, puis réutilisez le même nœud de stockage qu’auparavant.

💡 Astuce : Vous voulez retoucher une photo au lieu d’en générer une ? PicassoIA Image Editor Pro gère la retouche et la combinaison d’images, et c’est le modèle à appeler pour les changements d’arrière-plan et la retouche de produits.

Les images que votre workflow enregistre peuvent aussi alimenter une étape vidéo. Les modèles image vers vidéo comme Wan 2.7 I2V, LTX 2.3 Fast et Seedance 2.0 transforment une image en un court clip, et PicassoIA Video est la route API pour la même idée. Ajoutez-la comme deuxième branche après le nœud de stockage afin qu’un seul sujet produise à la fois une image et une séquence.

Bureau d’un monteur vidéo avec un grand écran affichant une timeline floue et un casque de studio

Assurer le bon fonctionnement

Solutions aux pannes courantes

SymptômeCause probableSolution
HTTP 402Le compte n’a plus de créditsAjoutez des crédits, ou basculez l’étape en échec vers une voie gratuite
HTTP 429Limite de débit du modèle gratuitLoop Over Items, un nœud Wait et Retry On Fail
Corps JSON invalideDes guillemets dans le prompt ont cassé un modèle écrit à la mainConstruire le corps avec JSON.stringify
Le fichier ne s’ouvre pasMauvais nom de champ d’entrée, ou extension différente de media_typeUtilisez le nom de champ image_base64 et alignez l’extension sur output_format
Slug introuvableUn modèle a été renommé ou retiréRecharger la liste des modèles et mettre à jour le slug
Base64 corrompuLa route chat completions a renvoyé une URL de donnéesRetirer le préfixe data:image/...;base64, dans Edit Fields

La route chat completions, qui utilise un tableau modalities, est l’ancienne façon d’obtenir des images de modèles qui renvoient à la fois du texte et des images. Elle fonctionne toujours pour ces modèles, mais le point de terminaison image dédié fournit une réponse plus propre et c’est celui utilisé tout au long de cet article.

Surveiller l’apparition d’un modèle image gratuit

Des modèles image gratuits pourraient apparaître un jour, et vous voudrez le savoir le matin même. Construisez un second petit workflow :

  1. Un Schedule Trigger qui se déclenche une fois par semaine.
  2. Une requête HTTP Request vers https://openrouter.ai/api/v1/models?output_modalities=image, qui ne nécessite aucun token.
  3. Un nœud Code qui renvoie les identifiants se terminant par :free.
  4. Un nœud IF qui envoie un message uniquement si cette liste n’est pas vide.

Cela prend cinq minutes à monter, et cela signifie que la conclusion centrale de cet article est revérifiée automatiquement au lieu de devenir obsolète.

Essayez-le sur PicassoIA dès aujourd’hui

Votre workflow dispose désormais d’un cerveau gratuit pour les prompts, d’une étape d’image payante dont vous pouvez calculer le prix au centime près, et d’une branche à coût nul pour les périodes où le budget est serré. Le moyen le plus rapide de trouver le rendu souhaité est de lancer d’abord quelques prompts à la main. Ouvrez PicassoIA Image, collez le prompt rédigé par votre chaîne n8n, et comparez-le à Flux 2 Pro et Nano Banana Pro. Dès que l’un d’eux vous donne l’image que vous aviez en tête, copiez ses réglages dans le workflow et laissez-le tourner.

Partager cet article

Choisissez votre langue