PopNowAPI 文档
集成
正文

用于 AI 图片与视频的 n8n 工作流

在 n8n 中使用内置的 HTTP Request 节点和 PopNow API 生成 AI 图片、视频和音频。包括可导入的工作流 JSON、凭证设置、轮询循环、Webhook,以及常见错误的解决方法。

使用 PopNow 不需要 n8n 社区节点:两个内置的 HTTP Request 节点,加上一个 Wait 和一个 If 节点,就足以创建任务、等待任务完成,并把文件交给工作流的后续步骤。同一种模式适用于所有图片、视频和音频模型,所以你可以把一张提示词表格送进文生图模型,把新的产品照片做成短视频,或者逐行为脚本配音。

本页与 popnow.ai 上的 n8n 页面保持一致,那里可以为你选择的任意模型生成同样的工作流。在自托管的 n8n 上,你还可以安装 PopNow 社区节点:打开 Settings > Community Nodes > Install,输入 n8n-nodes-popnow(npm、GitHub)即可。

一只小红狐蜷在茶杯里,由 Z-Image Turbo 生成
下方工作流按原样运行的结果:Z-Image Turbo,一张正方形图片,$0.01 USD。

你需要准备什么

  • n8n 1.x(云版或自托管)。HTTP Request 节点必须为 4 或更高版本。
  • 在 API 控制台创建的 PopNow API 密钥。给 n8n 单独建一个密钥,设好每日消费上限,避免循环失控耗尽余额。
  • 独立 API 美元余额中的资金,初始为 $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 都是 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 必须符合该模型的 schema
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 分钟内有效。如果需要保留文件,请在下一个节点里下载

更换模型或输入

编辑 Create task 的 JSON 请求体即可。每个模型的页面都列出了它的 ID、字段和价格;下面是几个常见的替换:

目标modelinput
图片中的文字效果更好google/nano-banana-2.1/text-to-imageprompt、aspect_ratio、resolution(1K 为 $0.048)
编辑一张照片google/nano-banana-2.1/editprompt、image_urls
照片转视频minimax/h3/image-to-videoprompt、image_url、duration_seconds(768p 5 秒为 $0.185)
配音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 节点上。

用 Webhook 代替轮询

对于较长的视频任务,让 PopNow 主动通知 n8n,而不是循环查询。在第二个工作流中添加一个 Webhook 触发节点(POST),复制它的生产环境地址,并把它作为 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"
}

Webhook 地址必须是公开的 HTTPS,所以本地的 n8n 需要使用隧道。每次投递都有签名;Webhook页说明了如何在 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);

价格

工作流只在 Create task 中花费 API 美元,查询任务免费。失败或过期任务不收费,用同一个 Idempotency-Key 重试节点不会重复扣费。批量运行前,先用 jobs/quote查询模型价格,规则见 API 余额与退款。

常见错误

n8n 显示原因解决方法
Create task 返回 401凭证缺失,或值中没有 Bearer 请求头的值必须是 Bearer sk-popnow-…
code: 400,msg 中带字段名某个字段不在模型的 schema 中,或值超出范围查看该模型的页面;未知字段会被拒绝
code: 40201API 美元余额不够冻结这个任务所需的金额在 API 账单充值,或换更便宜的模型或设置
code: 40202会超过该密钥的消费上限在 API 控制台中为这个密钥调高上限
code: 429请求过于频繁延长等待时间,或减少并行运行的条目数;见速率限制
循环永远不结束任务仍在运行,或 Finished? 读取了错误的字段视频可能需要几分钟;请确认 Check task 使用的是 Create task 返回的 taskId
fileUrl 一开始可用,之后返回 403签名链接约 20 分钟后失效在同一次运行中下载文件,或重新读取任务以获取新链接
state: failed模型无法完成,或拒绝了该内容没有收费;查看 errorCode,并参考错误码

PopNow 有官方的 n8n 社区节点吗?

有:n8n-nodes-popnow 已在 npm 上发布,源码开源在 GitHub。在自托管的 n8n 上,打开 Settings > Community Nodes > Install,输入 n8n-nodes-popnow 并确认;如果从命令行安装,请在 ~/.n8n/nodes 中运行 npm install n8n-nodes-popnow,然后重启 n8n。它还不是认证节点,所以 n8n Cloud 无法安装。你不一定需要它:内置的 HTTP Request 节点已能完成 API 的全部功能,在 n8n Cloud 上也能用,而且本页的工作流粘贴一次即可导入。

n8n 能同时运行多个生成任务吗?

可以。每个到达 Create task 的条目都会成为一个独立的任务,它们会并行生成。请留意速率限制,并为密钥设置消费上限。

怎样把生成的文件保存到 Google Drive 或 S3?

在 File URL 之后添加一个 HTTP Request 节点,把 fileUrl 下载为文件(响应格式选 File),然后把它交给 Google Drive、S3 或其他存储节点。

本页内容