PopNowDocs API
Intégrations
Contenu principal

Workflow n8n pour images et vidéo IA

Générez des images, vidéos et audios IA dans n8n avec le nœud HTTP Request intégré et l’API PopNow. JSON de workflow à importer, configuration de l’identifiant, boucle d’interrogation, webhooks et solutions aux erreurs courantes.

n8n n’a besoin d’aucun nœud communautaire pour utiliser PopNow : deux nœuds HTTP Request intégrés, un Wait et un If suffisent pour créer une tâche, l’attendre et transmettre le fichier au reste de votre workflow. Le même schéma fonctionne pour tous les modèles d’image, de vidéo et d’audio : vous pouvez donc envoyer un tableur de prompts vers un modèle texte-vers-image, transformer de nouvelles photos produit en courtes vidéos, ou sonoriser un script réplique par réplique.

Cette page correspond à la page n8n de popnow.ai, qui construit le même workflow pour le modèle de votre choix. Sur un n8n auto-hébergé, vous pouvez aussi installer le nœud communautaire PopNow : ouvrez Settings > Community Nodes > Install et saisissez n8n-nodes-popnow (npm, GitHub).

Un petit renard roux blotti dans une tasse à thé, généré par Z-Image Turbo
Le workflow ci-dessous tel qu’il est écrit : Z-Image Turbo, une image carrée, $0.01 USD.

Ce qu’il vous faut

  • n8n 1.x (cloud ou auto-hébergé). Le nœud HTTP Request doit être en version 4 ou plus récente.
  • Une clé API PopNow depuis la console API. Donnez à n8n sa propre clé, avec un plafond de dépense quotidien, pour qu’une boucle qui s’emballe ne vide pas votre solde.
  • Des fonds API dans votre solde séparé en USD. Il commence à $0 ; approvisionnez-le dans Facturation API. Les tests avec le modèle ci-dessous coûtent $0.01 chacun ; les crédits du site ne les paient pas.

1. Créer l’identifiant

Dans n8n, ouvrez Credentials → Add credential → Header Auth et renseignez :

ChampValeur
NomPopNow
Nom de l’en-têteAuthorization
Valeur de l’en-têteBearer sk-popnow-… (votre clé, précédée du mot Bearer suivi d’un espace)

Pour vérifier la clé avant de construire quoi que ce soit, lancez ceci dans un terminal ; il lit votre solde et ne coûte rien :

curl "https://api.popnow.ai/api/v1/chat/credit" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

Lisez availableUsd, heldUsd et totalUsd comme des chaînes décimales USD pour le solde API.

2. Importer le workflow

Copiez le JSON, cliquez sur un espace vide du canevas n8n et collez-le. Ouvrez ensuite Create task et Check task, et sélectionnez l’identifiant PopNow dans les deux.

Le workflow s’exécute ainsi : Start → Create task → Wait 5 s → Check task → Finished? Si la tâche tourne encore, il revient à l’attente ; une fois terminée, File URL renvoie state, fileUrl et error.

Rôle de chaque nœud :

NœudRéglagePourquoi
Create taskPOST /api/v1/jobs/createTask, corps JSON { "model", "input" }model est n’importe quel identifiant de modèle de Modèles ; input doit respecter le schéma de ce modèle
Create taskEn-tête Idempotency-Key: {{ $execution.id }}Si n8n relance le nœud, vous récupérez la même tâche au lieu de payer deux fois. Voir Idempotence
Wait 5 s5 secondesLes images se terminent en général en une ou deux boucles ; une vidéo prend de une à trois minutes
Check taskGET /api/v1/jobs/recordInfo?taskId=…Lit le state et l’output de la tâche
Finished?state est final et aucun fichier n’est encore en cours de copiesucceeded, failed et expired sont finals ; voir Tâches
File URLdata.output.assets[0].urlUn lien signé valable une vingtaine de minutes. Téléchargez-le dans le nœud suivant si vous voulez garder le fichier

Changer de modèle ou d’entrée

Modifiez le corps JSON de Create task. La page de chaque modèle indique son identifiant, ses champs et son prix. Quelques échanges courants :

Objectifmodelinput
Un meilleur texte dans les imagesgoogle/nano-banana-2.1/text-to-imageprompt, aspect_ratio, resolution ($0.048 en 1K)
Retoucher une photogoogle/nano-banana-2.1/editprompt, image_urls
Photo vers vidéominimax/h3/image-to-videoprompt, image_url, duration_seconds ($0.185 pour 5 s en 768p)
Voix offgoogle/gemini-3.8-flash-tts/text-to-speechtext, voice_id

Pour utiliser les données d’un nœud précédent, passez le corps en expression, par exemple :

n8n expression for the JSON body
{{ JSON.stringify({ model: 'alibaba/z-image-turbo/text-to-image', input: { prompt: $json.prompt, aspect_ratio: '16:9' } }) }}

Les fichiers issus de nœuds précédents ont besoin d’une URL https publique ou d’un envoi préalable. Médias présente les trois appels d’envoi, qui correspondent à trois nœuds HTTP Request.

Utiliser un webhook plutôt que l’interrogation

Pour les longues tâches vidéo, laissez PopNow appeler n8n au lieu de boucler. Ajoutez un nœud déclencheur Webhook (POST) dans un second workflow, copiez son URL de production et passez-la comme callBackUrl dans le corps de Create task :

{
  "model": "minimax/h3/image-to-video",
  "input": { "image_url": "https://media.popnow.ai/movie/lighthouse.webp", "prompt": "The waves roll in slowly" },
  "callBackUrl": "https://your-n8n.example.com/webhook/popnow"
}

L’URL du webhook doit être en HTTPS public : un n8n local a donc besoin d’un tunnel. Chaque envoi est signé ; Webhooks montre comment vérifier la signature dans un nœud Code, et pourquoi vous devez stocker request_id pour ignorer les envois répétés.

Le même appel hors de n8n

Utile pour tester un corps avant de le coller dans le nœud.

curl -X POST "https://api.popnow.ai/api/v1/jobs/createTask?wait=60" \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"model": "alibaba/z-image-turbo/text-to-image", "input": {"prompt": "A small red fox curled up in a teacup, soft morning light, studio photo", "aspect_ratio": "1:1"}}'
Python
import os, uuid, requests

res = requests.post(
    "https://api.popnow.ai/api/v1/jobs/createTask",
    params={"wait": 60},
    headers={"Authorization": f"Bearer {os.environ['POPNOW_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
    json={"model": "alibaba/z-image-turbo/text-to-image", "input": {"prompt": "A small red fox curled up in a teacup, soft morning light, studio photo", "aspect_ratio": "1:1"}},
    timeout=90,
).json()
print(res["data"]["state"], res["data"].get("output", {}).get("assets", [{}])[0].get("url"))
JavaScript
const res = await fetch('https://api.popnow.ai/api/v1/jobs/createTask?wait=60', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.POPNOW_API_KEY}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': crypto.randomUUID(),
  },
  body: JSON.stringify({
    model: 'alibaba/z-image-turbo/text-to-image',
    input: { prompt: 'A small red fox curled up in a teacup, soft morning light, studio photo', aspect_ratio: '1:1' },
  }),
});
const { data } = await res.json();
console.log(data.state, data.output?.assets?.[0]?.url);

Tarifs

Le workflow ne dépense des USD API que dans Create task ; lire les tâches est gratuit. Une tâche qui échoue ou expire ne coûte rien, et un nœud relancé avec le même Idempotency-Key n’est pas débité deux fois. Calculez le prix de chaque modèle avec jobs/quote avant de le lancer à grande échelle, et consultez Solde API et remboursements pour les règles.

Erreurs courantes

n8n afficheCauseSolution
401 depuis Create taskL’identifiant manque, ou la valeur n’est pas précédée de Bearer La valeur de l’en-tête doit être Bearer sk-popnow-…
code: 400 avec un nom de champ dans msgUn champ ne figure pas dans le schéma du modèle, ou une valeur est hors plageConsultez la page du modèle ; les champs inconnus sont refusés
code: 40201Pas assez d’USD API pour la réservation de cette tâcheApprovisionnez Facturation API, ou choisissez un modèle ou réglage moins cher
code: 40202Le plafond de dépense de la clé serait dépasséAugmentez le plafond de cette clé dans la console API
code: 429Trop de requêtesAllongez l’attente, ou traitez moins d’éléments en parallèle ; voir Limites de débit
La boucle ne s’arrête jamaisLa tâche tourne encore, ou Finished? lit le mauvais champUne vidéo peut prendre plusieurs minutes ; vérifiez que Check task lit le taskId de Create task
fileUrl fonctionne, puis renvoie 403 plus tardLes liens signés durent une vingtaine de minutesTéléchargez le fichier dans le même passage, ou relisez la tâche pour obtenir un lien neuf
state: failedLe modèle n’a pas pu aller au bout, ou a refusé le contenuRien n’a été débité ; lisez errorCode et consultez Erreurs

Existe-t-il un nœud communautaire PopNow officiel pour n8n ?

Oui : n8n-nodes-popnow est publié sur npm et en open source sur GitHub. Sur un n8n auto-hébergé, ouvrez Settings > Community Nodes > Install, saisissez n8n-nodes-popnow et confirmez ; depuis un shell, lancez npm install n8n-nodes-popnow dans ~/.n8n/nodes, puis redémarrez n8n. Ce n’est pas encore un nœud vérifié, donc n8n Cloud ne peut pas l’installer. Vous n’en avez pas besoin : le nœud HTTP Request intégré couvre tout ce que fait l’API, fonctionne sur n8n Cloud, et le workflow de cette page s’importe en un seul collage.

n8n peut-il lancer plusieurs générations à la fois ?

Oui. Chaque élément qui atteint Create task devient sa propre tâche, et elles sont rendues en parallèle. Surveillez les limites de débit et utilisez un plafond de dépense sur la clé.

Comment enregistrer le fichier généré dans Google Drive ou S3 ?

Ajoutez un nœud HTTP Request après File URL qui télécharge fileUrl comme fichier (format de réponse File), puis transmettez-le au nœud Google Drive, S3 ou à tout autre nœud de stockage.

Sur cette page