PopNowDocs API
Integrazioni
Contenuto principale

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).

Una piccola volpe rossa rannicchiata in una tazza da tè, generata con Z-Image Turbo
Il workflow qui sotto così com’è scritto: Z-Image Turbo, un’immagine quadrata, $0.01 USD.

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:

CampoValore
NamePopNow
Header nameAuthorization
Header valueBearer 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:

NodoImpostazionePerché
Create taskPOST /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 taskHeader Idempotency-Key: {{ $execution.id }}Se n8n riprova il nodo, ricevi la stessa attività invece di pagare due volte. Vedi Idempotenza
Wait 5 s5 secondiLe immagini di solito finiscono in uno o due cicli; un video richiede da uno a tre minuti
Check taskGET /api/v1/jobs/recordInfo?taskId=…Legge lo state e l’output dell’attività
Finished?state è finale e nessun file è ancora in copiasucceeded, failed ed expired sono finali; vedi Attività
File URLdata.output.assets[0].urlUn 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:

Obiettivomodelinput
Testo più leggibile nelle immaginigoogle/nano-banana-2.1/text-to-imageprompt, aspect_ratio, resolution ($0.048 a 1K)
Modificare una fotogoogle/nano-banana-2.1/editprompt, image_urls
Da foto a videominimax/h3/image-to-videoprompt, image_url, duration_seconds ($0.185 per 5 s a 768p)
Voiceovergoogle/gemini-3.8-flash-tts/text-to-speechtext, voice_id

Per usare i dati di un nodo precedente, passa il corpo a un’espressione, per esempio:

n8n expression for the JSON body
{{ 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"}}'
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);

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 mostraPerchéSoluzione
401 da Create taskLa 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 msgUn campo non è nello schema del modello, oppure un valore è fuori intervalloControlla la pagina del modello; i campi sconosciuti vengono rifiutati
code: 40201USD API insufficienti per la trattenuta di questa attivitàAggiungi fondi in Fatturazione API, oppure scegli un modello o un’impostazione più economici
code: 40202Il tetto di spesa della chiave verrebbe superatoAlza il tetto di questa chiave nella console API
code: 429Troppe richiesteAllunga l’attesa, oppure esegui meno elementi in parallelo; vedi Limiti di frequenza
Il ciclo non finisce maiL’attività è ancora in corso, oppure Finished? legge il campo sbagliatoI video possono richiedere minuti; assicurati che Check task legga il taskId da Create task
fileUrl funziona, poi più tardi restituisce 403I link firmati durano circa 20 minutiScarica il file nella stessa esecuzione, oppure rileggi l’attività per ottenere un link nuovo
state: failedIl modello non ha potuto terminare, oppure ha rifiutato il contenutoNon è 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.

In questa pagina