PopNowDocs de la API
Integraciones
Contenido principal

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

Un pequeño zorro rojo acurrucado en una taza de té, generado por Z-Image Turbo
El flujo de abajo tal como está escrito: Z-Image Turbo, una imagen cuadrada, $0.01 USD.

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:

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

NodoAjustePor qué
Create taskPOST /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 taskCabecera Idempotency-Key: {{ $execution.id }}Si n8n reintenta el nodo, recibes la misma tarea en lugar de pagar dos veces. Consulta Idempotencia
Wait 5 s5 segundosLas imágenes suelen terminar en uno o dos ciclos; el video tarda entre uno y tres minutos
Check taskGET /api/v1/jobs/recordInfo?taskId=…Lee el state y el output de la tarea
Finished?state es final y ningún archivo se sigue copiandosucceeded, failed y expired son finales; consulta Tareas
File URLdata.output.assets[0].urlUn 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:

Objetivomodelinput
Mejor texto en las imágenesgoogle/nano-banana-2.1/text-to-imageprompt, aspect_ratio, resolution ($0.048 en 1K)
Editar una fotogoogle/nano-banana-2.1/editprompt, image_urls
Foto a videominimax/h3/image-to-videoprompt, image_url, duration_seconds ($0.185 por 5 s en 768p)
Locucióngoogle/gemini-3.8-flash-tts/text-to-speechtext, voice_id

Para usar datos de un nodo anterior, cambia el cuerpo a una expresión, por ejemplo:

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

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 muestraPor quéSolución
401 desde Create taskFalta 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 msgUn campo no está en el esquema del modelo, o un valor está fuera de rangoRevisa la página del modelo; los campos desconocidos se rechazan
code: 40201No hay USD suficientes en la API para la retención de esta tareaAñade fondos en API billing, o elige un modelo o un ajuste más barato
code: 40202Se superaría el tope de gasto de la claveSube el tope de esta clave en la consola de la API
code: 429Demasiadas solicitudesAlarga la espera o ejecuta menos elementos en paralelo; consulta Límites de uso
El bucle nunca terminaLa tarea sigue en marcha, o Finished? lee el campo equivocadoEl video puede tardar minutos; asegúrate de que Check task lea el taskId de Create task
fileUrl funciona, pero luego devuelve 403Los enlaces firmados duran unos 20 minutosDescarga el archivo en la misma ejecución, o vuelve a leer la tarea para obtener un enlace nuevo
state: failedEl modelo no pudo terminar, o rechazó el contenidoNo 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.

En esta página