PopNowДокументация API
Интеграции
Основное содержимое

Воркфлоу n8n для AI-изображений и видео

Генерируйте AI-изображения, видео и аудио в n8n со встроенным узлом HTTP Request и API PopNow. JSON воркфлоу для импорта, настройка учётных данных, цикл опроса, вебхуки и решения частых ошибок.

Для PopNow в n8n не нужен community-узел: достаточно двух встроенных узлов HTTP Request, а также Wait и If, чтобы создать задачу, дождаться её и передать файл дальше по воркфлоу. Тот же шаблон работает для каждой модели изображений, видео и аудио: можно прогнать таблицу с промптами через модель «текст в изображение», превратить новые фото товаров в короткие видео или озвучивать сценарий построчно.

Эта страница соответствует странице n8n на popnow.ai, где собран такой же воркфлоу для любой выбранной модели. В self-hosted n8n можно также установить community-узел PopNow: откройте Settings > Community Nodes > Install и введите n8n-nodes-popnow (npm, GitHub).

Маленькая рыжая лиса, свернувшаяся калачиком в чашке чая, сгенерирована моделью Z-Image Turbo
Воркфлоу ниже в том виде, в каком он написан: Z-Image Turbo, одно квадратное изображение, $0.01 USD.

Что понадобится

  • n8n 1.x (облако или self-hosted). Узел HTTP Request должен быть версии 4 или новее.
  • API-ключ PopNow из API-консоли. Дайте n8n собственный ключ с дневным лимитом расходов, чтобы зациклившийся воркфлоу не мог опустошить баланс.
  • Средства API на отдельном балансе в USD. Начальный баланс — $0; пополните его в разделе Оплата API. Каждый тестовый запуск модели ниже стоит $0.01; кредиты сайта его не оплатят.

1. Создайте учётные данные

В n8n откройте Credentials → Add credential → Header Auth и заполните:

ПолеЗначение
NamePopNow
Header nameAuthorization
Header valueBearer sk-popnow-… (ваш ключ, перед ним — слово Bearer и пробел)

Чтобы проверить ключ до того, как что-либо собирать, выполните это в терминале. Команда читает баланс и ничего не стоит:

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

Читайте availableUsd, heldUsd и totalUsd как десятичные строки в USD для баланса API.

2. Импортируйте воркфлоу

Скопируйте JSON, кликните по свободному месту на холсте n8n и вставьте. Затем откройте Create task и Check task и выберите в обоих учётные данные PopNow.

Воркфлоу работает так: Start → Create task → Wait 5 s → Check task → Finished? Если задача ещё выполняется, он возвращается к ожиданию. Когда она готова, File URL выводит state, fileUrl и error.

Что делает каждый узел:

УзелНастройкаЗачем
Create taskPOST /api/v1/jobs/createTask, JSON-тело { "model", "input" }model — любой ID модели со страницы Модели; input должен соответствовать схеме этой модели
Create taskЗаголовок Idempotency-Key: {{ $execution.id }}Если n8n повторит узел, вы получите ту же задачу вместо второго списания. См. Идемпотентность
Wait 5 s5 секундИзображения обычно готовы за один-два цикла; видео занимает от одной до трёх минут
Check taskGET /api/v1/jobs/recordInfo?taskId=…Читает state и output задачи
Finished?state конечный, и ни один файл ещё не копируетсяsucceeded, failed и expired — конечные состояния; см. Задачи
File URLdata.output.assets[0].urlПодписанная ссылка, действует около 20 минут. Если файл нужно сохранить, скачайте его в следующем узле

Смените модель или входные данные

Измените JSON-тело Create task. На странице каждой модели указаны её ID, поля и цена. Несколько частых замен:

Цельmodelinput
Точнее передаёт текст на изображенииgoogle/nano-banana-2.1/text-to-imageprompt, aspect_ratio, resolution ($0.048 за 1K)
Редактировать фотоgoogle/nano-banana-2.1/editprompt, image_urls
Фото в видеоminimax/h3/image-to-videoprompt, image_url, duration_seconds ($0.185 за 5 с при 768p)
Озвучкаgoogle/gemini-3.8-flash-tts/text-to-speechtext, voice_id

Чтобы использовать данные из предыдущего узла, переведите тело в выражение, например:

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

Файлы из предыдущих узлов нужны по публичной ссылке https или сначала загруженные. В разделе Медиа показаны три вызова загрузки, которые соответствуют трём узлам HTTP Request.

Используйте вебхук вместо опроса

Для долгих видеозадач пусть PopNow сам вызывает n8n, вместо того чтобы крутить цикл. Добавьте во второй воркфлоу триггер-узел Webhook (POST), скопируйте его production-адрес и передайте его как callBackUrl в тело 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"
}

Адрес вебхука должен быть публичным HTTPS, поэтому локальному n8n нужен туннель. Каждая доставка подписана. В разделе Вебхуки показано, как проверить подпись в узле Code и почему стоит сохранять request_id, чтобы игнорировать повторные доставки.

Тот же вызов вне n8n

Удобно, чтобы проверить тело запроса до того, как вставить его в узел.

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

Цены

Воркфлоу тратит USD API только в Create task; чтение задач бесплатно. Задача, которая не удалась или истекла, ничего не стоит, а повторно выполненный узел с тем же Idempotency-Key не списывается дважды. Перед запуском в большом объёме узнайте цену каждой модели через jobs/quote. Правила описаны в разделе Баланс API и возвраты.

Частые ошибки

n8n показываетПричинаРешение
401 от Create taskУчётные данные не заданы или в значении нет Bearer Значение заголовка должно быть Bearer sk-popnow-…
code: 400 с именем поля в msgПоля нет в схеме модели или значение вне допустимого диапазонаПроверьте страницу модели; неизвестные поля отклоняются
code: 40201USD API не хватает на резерв этой задачиПополните баланс в разделе Оплата API или выберите более дешёвую модель или настройку
code: 40202Превышен лимит расходов ключаПоднимите лимит для этого ключа в API-консоли
code: 429Слишком много запросовУвеличьте паузу или запускайте меньше элементов параллельно; см. Лимиты запросов
Цикл не заканчиваетсяЗадача ещё выполняется или Finished? читает не то полеВидео может идти минутами; убедитесь, что Check task берёт taskId из Create task
fileUrl работает, а потом возвращает 403Подписанные ссылки действуют около 20 минутСкачайте файл в том же запуске или заново прочитайте задачу, чтобы получить новую ссылку
state: failedМодель не смогла завершить работу или отклонила содержимоеНичего не списано; прочитайте errorCode и см. Ошибки

Есть ли официальный community-узел PopNow для n8n?

Да: n8n-nodes-popnow опубликован на npm, исходный код открыт на GitHub. В self-hosted n8n откройте Settings > Community Nodes > Install, введите n8n-nodes-popnow и подтвердите. Из терминала можно выполнить npm install n8n-nodes-popnow в ~/.n8n/nodes и перезапустить n8n. Узел пока не прошёл верификацию, поэтому установить его в n8n Cloud нельзя. Он и не нужен: встроенный узел HTTP Request покрывает всё, что умеет API, работает в n8n Cloud, а воркфлоу с этой страницы импортируется одной вставкой.

Может ли n8n запускать несколько генераций одновременно?

Да. Каждый элемент, дошедший до Create task, становится отдельной задачей, и они выполняются параллельно. Следите за лимитами запросов и ставьте лимит расходов на ключ.

Как сохранить готовый файл в Google Drive или S3?

Добавьте после File URL узел HTTP Request, который скачивает fileUrl как файл (формат ответа File), и передайте его в узел Google Drive, S3 или любого другого хранилища.

На этой странице