PopNowAPI ドキュメント
連携
本文

n8n で作る AI 画像・動画のワークフロー

組み込みの HTTP Request ノードと PopNow API で、n8n から AI の画像・動画・音声を生成します。取り込めるワークフロー JSON、認証情報の設定、ポーリングの流れ、Webhook、よくあるエラーの直し方まで。

PopNow の利用に n8n のコミュニティノードは必要ありません。組み込みの HTTP Request ノードを 2 つと、Wait、If があれば、タスクを作成し、完了を待ち、ファイルを後続の処理に渡せます。同じ形で画像・動画・音声のすべてのモデルを扱えるので、プロンプトの一覧表を文字から画像のモデルに流したり、新しい商品写真を短い動画にしたり、台本を 1 行ずつ音声にしたりできます。

このページは popnow.ai の n8n ページと対応しており、そちらでは選んだモデル向けの同じワークフローを作れます。セルフホストの n8n では、PopNow のコミュニティノードも入れられます。Settings > Community Nodes > Install を開き、n8n-nodes-popnow と入力してください(npm、GitHub)。

ティーカップで丸くなる小さな赤いキツネ。Z-Image Turbo で生成
下のワークフローをそのまま使った場合:Z-Image Turbo で正方形の画像 1 枚、$0.01 USD。

必要なもの

  • n8n 1.x(クラウド版またはセルフホスト)。HTTP Request ノードはバージョン 4 以降が必要です。
  • API コンソールで発行した PopNow の API キー。n8n には専用のキーを 1 本作り、1 日の利用上限を設定してください。ループが暴走しても残高を使い切らずに済みます。
  • 独立した USD 残高の API 資金。初期残高は $0 で、API billing で入金します。以下のモデルでテストすると 1 回 $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 残高の USD 十進数文字列として読み取ってください。

2. ワークフローを取り込む

JSON をコピーし、n8n のキャンバスの空いている場所をクリックして貼り付けます。次に Create task と Check task を開き、両方で PopNow の認証情報を選んでください。

ワークフローの流れは Start → Create task → Wait 5 s → Check task → Finished? です。タスクがまだ実行中なら Wait に戻ります。完了すると 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 秒画像は通常 1〜2 回のループで終わり、動画は 1〜3 分かかります
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

前のノードのデータを使うには、本文を式(expression)に切り替えます。例:

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 の URL か、先にアップロードしたものが必要です。メディアに 3 回のアップロード手順があり、それぞれを 1 つの HTTP Request ノードに対応させられます。

ポーリングの代わりに Webhook を使う

長い動画ジョブでは、ループする代わりに PopNow から n8n を呼び出してもらいます。2 つ目のワークフローに Webhook トリガーノード(POST)を追加し、その本番用 URL をコピーして、Create task の本文に callBackUrl として渡します。

{
  "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 の URL は公開された HTTPS でなければならないので、ローカルの n8n にはトンネルが必要です。各配信には署名が付きます。Code ノードで署名を確認する方法は Webhook にあり、重複配信を無視するために request_id を保存すべき理由もそこに書いてあります。

n8n の外で同じ呼び出し

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

料金

ワークフローが API USD を使うのは Create task だけで、タスクの読み取りは無料です。失敗・期限切れのタスクは課金されず、同じ Idempotency-Key で再試行されたノードは二重に課金されません。大量に実行する前に、各モデルの料金を jobs/quote で確認し、ルールは API 残高と返金を参照してください。

よくあるエラー

n8n の表示原因対処
Create task から返る 401認証情報がない、または値に Bearer が付いていないヘッダーの値は Bearer sk-popnow-… にしてください
msg にフィールド名が入った code: 400フィールドがモデルのスキーマにない、または値が範囲外モデルのページを確認してください。未知のフィールドは拒否されます
code: 40201このタスクの確保に必要な API USD が足りないAPI billing で入金するか、より安いモデルや設定を選んでください
code: 40202キーの利用上限を超えるAPI コンソールでこのキーの上限を上げてください
code: 429リクエストが多すぎる待ち時間を長くするか、並列で実行する数を減らしてください。レート制限を参照
ループが終わらないタスクがまだ実行中か、Finished? が誤ったフィールドを読んでいる動画は数分かかることがあります。Check task が Create task の taskId を読んでいるか確認してください
fileUrl は最初は動くが、あとで 403 になる署名付きリンクは約 20 分で切れる同じ実行中にファイルをダウンロードするか、タスクを読み直して新しいリンクを取得してください
state: failedモデルが完了できなかった、またはコンテンツを断った課金はありません。errorCode を確認し、エラーを参照してください

n8n 向けの PopNow コミュニティノードはありますか?

あります。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、その他のストレージノードに渡します。

このページの内容