Flujo de n8n para imágenes y video con IA
Genera imágenes, video y audio con IA en n8n con el nodo HTTP Request integrado y la API de PopNow. JSON del flujo listo para importar, configuración de la credencial, bucle de consulta, webhooks y soluciones a los errores comunes.
n8n no necesita ningún nodo de la comunidad para usar PopNow: dos nodos integrados HTTP Request, un Wait y un If bastan para crear una tarea, esperarla y pasar el archivo al resto de tu flujo. El mismo patrón sirve para todos los modelos de imagen, video y audio, así que puedes pasar una hoja de cálculo de prompts a un modelo de texto a imagen, convertir fotos de producto nuevas en videos cortos o locutar un guion línea por línea.
Esta página coincide con la página de n8n en popnow.ai, que construye el mismo flujo para el modelo que elijas. En n8n autoalojado también puedes instalar el nodo de la comunidad de PopNow: abre Settings > Community Nodes > Install e introduce n8n-nodes-popnow (npm, GitHub).

Qué necesitas
- n8n 1.x (en la nube o autoalojado). El nodo HTTP Request debe ser la versión 4 o posterior.
- Una clave de API de PopNow desde la consola de la API. Dale a n8n su propia clave con un tope de gasto diario, para que un bucle descontrolado no vacíe tu saldo.
- Fondos en tu saldo independiente en USD de la API. Empieza en $0; añade fondos en API billing. Las pruebas con el modelo de abajo cuestan $0.01 cada una; los créditos de la web no pueden pagarlas.
1. Crea la credencial
En n8n abre Credentials → Add credential → Header Auth y completa:
| Campo | Valor |
|---|---|
| Name | PopNow |
| Header name | Authorization |
| Header value | Bearer sk-popnow-… (tu clave, con la palabra Bearer y un espacio delante) |
Para comprobar la clave antes de construir nada, ejecuta esto en una terminal; lee tu saldo y no cuesta nada:
curl "https://api.popnow.ai/api/v1/chat/credit" \
-H "Authorization: Bearer $POPNOW_API_KEY"Lee availableUsd, heldUsd y totalUsd como cadenas decimales en USD para el saldo de la API.
2. Importa el flujo
Copia el JSON, haz clic en un espacio vacío del lienzo de n8n y pega. Luego abre Create task y Check task y selecciona la credencial PopNow en ambos.
El flujo funciona así: Start → Create task → Wait 5 s → Check task → Finished? Si la tarea sigue en marcha, vuelve a la espera; cuando termina, File URL devuelve state, fileUrl y error.
Qué hace cada nodo:
| Nodo | Ajuste | Por qué |
|---|---|---|
| Create task | POST /api/v1/jobs/createTask, cuerpo JSON { "model", "input" } | model es cualquier ID de modelo de Modelos; input debe coincidir con el esquema de ese modelo |
| Create task | Cabecera Idempotency-Key: {{ $execution.id }} | Si n8n reintenta el nodo, recibes la misma tarea en lugar de pagar dos veces. Consulta Idempotencia |
| Wait 5 s | 5 segundos | Las imágenes suelen terminar en uno o dos ciclos; el video tarda entre uno y tres minutos |
| Check task | GET /api/v1/jobs/recordInfo?taskId=… | Lee el state y el output de la tarea |
| Finished? | state es final y ningún archivo se sigue copiando | succeeded, failed y expired son finales; consulta Tareas |
| File URL | data.output.assets[0].url | Un enlace firmado que funciona unos 20 minutos. Descárgalo en el siguiente nodo si necesitas conservar el archivo |
Cambia el modelo o la entrada
Edita el cuerpo JSON de Create task. La página de cada modelo enumera su ID, sus campos y su precio; estos son algunos cambios habituales:
| Objetivo | model | input |
|---|---|---|
| Mejor texto en las imágenes | google/nano-banana-2.1/text-to-image | prompt, aspect_ratio, resolution ($0.048 en 1K) |
| Editar una foto | google/nano-banana-2.1/edit | prompt, image_urls |
| Foto a video | minimax/h3/image-to-video | prompt, image_url, duration_seconds ($0.185 por 5 s en 768p) |
| Locución | google/gemini-3.8-flash-tts/text-to-speech | text, voice_id |
Para usar datos de un nodo anterior, cambia el cuerpo a una expresión, por ejemplo:
{{ JSON.stringify({ model: 'alibaba/z-image-turbo/text-to-image', input: { prompt: $json.prompt, aspect_ratio: '16:9' } }) }}Los archivos de nodos anteriores necesitan una URL https pública o una subida previa; Medios muestra las tres llamadas de subida, que se corresponden con tres nodos HTTP Request.
Usa un webhook en lugar de sondear
En los trabajos de video largos, deja que PopNow llame a n8n en lugar de hacer bucles. Añade un nodo disparador Webhook (POST) en un segundo flujo, copia su URL de producción y pásala como callBackUrl en el cuerpo 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"
}La URL del webhook debe ser HTTPS pública, así que un n8n local necesita un túnel. Cada entrega va firmada; Webhooks explica cómo verificar la firma en un nodo Code, y por qué conviene guardar request_id para ignorar las entregas repetidas.
La misma llamada fuera de n8n
Útil para probar un cuerpo antes de pegarlo en el 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);Precios
El flujo solo gasta USD de la API en Create task; leer tareas es gratis. Una tarea que falla o caduca no cuesta nada, y un nodo reintentado con la misma Idempotency-Key no se cobra dos veces. Cotiza cada modelo con jobs/quote antes de ejecutarlo a gran escala, y consulta Saldo de la API y reembolsos para las reglas.
Errores comunes
| n8n muestra | Por qué | Solución |
|---|---|---|
401 desde Create task | Falta la credencial, o el valor no lleva Bearer | El valor de la cabecera debe ser Bearer sk-popnow-… |
code: 400 con un nombre de campo en msg | Un campo no está en el esquema del modelo, o un valor está fuera de rango | Revisa la página del modelo; los campos desconocidos se rechazan |
code: 40201 | No hay USD suficientes en la API para la retención de esta tarea | Añade fondos en API billing, o elige un modelo o un ajuste más barato |
code: 40202 | Se superaría el tope de gasto de la clave | Sube el tope de esta clave en la consola de la API |
code: 429 | Demasiadas solicitudes | Alarga la espera o ejecuta menos elementos en paralelo; consulta Límites de uso |
| El bucle nunca termina | La tarea sigue en marcha, o Finished? lee el campo equivocado | El video puede tardar minutos; asegúrate de que Check task lea el taskId de Create task |
fileUrl funciona, pero luego devuelve 403 | Los enlaces firmados duran unos 20 minutos | Descarga el archivo en la misma ejecución, o vuelve a leer la tarea para obtener un enlace nuevo |
state: failed | El modelo no pudo terminar, o rechazó el contenido | No se cobró nada; lee errorCode y consulta Errores |
¿Existe un nodo de la comunidad oficial de PopNow para n8n?
Sí: n8n-nodes-popnow está en npm y es de código abierto en GitHub. En n8n autoalojado, abre Settings > Community Nodes > Install, introduce n8n-nodes-popnow y confirma; desde una terminal, ejecuta npm install n8n-nodes-popnow en ~/.n8n/nodes y reinicia n8n. Todavía no es un nodo verificado, así que n8n Cloud no puede instalarlo. No lo necesitas: el nodo HTTP Request integrado cubre todo lo que hace la API, funciona en n8n Cloud, y el flujo de esta página se importa con un solo pegado.
¿Puede n8n ejecutar varias generaciones a la vez?
Sí. Cada elemento que llega a Create task se convierte en su propia tarea, y se renderizan en paralelo. Vigila los límites de uso y usa un tope de gasto en la clave.
¿Cómo guardo el archivo generado en Google Drive o S3?
Añade un nodo HTTP Request después de File URL que descargue fileUrl como archivo (formato de respuesta File), y luego pásalo al nodo de Google Drive, S3 o cualquier otro almacenamiento.
Relacionados
Recetas
Imágenes en lote desde un CSV, de foto a video, locuciones y notificaciones en Python y Node.
Webhooks
Callbacks firmados, reintentos y gestión de duplicados.
ComfyUI
Un nodo personalizado que ejecuta modelos de PopNow en tu grafo.
Crea el flujo para cualquier modelo
La página de n8n en popnow.ai genera este JSON para el modelo que elijas.
Recetas y habilidades
Ejecuta recetas y flujos de trabajo guardados a través de la API o MCP. Cotiza y aprueba un presupuesto en USD, sigue cada paso y reanuda las ejecuciones pausadas con la clave de API original.
ComfyUI
Ejecuta modelos de imagen, video y audio con IA en la nube dentro de ComfyUI con el paquete oficial de nodos de PopNow desde ComfyUI Manager, o con un solo archivo de nodo personalizado. Sin GPU ni descargas de modelos; pasos de instalación, entradas, precios y soluciones a errores.

