Skip to content
NEWNano Banana 2.1 が登場 — Google の最新画像生成モデル、1 枚 $0.0336 から、ネイティブ 4K、前世代の約半額モデルを見る
HopBase
← ブログに戻る

動画生成 API 比較と実装ガイド:Kling 4.0・Seedance・Hailuo

結論から:Kling 4.0(kling-v4)、Seedance 2.5、MiniMax Hailuo H3 は、HopBase のベースURL https://api.hop-base.com/v1 と1本のAPIキーで、同じ「投稿(POST /v1/video/generate)→ ポーリング(GET /v1/video/tasks/{task_id})→ ダウンロード」の流れで呼び出せます。違いはリクエストの形とタスクIDの位置だけです。Kling 4.0 は 3〜30 秒・720p/1080p・常に音声付きで、公式定価は 720p が $0.1471/秒。結果URLは完了から 24 時間有効、失敗したタスクは課金されず、完了したタスクには実際の控除額 usage.cost_usd が付きます。支払いは米ドルの従量課金で、サブスクリプションは不要です。

なぜ「1つのキーで比較」なのか

動画生成モデルは得意分野が分かれています。人物の動きやカメラワーク、音声の有無、尺の上限、参照素材の扱いがモデルごとに違うため、プロダクトに組み込む前に同じプロンプトで複数モデルを試すのが現実的です。ところがモデルごとに別々のアカウント、別々の決済、別々のAPI仕様を用意すると、比較の前に契約と実装で時間が溶けます。

HopBase では、1本のAPIキーに最大 10 個のグループ(パッケージ)を含められます。Kling、Seedance、Hailuo はそれぞれ別グループなので、使いたいグループをキーに追加すれば、同じキーで3系統を呼び分けられます。キーで使えるモデルは GET /v1/models が返すものだけで、存在しないIDを近いモデルに勝手に振り替えることはありません。

3モデルの仕様と公式定価(2026-10-29 時点)

項目 Kling 4.0 Seedance 2.5 MiniMax Hailuo H3
モデルID kling-v4 dreamina-seedance-2-5-260628 MiniMax-H3
尺 3〜30 秒 -1(自動)または 4〜30 秒 4〜15 秒
解像度 720p / 1080p 480p / 720p / 1080p(1080p はグループにより異なる) 768P / 2K
音声 常に音声付き(audio=false でも同価格) 既定で音声を生成 常にステレオ音声付き
入力 テキスト、先頭フレーム画像 テキスト、参照画像・動画(公開URL) テキスト、先頭/末尾フレーム、参照画像・動画・音声
公式定価 720p $0.1471/秒、1080p $0.2206/秒 動画入力なし 480p/720p $10.70、1080p $11.70(100万動画トークンあたり) 768P $0.08/秒、2K $0.13/秒
タスクID id(kt…) task.id(vt…) id(mmt…)

公式定価は 料金ページ に掲載している各モデルの定価です。あなたのアカウントでの実際の単価は、ログイン後のモデル広場に表示されます。

試算例(公式定価):kling-v4 で 720p・10 秒の動画は 10 × $0.1471 = 約 $1.47、MiniMax-H3 で 768P・6 秒は 6 × $0.08 = $0.48 です。

モデル選びのヒント

  • Kling 4.0:テキストから、または1枚の先頭フレームから最大 30 秒まで。参照画像・参照動画・被写体・マルチショット(shots)には対応していないので、それらが必要なら kling-v3 / kling-v3-omni を使います。先頭フレームを渡すと、出力は入力画像のアスペクト比に従い aspect_ratio は無視されます。
  • Seedance 2.5:編集・延長・先頭/末尾フレームなどのモードがあり、参照素材は公開 HTTP(S) URL で渡します。詳しくは Seedance のドキュメントを参照してください。
  • Hailuo H3:テキストのみの生成では ratio の明示が必須です。より速く仕上げたい場合は MiniMax-H3-Max(480P/768P、5〜15 秒、5 秒の動画が通常数秒で完成)という選択肢もあります。

最小リクエスト(curl)

export HOPBASE_API_KEY="sk-..."   # キーはコードに直書きせず環境変数で

# 使えるモデルIDを確認
curl https://api.hop-base.com/v1/models \
  -H "Authorization: Bearer $HOPBASE_API_KEY"

# Kling 4.0:テキストから 720p・5 秒
curl https://api.hop-base.com/v1/video/generate \
  -H "Authorization: Bearer $HOPBASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"kling-v4","prompt":"雨上がりの東京の路地を、傘を持った人がゆっくり歩く。シネマティック","duration":5,"resolution":"720p","aspect_ratio":"16:9"}'

Kling 4.0 で先頭フレーム画像から生成する場合は、images に usage: "first_frame" を付けて渡します。

{
  "model": "kling-v4",
  "prompt": "商品のボトルがゆっくり回転し、光が反射する",
  "images": [{ "url": "https://cdn.example.com/bottle.png", "usage": "first_frame" }],
  "duration": 5,
  "resolution": "1080p"
}

Seedance 2.5 と Hailuo H3 はリクエストの形が異なります。

# Seedance 2.5(content 配列にテキストを入れる)
curl https://api.hop-base.com/v1/video/generate \
  -H "Authorization: Bearer $HOPBASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"dreamina-seedance-2-5-260628","content":[{"type":"text","text":"An orange cat running across a sunny meadow"}],"duration":5,"resolution":"720p","ratio":"16:9"}'

# MiniMax Hailuo H3(テキストのみの場合 ratio が必須)
curl https://api.hop-base.com/v1/video/generate \
  -H "Authorization: Bearer $HOPBASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"MiniMax-H3","content":[{"type":"text","text":"Aerial drone shot over snow mountains above a sea of clouds"}],"resolution":"768P","duration":6,"ratio":"16:9"}'

3モデル共通のポーリング(Python)

タスクIDの位置と状態の位置がモデルによって違うので、吸収する関数を1つ用意しておくと比較が楽になります。

import os
import time
import requests

API = "https://api.hop-base.com/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['HOPBASE_API_KEY']}"}

def submit(body: dict) -> str:
    r = requests.post(f"{API}/video/generate", headers=HEADERS, json=body, timeout=60)
    r.raise_for_status()  # 2xx なら投稿成功(Seedance は 200、Kling / Hailuo は 202)
    data = r.json()
    return data["task"]["id"] if "task" in data else data["id"]

def wait(task_id: str, interval: int = 5) -> dict:
    while True:
        data = requests.get(f"{API}/video/tasks/{task_id}", headers=HEADERS, timeout=60).json()
        task = data.get("task", data)  # Seedance は task の中、Kling / Hailuo はトップレベル
        if task["status"] == "completed":
            return data
        if task["status"] == "failed":
            raise RuntimeError(task.get("error"))
        time.sleep(interval)

task_id = submit({
    "model": "kling-v4",
    "prompt": "夜の渋谷交差点のタイムラプス",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "16:9",  # テキストから動画では明示する
})
done = wait(task_id)
task = done.get("task", done)
print(task["outputs"][0])                 # 完了から 24 時間有効。すぐ保存する
print(done.get("usage", {}).get("cost_usd"))  # このタスクで残高から引かれた米ドル額

本番運用で押さえるポイント

  1. 結果URLは 24 時間で失効:完了時刻から 24 時間有効で、再照会しても延長されません。期限後は 410 が返ります。ポーリング完了と同じ処理の中で自社ストレージへ保存してください。
  2. 失敗は課金されない:失敗した動画タスクは課金されません。完了したタスクの照会結果にはトップレベルの usage が付き、usage.cost_usd がそのタスクで残高から実際に引かれた米ドル額です。請求の照合はこの値と、コンソールの利用明細(CSV エクスポート可)で行えます。
  3. 投稿時の残高チェック:動画の投稿時には「利用可能残高 − 実行中タスクの見積もり − 今回の見積もり」を確認し、足りなければ 402(insufficient_balance)が返ります。見積もりはタスク終了時に自動で解放されます。
  4. タイムアウト:Kling のタスクは作成から 2 時間たっても終わらなければ失敗扱い(課金なし)、Seedance は 24 時間で自動終了します。動画タスクはキャンセルできません。
  5. 素材は公開URLで:ゲートウェイは構造と件数を検証し、解像度・形式・サイズ・尺などはタスク実行中に各モデル側で判定されます。投稿後数分で失敗することがあるので、素材は公開インターネットから確実にダウンロードできる状態にしておきます。

支払いと始め方

HopBase は米ドル建ての従量課金で、サブスクリプションは不要です。Visa / Mastercard、Apple Pay、Google Pay、Alipay、AlipayHK、WeChat Pay に対応し、手数料がかかる場合は支払い前にチャージ画面に表示されます。コンソール でキーを作成し、Kling・Seedance・Hailuo のグループを追加すれば、上のコードをそのまま試せます。詳しい仕様は日本語ドキュメントの Kling、Seedance、MiniMax Hailuo、動画生成の概要 を参照してください。Kling 4.0 だけを詳しく知りたい場合は Kling 4.0 API 実装ガイド をどうぞ。

よくある質問

Kling 4.0 で参照画像やマルチショットは使えますか?

使えません。kling-v4 はテキストからの生成と先頭フレーム1枚からの生成のみに対応しています。参照画像、参照動画、被写体、マルチショット(shots)が必要な場合は kling-v3 または kling-v3-omni を選んでください。

Kling 4.0 で無音の動画を安く作れますか?

できません。kling-v4 の動画は audio=false を指定しても音声付きで出力され、料金も同じです。

生成した動画のURLはいつまで使えますか?

タスク完了から 24 時間です。再照会しても期限は延びず、期限後は 410 が返ります。必ず自社のストレージにダウンロードして保存してください。

生成に失敗した場合も料金はかかりますか?

失敗した動画タスクは課金されません。完了したタスクでは、照会結果の usage.cost_usd に実際に残高から引かれた米ドル額が入ります。

1本のキーで Kling と Seedance と Hailuo を全部使えますか?

使えます。1本のキーに最大 10 個のグループを含められるので、各モデルのグループをキーに追加してください。追加後に GET /v1/models を呼び、返ってきたモデルIDだけを使います。

日本円で支払えますか?

残高と課金は米ドル建てです。チャージ時の支払い通貨と手数料、入金額は、支払い前にチャージ画面に表示されます。請求書や法人での支払いについては お問い合わせ から担当者にご相談ください。