API gratuite de génération d’images pour n8n : flux de travail et configuration

Une mise en place pratique pour générer des images depuis n8n avec une API gratuite. Créez le jeton, enregistrez-le comme identifiant, construisez la requête POST et la boucle de polling Wait et Switch, sauvegardez le fichier et limitez les lots à cinq tâches pour que les exécutions en masse se terminent sans erreur.

API gratuite de génération d’images pour n8n : flux de travail et configuration
Cristian Da Conceicao
Fondateur de Picasso IA

Vous pouvez intégrer une API gratuite de génération d’images dans n8n en une vingtaine de minutes, et la partie qui pose problème n’est pas la requête. C’est l’attente. Les tâches de génération d’images sur l’API PicassoIA sont asynchrones : un simple nœud HTTP Request vous renvoie un ID de tâche au lieu d’une image, et tout ce qui suit dépend de la qualité de votre polling, de vos nouvelles tentatives et de la sauvegarde du résultat. Ce tutoriel construit la boucle complète : un déclencheur, un prompt, un POST qui crée la prédiction, une paire Wait et IF qui interroge le statut jusqu’à la fin de la tâche, puis une étape de téléchargement qui transforme la sortie en un vrai fichier dans votre flux.

Les mains d’un développeur sur un ordinateur portable, à côté d’une tasse de café, en lumière du matin

Si vous avez déjà utilisé l’API Replicate, vous vous y retrouverez. Sinon, ce n’est pas grave : chaque appel de cet article est présenté avec l’URL, l’en-tête et le corps exacts dont vous avez besoin, ainsi que les expressions n8n qui relient les nœuds entre eux.

Ce que vous offre l’API

PicassoIA expose une API pour développeurs qui fonctionne comme l’API de prédiction de Replicate. Vous créez une tâche, vous l’interrogez, puis vous lisez le résultat. Il n’y a ni streaming ni callback webhook à configurer, ce qui est une bonne nouvelle pour n8n, car le polling est une tâche que l’éditeur gère très bien.

Un carnet ouvert sur un bureau en bois, avec un schéma dessiné à la main de cinq boîtes reliées

Points de terminaison et modèles

L’URL de base est https://api.picassoia.com/v1, et chaque requête transporte un jeton Bearer qui commence par pia_sk_. Quatre points de terminaison gèrent tout le cycle de vie d’une tâche :

ActionMéthode et cheminÀ quoi il sert
Créer une tâchePOST /v1/models/{owner}/{name}/predictionsLancer une génération
Vérifier une tâcheGET /v1/predictions/{id}Interroger le statut et lire le résultat
Annuler une tâchePOST /v1/predictions/{id}/cancelArrêter une tâche dont vous n’avez plus besoin
Lister les tâchesGET /v1/predictionsAuditer les exécutions récentes

Pour les images fixes, deux modèles comptent. picassoia/picassoia-image est le modèle de texte vers image, documenté sur la page PicassoIA Image. Il est illimité, prend en charge sept formats, accepte un seed et exporte en JPG, PNG ou WebP. picassoia/picassoia-image-editor-pro gère les modifications d’images existantes et se trouve sur PicassoIA Image Editor Pro. Deux modèles vidéo fonctionnent sur le même style de point de terminaison, ce qui devient utile une fois votre flux d’images stable et que vous voulez du mouvement à partir du même déclencheur.

Limites à connaître

Avant de concevoir quoi que ce soit, notez ces chiffres sur un post-it :

  • 5 prédictions simultanées par compte, partagées entre tous les jetons et toutes les connexions MCP que vous possédez
  • 4 000 caractères maximum par prompt
  • 10 Mo maximum pour le corps de requête
  • 3 heures avant qu’une tâche expire
  • 2 tokens API maximum par compte

La limite de concurrence façonne votre flux plus que tout le reste. Nous y reviendrons dans la section sur les échecs, car un tableur de 200 lignes dépassera cinq tâches en deux secondes environ si vous le laissez faire.

💡 Vérifiez votre offre avant de promettre le « gratuit » à un client. Les pages de l’API indiquent que les prédictions sont actuellement gratuites et ne consomment aucun crédit, mais la documentation mentionne aussi une offre Infinite pour l’accès à l’API, et la page tarifaire liste l’accès API sur plusieurs niveaux. Ces informations ne concordent pas parfaitement : vérifiez ce que votre compte autorise avant de bâtir un livrable client dessus.

Comment utiliser PicassoIA Image

Lancez d’abord votre prompt dans le navigateur. C’est gratuit, cela prend dix secondes et vous indique si la formulation est bonne avant de passer une après-midi à déboguer des nœuds.

Une femme en pull en maille qui regarde un ordinateur portable dans un bureau à domicile

  1. Ouvrez la page du modèle PicassoIA Image et connectez-vous.
  2. Rédigez votre prompt comme un photographe, et non comme une requête de recherche. Nommez le sujet, le décor, la lumière et l’objectif. « Mug en céramique sur lin, lumière de fenêtre venant de la gauche, 50 mm, faible profondeur de champ » vaut mieux que « jolie photo de mug ».
  3. Choisissez le format. Utilisez 16:9 pour les en-têtes de blog, 1:1 pour les vignettes produit et 9:16 pour les stories et les publicités verticales.
  4. Choisissez le format de sortie. Le JPG est celui par défaut, le WebP donne des fichiers plus légers, le PNG conserve chaque pixel.
  5. Décidez du nombre d’images par exécution (une ou deux). Une fois un résultat satisfaisant, verrouillez le seed pour pouvoir le reproduire.
  6. Générez, puis notez chaque réglage utilisé. Ces noms exacts iront plus tard dans le corps de la requête API.

Les champs du navigateur correspondent un à un au corps de la requête, donc rien ne se perd en route :

ChampValeur par défautRemarques
promptaucune (obligatoire)Description en langage courant, jusqu’à 4 000 caractères
aspect_ratio1:1Également 16:9, 9:16, 4:3, 3:4, 3:2, 2:3
seedaléatoireEntier, à définir pour obtenir un résultat reproductible
output_formatjpgjpg, png ou webp
output_quality80De 0 à 100, s’applique uniquement au JPG et au WebP
num_outputs1Une ou deux images par appel

💡 Écrire quarante prompts à la main devient vite pénible. Rédigez des variantes dans un modèle de chat comme GPT 5 Mini ou Claude 4.5 Haiku, gardez les meilleures et collez-les dans le tableur que lit votre flux.

Configurer l’identifiant n8n

La plupart des configurations échouent à cette étape, et non dans le flux. Consacrez deux minutes à ceci et vous n’aurez plus à penser à l’authentification.

Créer le jeton API

Ouvrez la page API de votre compte PicassoIA et créez un jeton. Il commencera par pia_sk_. Copiez-le immédiatement dans un gestionnaire de mots de passe. Comme un compte ne peut détenir que deux jetons, utilisez-en un pour la production n8n et gardez le second pour les tests en local, afin de pouvoir révoquer l’un sans casser l’autre.

Un cadenas en laiton fermé sur une porte en chêne patinée

Testez-le depuis un terminal avant que n8n n’intervienne :

curl -s -X POST https://api.picassoia.com/v1/models/picassoia/picassoia-image/predictions \
  -H "Authorization: Bearer $PICASSOIA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"input":{"prompt":"Ceramic mug on linen, window light from the left, 50mm","aspect_ratio":"16:9"}}'

Une réponse JSON contenant un id signifie que le jeton fonctionne. Interrogez-la avec GET https://api.picassoia.com/v1/predictions/<id> jusqu’à ce que le statut affiche succeeded, puis observez la structure du champ output. Vous en aurez besoin dans un instant.

Stocker le jeton dans n8n

Dans n8n, ouvrez Identifiants, créez un nouvel identifiant Header Auth et renseignez-le comme suit :

  • Nom : Authorization
  • Valeur : Bearer pia_sk_ suivi de votre jeton, avec une seule espace après « Bearer »
  • Nom de l’identifiant : PicassoIA API

Ne collez jamais le jeton dans un nœud Set ni directement dans un champ HTTP Request. Il finit dans les journaux d’exécution et dans tout flux que vous exportez ou partagez. Un identifiant enregistré reste à l’écart des deux. Sur une instance auto-hébergée, vous pouvez aussi l’injecter via une variable d’environnement, mais le magasin d’identifiants est plus simple et suffit pour la plupart des équipes.

Le flux, nœud par nœud

Voici la structure complète. Huit nœuds, une boucle :

#NœudSon rôle
1Schedule Trigger ou WebhookDémarre l’exécution
2Edit Fields (Set)Contient le prompt, le format et le type de fichier
3HTTP Request (POST)Crée la prédiction
4WaitFait une pause de quelques secondes
5HTTP Request (GET)Lit le statut de la tâche
6Switch ou IFOriente selon succeeded, failed ou « toujours en cours »
7HTTP Request (GET, file)Télécharge l’image terminée
8Drive, S3 ou Write FilesStocke l’image là où vous en avez besoin

Un développeur debout à son bureau, regardant un écran avec des blocs de flux connectés

Nœud de déclenchement et de prompt

Commencez par un Schedule Trigger si le travail est récurrent, ou par un Webhook si un autre outil doit pouvoir demander des images. Faites-le suivre d’un nœud Edit Fields qui définit trois champs de type chaîne : prompt, aspect_ratio et output_format. Les regrouper dans un seul nœud vous permet de modifier un réglage une fois, et non à cinq endroits.

Créer la prédiction

Ajoutez un nœud HTTP Request et nommez-le Create prediction. Réglez la méthode sur POST et l’URL sur https://api.picassoia.com/v1/models/picassoia/picassoia-image/predictions. Dans l’authentification, choisissez Generic Credential Type, puis Header Auth, puis votre identifiant PicassoIA API. Activez Send Body, choisissez JSON et utilisez ce corps :

{
  "input": {
    "prompt": "{{ $json.prompt }}",
    "aspect_ratio": "{{ $json.aspect_ratio }}",
    "output_format": "{{ $json.output_format }}",
    "num_outputs": 1
  }
}

Si vos prompts peuvent contenir des guillemets ou des sauts de ligne, construisez le corps sous forme d’expression à la place : {{ JSON.stringify({ input: { prompt: $json.prompt, aspect_ratio: $json.aspect_ratio, output_format: $json.output_format, num_outputs: 1 } }) }}. Ce seul changement évite l’erreur classique « invalid JSON » sur des prompts comme a sign that says "OPEN".

La réponse contient l’ID de la tâche, id. C’est la seule valeur dont le reste du flux a vraiment besoin.

Attendre et interroger

Ajoutez un nœud Wait réglé pour reprendre après un intervalle de temps, cinq secondes pour commencer. Puis un second nœud HTTP Request nommé Check prediction, avec la méthode GET et cette URL :

https://api.picassoia.com/v1/predictions/{{ $('Create prediction').item.json.id }}

Envoyez le résultat dans un nœud Switch qui lit {{ $json.status }} et envoie succeeded vers l’étape de téléchargement, failed vers votre branche d’erreur, et tout le reste vers le nœud Wait. Cette connexion qui revient en arrière est votre boucle.

Un sablier en verre avec du sable qui tombe sur un bureau en bois

Deux habitudes sécurisent la boucle. D’abord, comptez les tentatives. Un petit nœud Code qui incrémente un champ attempts et s’arrête à 30 vous sauvera d’une tâche qui ne se termine jamais. Ensuite, n’interrogez pas plus vite que le temps de traitement. Les images se terminent rapidement, donc un intervalle de trois à cinq secondes suffit, et solliciter le point de terminaison de statut toutes les demi-secondes ne fait que consommer des exécutions.

Télécharger l’image

Passons maintenant à la sortie. Ajoutez un troisième nœud HTTP Request, méthode GET, avec l’URL définie sur l’adresse de l’image issue de la tâche terminée. Pour une sortie unique, c’est généralement {{ $json.output[0] }}, mais exécutez la boucle une fois avec un prompt de test et vérifiez la structure dans le panneau d’exécution avant de faire confiance à cette expression. Dans les Options du nœud, ajoutez Response, réglez Response Format sur File et laissez la propriété binaire sur data.

À partir de là, l’image est un fichier binaire n8n classique. Envoyez-la vers Google Drive, S3, un point de terminaison de médias WordPress, Slack ou un dossier local. Sauvegardez le fichier lui-même plutôt que le lien du résultat, pour que vos archives ne dépendent jamais d’une URL qui reste active.

Gérer les échecs et les limites

Un flux qui fonctionne une fois n’est qu’une démo. Un flux qui survit à 200 lignes un lundi matin est un outil. La différence tient surtout à cette section.

Une vue aérienne d’un péage avec cinq voies ouvertes et une voiture dans chacune

Rester sous cinq tâches simultanées

Voici le piège. L’appel POST renvoie sa réponse en une fraction de seconde, donc un nœud HTTP Request alimenté par 50 lignes lancera 50 tâches presque instantanément, bien avant que la première ne se termine. Seules cinq peuvent tourner en même temps, et les autres seront rejetées ou mises en file d’attente selon la réponse de l’API.

La solution est un nœud Loop Over Items avec une taille de lot réglée sur 5, placé avant l’étape de création. Chaque lot crée cinq tâches, les interroge jusqu’à ce que les cinq soient terminées, sauvegarde les fichiers, puis seulement après revient chercher les cinq suivantes. Gardez à l’esprit que la limite est partagée à l’échelle de votre compte, connexions MCP comprises. Si un collègue génère des images via un assistant connecté en même temps, vous partagez les mêmes cinq emplacements.

Relancer les prédictions en échec

Un statut failed n’est pas toujours de votre faute. Dirigez-le vers un nœud Wait court (dix secondes conviennent), puis renvoyez le même prompt une fois. Si la seconde tentative échoue aussi, arrêtez les nouvelles tentatives et prévenez quelqu’un via le nœud Slack, Gmail ou Telegram. Réessayer sans fin ne fait que masquer un mauvais prompt.

Pour les simples aléas réseau, ouvrez l’onglet Settings du nœud HTTP Request et activez Retry On Fail avec trois tentatives et une pause de deux secondes. Cela gère les connexions interrompues sans toucher à la logique de votre boucle.

Longueur des prompts et taille des requêtes

Les prompts sont plafonnés à 4 000 caractères. Si vos prompts proviennent de saisies utilisateur ou d’un grand modèle de langage, raccourcissez-les dans un nœud Code avec $json.prompt.slice(0, 4000) avant qu’ils n’atteignent l’API. La limite de 10 Mo ne vous gênera pas pour la génération d’images à partir de texte seul, mais elle compte dès que vous envoyez des images sources à l’éditeur.

Un homme fatigué d’une quarantaine d’années, plissant les yeux devant un ordinateur portable tard le soir

Si quelque chose casse malgré tout, ce tableau liste les causes habituelles :

SymptômeCause probableSolution
401 UnauthorizedPréfixe Bearer manquant ou jeton erronéRessaisissez la valeur de l’identifiant sous la forme Bearer pia_sk_...
Tâches rejetées lors des exécutions en massePlus de 5 prédictions simultanéesLoop Over Items avec une taille de lot de 5
output[0] est indéfiniLa sortie est lue avant que le statut soit succeededNe dirigez que la branche succeeded vers le nœud de téléchargement
Le nœud de téléchargement renvoie du JSONResponse Format laissé sur la valeur par défautRéglez Response Format sur File
Prompt rejetéPlus de 4 000 caractèresRaccourcissez le prompt dans un nœud Code
Le flux ne se termine jamaisAucune limite sur le nombre d’interrogationsArrêtez après 30 interrogations et alertez quelqu’un

Les codes d’erreur exacts viennent de l’API elle-même. Ouvrez donc l’exécution en échec et lisez le corps de la réponse avant de deviner.

Trois flux qui valent la peine d’être créés

La même boucle alimente des tâches très différentes. Changez le déclencheur et la destination, gardez le cœur.

Trois tasses en céramique faites main, sauge, crème et terracotta, sur une toile de lin

En-têtes de blog planifiés

Reliez un Schedule Trigger à un nœud Google Sheets qui renvoie les lignes marquées todo. Construisez le prompt à partir du titre de l’article, plus une ligne de style fixe : « photographie documentaire, lumière naturelle, 35 mm, sans texte ». Générez en 16:9, importez le visuel dans votre médiathèque et écrivez l’URL du fichier dans la ligne, avec le statut done. Un éditeur peut mettre vingt titres en file d’attente le soir et retrouver vingt en-têtes prêts le matin.

Visuels produit depuis un tableur

Une ligne par produit, avec des colonnes pour le nom du produit, le matériau et le décor. Générez au format 1:1, réglez num_outputs sur 2 pour pouvoir choisir la meilleure image, et conservez un seul seed par gamme de produits afin que l’éclairage reste cohérent sur tout le catalogue. Pour les visuels qui nécessitent d’ajuster une photo existante plutôt que d’en inventer une, envoyez cette photo dans le modèle PicassoIA Image Editor Pro avec un second nœud HTTP Request. Consultez sa page de modèle pour les champs de saisie exacts qu’il attend.

Publications sociales depuis un webhook

Laissez un formulaire, une commande Slack ou un autre flux appeler votre nœud Webhook avec un bref descriptif. Utilisez le nœud Respond to Webhook pour répondre tout de suite par « bien reçu », puis lancez la génération en arrière-plan et publiez l’image 9:16 terminée dans le canal lorsque la tâche réussit. Les utilisateurs restent satisfaits, car rien ne reste bloqué pendant que l’image se génère.

Choisir le bon modèle

Au moment de la rédaction, l’API expose quatre modèles : deux pour les images et deux pour la vidéo. Pour votre flux n8n, la paire d’images est toute la décision.

ModèleIdéal pourOù il s’intègre dans n8n
PicassoIA ImageNouvelles images à partir d’un prompt, exécutions illimitéesLe nœud Create prediction par défaut
PicassoIA Image Editor ProModifier ou corriger une photo que vous possédez déjàUne seconde branche qui reçoit une image source

Le reste du catalogue reste utile, simplement pas via l’API aujourd’hui. Des modèles comme P Image et FLUX Schnell valent la peine d’être testés dans le navigateur pour comparer les styles, et la plateforme propose aussi la suppression d’arrière-plan, l’upscaling (augmentation de la résolution) et une vaste bibliothèque d’effets vidéo via sa page tous les modèles. Une méthode pratique : essayez un style dans le navigateur, puis reproduisez dans n8n le prompt et le seed gagnants.

Générez votre première image dès aujourd’hui

Vous disposez maintenant de tout ce qu’il faut pour une boucle fonctionnelle : un jeton stocké en sécurité, un POST qui crée la tâche, un Wait et un Switch qui l’interrogent, un téléchargement File qui sauvegarde le résultat, et des lots de cinq qui respectent la limite de concurrence. Le moyen le plus rapide de le prouver est de garder la première version minimale. Un nœud Edit Fields, un prompt, pas de tableur, pas de boucle sur les éléments. Quand cette image unique arrive dans votre dossier, ajoutez les lots et la planification.

Ouvrez PicassoIA Image dans votre navigateur, écrivez un prompt sur quelque chose dont vous avez réellement besoin cette semaine, puis générez-le. Copiez ensuite ce prompt exact, le format et le seed dans le flux n8n ci-dessus. Essayez un en-tête en 16:9, une vignette carrée pour produit et une story verticale à partir du même prompt, et voyez laquelle votre équipe utilise en premier. Tout ce que vous testez est à un clic sur Picasso IA, il ne reste donc plus qu’à lancer le flux.

Partager cet article

Choisissez votre langue