Workflow n8n per immagini e video AI
Genera immagini, video e audio AI in n8n con il nodo HTTP Request integrato e l’API PopNow. JSON del workflow importabile, configurazione della credenziale, ciclo di polling, webhook e correzioni per gli errori più comuni.
n8n non richiede un nodo della community per usare PopNow: bastano due nodi HTTP Request integrati, un Wait e un If per creare un’attività, attenderne il completamento e passare il file al resto del tuo workflow. Lo stesso schema funziona per ogni modello di immagini, video e audio, quindi puoi dare in pasto a un modello da testo a immagine un foglio di prompt, trasformare nuove foto di prodotto in brevi video, o dare voce a una sceneggiatura riga per riga.
Questa pagina corrisponde alla pagina n8n su popnow.ai, che costruisce lo stesso workflow per il modello che scegli. Su n8n self-hosted puoi anche installare il nodo della community di PopNow: apri Settings > Community Nodes > Install e inserisci n8n-nodes-popnow (npm, GitHub).

Cosa ti serve
- n8n 1.x (cloud o self-hosted). Il nodo HTTP Request deve essere di versione 4 o successiva.
- Una chiave API PopNow dalla console API. Dai a n8n una chiave tutta sua con un tetto di spesa giornaliero, così un ciclo fuori controllo non può svuotare il saldo.
- Fondi API nel saldo separato in USD. Parte da $0; aggiungi fondi in Fatturazione API. Ogni prova con il modello qui sotto costa $0.01; i crediti del sito non possono pagarla.
1. Crea la credenziale
In n8n apri Credentials → Add credential → Header Auth e compila:
| Campo | Valore |
|---|---|
| Name | PopNow |
| Header name | Authorization |
| Header value | Bearer sk-popnow-… (la tua chiave, con la parola Bearer e uno spazio davanti) |
Per verificare la chiave prima di costruire qualsiasi cosa, esegui questo comando in un terminale; legge il saldo e non costa nulla:
curl "https://api.popnow.ai/api/v1/chat/credit" \
-H "Authorization: Bearer $POPNOW_API_KEY"Leggi availableUsd, heldUsd e totalUsd come stringhe decimali in USD del saldo API.
2. Importa il workflow
Copia il JSON, clicca su uno spazio vuoto della tela di n8n e incollalo. Poi apri Create task e Check task e seleziona in entrambi la credenziale PopNow.
Il workflow esegue: Start → Create task → Wait 5 s → Check task → Finished? Se l’attività è ancora in corso, torna al passo di attesa; quando è completata, File URL restituisce state, fileUrl ed error.
Cosa fa ogni nodo:
| Nodo | Impostazione | Perché |
|---|---|---|
| Create task | POST /api/v1/jobs/createTask, corpo JSON { "model", "input" } | model è un qualsiasi ID di modello da Modelli; input deve rispettare lo schema di quel modello |
| Create task | Header Idempotency-Key: {{ $execution.id }} | Se n8n riprova il nodo, ricevi la stessa attività invece di pagare due volte. Vedi Idempotenza |
| Wait 5 s | 5 secondi | Le immagini di solito finiscono in uno o due cicli; un video richiede da uno a tre minuti |
| Check task | GET /api/v1/jobs/recordInfo?taskId=… | Legge lo state e l’output dell’attività |
| Finished? | state è finale e nessun file è ancora in copia | succeeded, failed ed expired sono finali; vedi Attività |
| File URL | data.output.assets[0].url | Un link firmato valido per circa 20 minuti. Scaricalo nel nodo successivo se devi conservare il file |
Cambia modello o input
Modifica il corpo JSON di Create task. La pagina di ogni modello elenca il suo ID, i suoi campi e il suo prezzo; alcuni scambi comuni:
| Obiettivo | model | input |
|---|---|---|
| Testo più leggibile nelle immagini | google/nano-banana-2.1/text-to-image | prompt, aspect_ratio, resolution ($0.048 a 1K) |
| Modificare una foto | google/nano-banana-2.1/edit | prompt, image_urls |
| Da foto a video | minimax/h3/image-to-video | prompt, image_url, duration_seconds ($0.185 per 5 s a 768p) |
| Voiceover | google/gemini-3.8-flash-tts/text-to-speech | text, voice_id |
Per usare i dati di un nodo precedente, passa il corpo a un’espressione, per esempio:
{{ JSON.stringify({ model: 'alibaba/z-image-turbo/text-to-image', input: { prompt: $json.prompt, aspect_ratio: '16:9' } }) }}I file dei nodi precedenti richiedono un URL https pubblico oppure un caricamento prima; Media mostra le tre chiamate di caricamento, che corrispondono a tre nodi HTTP Request.
Usa un webhook invece del polling
Per i video lunghi, lascia che PopNow chiami n8n invece di fare un ciclo. Aggiungi un nodo trigger Webhook (POST) in un secondo workflow, copia il suo URL di produzione e passalo come callBackUrl nel corpo di 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 del webhook deve essere HTTPS pubblico, quindi un n8n locale richiede un tunnel. Ogni consegna è firmata; Webhook mostra come verificare la firma in un nodo Code, e perché conviene salvare request_id per ignorare le consegne ripetute.
La stessa chiamata fuori da n8n
Utile per provare un corpo prima di incollarlo nel nodo.
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"}}'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"))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);Prezzi
Il workflow spende USD API solo in Create task; leggere le attività è gratuito. Un’attività fallita o scaduta non costa nulla, e un nodo ritentato con lo stesso Idempotency-Key non viene addebitato due volte. Calcola il prezzo di ogni modello con jobs/quote prima di eseguirlo su larga scala, e leggi Saldo API e rimborsi per le regole.
Errori comuni
| n8n mostra | Perché | Soluzione |
|---|---|---|
401 da Create task | La credenziale manca, oppure il valore non contiene Bearer | Il valore dell’header deve essere Bearer sk-popnow-… |
code: 400 con un nome di campo in msg | Un campo non è nello schema del modello, oppure un valore è fuori intervallo | Controlla la pagina del modello; i campi sconosciuti vengono rifiutati |
code: 40201 | USD API insufficienti per la trattenuta di questa attività | Aggiungi fondi in Fatturazione API, oppure scegli un modello o un’impostazione più economici |
code: 40202 | Il tetto di spesa della chiave verrebbe superato | Alza il tetto di questa chiave nella console API |
code: 429 | Troppe richieste | Allunga l’attesa, oppure esegui meno elementi in parallelo; vedi Limiti di frequenza |
| Il ciclo non finisce mai | L’attività è ancora in corso, oppure Finished? legge il campo sbagliato | I video possono richiedere minuti; assicurati che Check task legga il taskId da Create task |
fileUrl funziona, poi più tardi restituisce 403 | I link firmati durano circa 20 minuti | Scarica il file nella stessa esecuzione, oppure rileggi l’attività per ottenere un link nuovo |
state: failed | Il modello non ha potuto terminare, oppure ha rifiutato il contenuto | Non è stato addebitato nulla; leggi errorCode e vedi Errori |
Esiste un nodo della community PopNow ufficiale per n8n?
Sì: n8n-nodes-popnow è su npm ed è open source su GitHub. Su n8n self-hosted apri Settings > Community Nodes > Install, inserisci n8n-nodes-popnow e conferma; da una shell, esegui npm install n8n-nodes-popnow in ~/.n8n/nodes e riavvia n8n. Non è ancora un nodo verificato, quindi n8n Cloud non può installarlo. Non ti serve: il nodo HTTP Request integrato copre tutto ciò che fa l’API, funziona su n8n Cloud, e il workflow di questa pagina si importa con un solo incolla.
Posso far girare più generazioni insieme in n8n?
Sì. Ogni elemento che arriva a Create task diventa una propria attività, e le attività vengono generate in parallelo. Tieni d’occhio i limiti di frequenza e usa un tetto di spesa sulla chiave.
Come salvo il file generato su Google Drive o S3?
Aggiungi un nodo HTTP Request dopo File URL che scarica fileUrl come file (formato di risposta File), poi passalo al nodo Google Drive, S3 o a un altro nodo di archiviazione.
Correlati
Ricette
Immagini in batch da un CSV, da foto a video, voiceover e notifiche in Python e Node.
Webhook
Callback firmati, nuovi tentativi e gestione dei duplicati.
ComfyUI
Un nodo personalizzato che fa girare i modelli PopNow nel tuo grafo.
Crea il workflow per qualsiasi modello
La pagina n8n su popnow.ai genera questo JSON per il modello che scegli.
Ricette e skill salvate
Esegui ricette e workflow salvati tramite API o MCP. Richiedi un preventivo e approva un budget in USD, segui ogni passaggio e riprendi le esecuzioni in pausa con la chiave API originale.
ComfyUI
Esegui modelli cloud di immagini, video e audio con l’AI dentro ComfyUI con il pacchetto di nodi ufficiale PopNow da ComfyUI Manager, oppure con un unico file di nodo. Nessuna GPU né download di modelli; passaggi di installazione, input, prezzi e correzioni degli errori.

