Skip to content

メディア生成(動画、画像、音楽) ​

NordRouter では、テキストモデルと同じ sk-nr-… キー、同じ残高を使って画像、動画、音楽を生成できます。利用した分だけの従量課金で、トークンやパッケージはありません。

バックエンドからのみリクエスト可能。ブラウザーからはリクエストできません

ブラウザーから /media/* に直接リクエストすることはできません。CORS チェックで拒否され、Failed to fetch になります。

これは意図的な仕様です。このエンドポイントでは Authorization ヘッダーにキーが必要ですが、ブラウザーに渡した情報は開発者ツールを開けば誰でも確認できるため、キーが漏えいし、第三者に残高を使われるおそれがあります。fetch にヘッダーを設定しても防げません。

正しい構成:

ブラウザー → あなたのサーバー(キーはここで管理)→ nordrouter.com

生成されたファイルは通常のリンクで返されるため、ページ内の <img src> や <video src> にそのまま指定できます。追加の設定は不要です。

仕組み ​

生成は非同期で行われます(動画や音楽の生成には数秒から数分かかります)。

  1. タスクを作成 — モデルとパラメーターを指定して POST /media/generate を送信します。
  2. 結果を待つ — status が done になるまで GET /media/job/:id をポーリングします。
  3. ファイルを取得 — result_url(nordrouter.com 上のリンク)から取得します。

1. タスクを作成 ​

bash
curl https://nordrouter.com/media/generate \
  -H "Authorization: Bearer sk-nr-YOUR-KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "image/nano-banana-2",
    "input": { "prompt": "居心地のよい小屋、冬の森の中、水彩画", "resolution": "2k" }
  }'

応答:

json
{ "id": "beefb531-…", "model": "image/nano-banana-2", "status": "processing",
  "poll": "https://nordrouter.com/media/job/beefb531-…" }

エラーは常に { "error": "分かりやすいメッセージ", "code": "missing_param" } の形式です。code はコード内の分岐に便利です(invalid_input、missing_param、unknown_model、insufficient_balance、rate_limited、no_auth など)。error は人間向けのメッセージです。

2. 結果を待つ ​

bash
curl https://nordrouter.com/media/job/beefb531-…
json
{ "id": "beefb531-…", "status": "done",
  "result_url": "https://nordrouter.com/media/file/beefb531-…",
  "cost_usd": 0.052, "error": null }

status は processing → done(または failed)に変化します。生成されたファイルは result_url から取得できます。

🎵 Suno は1タスクにつき2曲を生成します。1曲目は result_url、2曲目は result_url_2(同じ形式のリンク)にあります。料金はタスク全体に対するもので、2曲分が含まれています。

Webhook(ポーリングの代わりに利用) ​

ポーリングを避けたい場合は、POST /media/generate に callback_url フィールドを指定してください。タスク完了時に、こちらから POST リクエストで結果を送信します。

bash
curl https://nordrouter.com/media/generate \
  -H "Authorization: Bearer sk-nr-YOUR-KEY" -H "Content-Type: application/json" \
  -d '{
    "model": "image/nano-banana-2",
    "input": { "prompt": "…" },
    "callback_url": "https://your-server.com/webhooks/nordrouter",
    "callback_secret": "あなたのシークレット"
  }'

タスクが done または failed になると、GET /media/job/:id の応答と同じ内容に event フィールドを追加した POST が callback_url に届きます。

json
{ "event": "media.completed", "id": "beefb531-…", "status": "done",
  "result_url": "https://nordrouter.com/media/file/beefb531-…", "cost_usd": 0.052, "error": null }

event は media.completed または media.failed です。

署名の検証。 callback_secret を設定すると、X-NR-Signature ヘッダーに sha256=<hmac> が含まれます。これは設定したシークレットを使い、リクエスト本文から計算した HMAC-SHA256 です。リクエストがこちらから送信されたことを確認するには、次のように照合します。

python
import hmac, hashlib
expected = "sha256=" + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
assert hmac.compare_digest(expected, request.headers["X-NR-Signature"])

要件と配信の信頼性:

  • callback_url は https:// のみ指定でき、公開アドレスである必要があります(内部 IP やプライベート IP はエラー 400 で拒否されます)。
  • 配信は最大4回試行され、間隔は段階的に長くなります。2xx を返してください。返さない場合は再試行します。
  • Webhook を使っていてもポーリングは可能です。併用するか、予備手段として GET /media/job/:id を利用できます。

詳細

タスクのライフサイクル、署名検証の例、配信の信頼性については、タスクとWebhook を参照してください。

3. モデル一覧と料金 ​

GET /media/models は、利用可能なモデル、そのパラメーター、料金の見積もりを返します。

json
{ "models": [
    { "id": "image/nano-banana-2", "type": "image",
      "fields": [ {"name":"prompt","type":"textarea"}, {"name":"resolution","type":"select","options":["1k","2k","4k"]},
                  {"name":"safety_filter","type":"bool","default":true} ],
      "est_usd": 0.052 }
  ], "retention_days": 14 }

モデル一覧

すべてのモデルの input パラメーターと料金については、メディア: 全モデルと課金 を参照してください。

モデル ​

95モデルを利用できます。パラメータと価格を含む最新の完全な一覧は、常に GET /media/models で確認できます。主なファミリー:

種類ファミリーモード価格の目安
🖼 画像Nano Banana / 2 / Pro (image/nano-banana*)テキスト→画像、編集、最大4K$0.025~
🖼Imagen 4 Fast / Ultra (image/imagen4*)テキスト→画像$0.025~
🖼GPT Image 1.5 / 2 (image/gpt-image-*)テキスト→画像、編集、最大4K$0.025~
🖼Flux 2 Pro / Flex (image/flux2-*)テキスト→画像、編集$0.03~
🖼Seedream v4 / 4.5 / 5 Lite (image/seedream-*)テキスト→画像、編集$0.04~
🖼Ideogram v3 / Character (image/ideogram-*)テキスト、リミックス、キャラクター$0.02~
🖼Qwen / Wan Image / Grok / Z-Imageテキスト→画像、編集$0.01~
🛠 ユーティリティTopaz / Recraft (image/*upscale*, image/recraft-remove-bg)最大8Kへのアップスケール、背景削除$0.01~
🎬 動画Veo 3.1 Lite / Fast / Quality (video/veo-3.1-*)テキスト/写真→動画$0.19~
🎬Kling 2.1 → 3.0 (video/kling-*)テキスト/写真→動画、モーション、アバター、最大4K・15秒$0.16~
🎬Wan 2.2 → 2.7 (video/wan-*)テキスト/写真/動画→動画、speech-to-video$0.25~
🎬Seedance 1.5 / 2 / Fast / Mini (video/seedance-*)テキスト/写真→動画、最大4K、音声$0.06~
🎬Hailuo 02 / 2.3 (video/hailuo-*)テキスト/写真→動画$0.08~
🎬HappyHorse 1.0 / 1.1 (video/happyhorse-*)テキスト/写真/参照画像→動画、動画編集$0.70~
🎬Grok Video / 1.5 (video/grok-*)テキスト/写真→動画、最大30秒$0.06~
🎬Gemini Omni (video/gemini-omni)音声付き動画、最大4K$0.39~
🗣 アバターKling Avatar, OmniHuman, InfiniteTalk, Lip Sync写真+音声→話す動画$0.19~
🎵 音楽Suno V6 / V6 Wild / V6 Mini (music/suno-*)テキスト/スタイル→2トラック、カバー、続きの生成、ボーカル、ステム、サウンド約$0.08
🎙 音声合成ElevenLabs Turbo / Multilingual (audio/elevenlabs-*)テキスト→音声、音声分離1000文字あたり$0.04~

パラメータ ​

パラメータはモデルによって異なります。正確な一覧は /media/models の fields フィールド(名前、型、選択肢、デフォルト値)を参照してください。名前は snake_case、値は小文字で統一されています。共通パラメータ:

  • prompt — 説明(すべての生成モデルで使用)。
  • resolution — 1k/2k/4k(画像)または 480p/720p/768p/1080p/4k(動画)。価格は解像度によって異なります。
  • aspect_ratio — 1:1、16:9、9:16 など。サイズを選択できるモデルでは 1:1-hd も指定できます。
  • duration — 動画の長さ(秒)。多くのモデルでは 5/10、Kling 3.0 と Wan 2.7 では最大 15、Grok では最大 30 です。動画は秒単位で課金されます。
  • audio — 動画の音声トラック(true/false)。音声付きは料金が高くなります。/media/estimate の見積もりに反映されます。
  • mode / quality / render_mode — 品質レベル(Kling 3.0 は standard/pro/4k、GPT Image は medium/high、Ideogram は fast/balanced/quality)。
  • safety_filter — 18歳以上向けコンテンツのフィルター(デフォルトで有効)。
  • enhance_prompt — モデルがプロンプトをより詳しく補完します(Qwen、Flux 3)。
  • file_format — ファイル形式(画像は png/jpeg、3Dは glb/obj/fbx/stl/usdz)。
  • image — 入力画像(編集、写真→動画)。直接リンクを渡すか、/media/upload からアップロードしてください。
  • video_url / audio_url — 入力動画/音声(動画編集、リップシンク、アバター)。

音楽: title、style、instrumental、version(v6、v6-wild、v6-mini)、advanced(タイトル、スタイル、長さ duration を指定する詳細設定)、exclude_styles、vocal(female/male)、continue_from(続きの生成を開始する秒数)。サウンドでは loop、bpm、tonality も指定できます。ステム分離では mode(vocals、stems、track)と track(抽出するトラック)を指定します。スタイルの詳細パラメータ: style_weight、weirdness、audio_weight(0~1)。

音声合成: text、voice(options にある短い音声名。例: james、bella、Zephyr)、speed。Geminiモデルでは style、pace、accent、voice_description、scene、temperature も指定できます。2人の音声による対話:

json
{ "model": "audio/gemini-3.1-flash-tts",
  "input": {
    "voices": [ { "voice": "Kore", "style": "newscaster" }, { "voice": "Puck", "pace": "fast" } ],
    "dialogue": [ { "speaker": 1, "text": "こんにちは!今日はゲストをお迎えしています…" }, { "speaker": 2, "text": "お招きいただきありがとうございます。" } ]
  } }

実行前に、同じ model と input を指定した POST /media/estimate で、構成ごとの正確な料金を確認できます。

以前のパラメータ名も引き続き使用できます

2026年10月19日に、パラメータ名と値が統一されました(snake_case、値は小文字)。以前のドキュメントに記載された名前や値をインテグレーションで使用している場合、変更は不要です。サーバーは以前の形式も受け付け、結果と料金は変わりません。/media/models とこのドキュメントには新しい形式のみ記載されています。

🧊 3Dモデル ​

テキストまたは写真から3Dモデルを生成します。出力はGLB(モデルによってOBJ、FBX、 STL、USDZ、USD、3MFにも対応)とプレビュー画像です。ジョブには複数のファイルが含まれ、 それぞれ拡張子が異なります。

呼び出し方法は他のメディアと同じです。POST /media/generate を実行し、 GET /media/job/{id} で状態を確認します。

bash
curl -X POST https://nordrouter.com/media/generate   -H "Authorization: Bearer $NR_KEY" -H "Content-Type: application/json"   -d '{"model":"3d/tripo-text","input":{"prompt":"陶器のマグカップ、マットな釉薬"}}'
id入力≈ 価格特徴
3d/tripo-text, 3d/tripo-imageテキスト、写真$0.31から最安、四角形ポリゴンメッシュ、PBR
3d/hunyuan-rapid-text, -imageテキスト、写真$0.43から高速、5種類のファイル形式
3d/seed3d-image写真$0.50からGLB、OBJ、USD、USDZ
3d/hunyuan-pro-text, -imageテキスト、写真$0.71から最大150万ポリゴン
3d/meshy-text, -image, -multi-imageテキスト、写真、最大4方向$0.94から最大8Kのテクスチャ、キャラクターのポーズ

テクスチャとしての写真。 3d/meshy-* モデルでは、画像 (texture_photo)またはテキストによる素材の説明(texture_text)を個別に指定できます。テクスチャはジオメトリとは別に設定されます。3d/meshy-multi-image は同じ物体を最大4方向から撮影した画像を受け取れるため、より正確なジオメトリを生成できます。

料金は生成後に確定します

3D生成は実際に使用したリソースに基づいて課金されるため、正確な金額はモデルの計算が完了した後に確定します。最大料金を一時的に確保し、計算完了後に実際の料金を請求して、差額を返金します。最終的な金額は常に cost_usd フィールドで確認できます。

スタジオでは、このようなモデルにラベルが表示され、同意後にのみ生成が開始されます。

時間がかかります。 3D生成には30秒から数分かかり、画像や短い動画より時間がかかります。ジョブ画面を開いたままにする必要はありません。状態は保存され、Webhookも利用できます。

料金と保存期間 ​

  • USD残高から実際の生成料金が差し引かれます。正確な金額は完了後に cost_usd で確認できます。
  • 生成に失敗した場合、課金されません。確保した金額は自動的に返金されます。
  • ファイルは当社サーバーに一定期間保存されます(/media/models の retention_days を参照)。保存するにはダウンロードしてください。