Hunyuan Video Fast API クイックスタート

Hunyuan Video Fast API クイックスタート

Hunyuan Video Fast は、POST https://api.novita.ai/v3/async/hunyuan-video-fast で Novita AI 上で利用可能です。これは、Tencent のオープンソース Hunyuan Video 基盤モデルの速度最適化バリアントです。標準バージョンと比較して生成時間を短縮する代わりに、動きの忠実度がいくらか低下します。そのため、スループットが高く、プロンプトの反復や、ピーク時の映画品質よりも処理速度が重要なステージングワークフローに実用的です。

すべての Novita 非同期ビデオAPIと同様に、送信時に task_id を返し、タスクが完了すると動画URLを提供します。このガイドでは、エンドポイント、リクエスト形式、動作する Python と cURL の例、および高速バリアントが標準モデルと比較してどこに適合するかを説明します。

Hunyuan Video Fast と標準モデルの使い分け

高速バリアントは、生成のターンアラウンドとリクエスト量が、ピーク時の画質よりも重要な場合に適した選択肢です。標準の Hunyuan Video は、生成ごとに、より忠実度の高い動きとより良いプロンプト追従を生成します。高速バリアントはその時間を大幅に短縮します。以下のような場面で役立ちます。

  • プロンプトの反復 — フルクオリティのレンダリングを行う前に、多くのバリエーションを低コストでテストする
  • 高スループットパイプライン — クリップあたりのレイテンシがスループットに直接影響するバッチコンテンツ生成
  • ステージングと内部レビュー — 共有可能な出力を迅速に取得し、最終納品時に標準モデルに切り替える
  • 低レイテンシアプリケーション — 応答時間の予算が厳しい本番ワークフロー

出力品質が主要な制約である場合(放送、最終納品、フォトリアリスティックな動きなど)は、代わりに標準の Hunyuan Video エンドポイントを使用してください。

ステップ1: Novita AI API キーを取得する

novita.ai にサインアップし、キー管理ページ から API キーを生成します。新しいアカウントには無料クレジットが付与されます。キーは環境変数として保存してください。ソースファイルにハードコードしないでください。

export NOVITA_API_KEY="your_api_key_here"

ステップ2: エンドポイントとモデルID

フィールド
送信エンドポイント POST https://api.novita.ai/v3/async/hunyuan-video-fast
結果取得 GET https://api.novita.ai/v3/async/task-result?task_id=<id>
認証ヘッダー Authorization: Bearer $NOVITA_API_KEY
Content-Type application/json

公式APIリファレンス: novita.ai/docs/api-reference/model-apis-hunyuan-video-fast

ステップ3: 最初のリクエストを送信する

プロンプトと出力設定を指定して、生成リクエストを送信します。

curl -s -X POST https://api.novita.ai/v3/async/hunyuan-video-fast \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A red fox running through a snowy forest at dawn, slow motion, cinematic wide shot",
    "negative_prompt": "blurry, low quality, distorted, watermark",
    "width": 1280,
    "height": 720,
    "seed": -1
  }'

API は即座に task_id を返します。

{
  "task_id": "hunyuan-fast-abc123"
}

このレスポンスには動画は含まれていません。task_id を保存し、次のステップで使用します。

ステップ4: 動画結果をポーリングする

curl -s "https://api.novita.ai/v3/async/task-result?task_id=hunyuan-fast-abc123" \
  -H "Authorization: Bearer $NOVITA_API_KEY"

task_statusTASK_STATUS_SUCCEED になるまでポーリングを続けます。

{
  "task_status": "TASK_STATUS_SUCCEED",
  "videos": [
    {
      "video_url": "https://cdn.novitai.com/output/...",
      "video_url_ttl": 3600,
      "video_type": "mp4"
    }
  ]
}

video_urlvideo_url_ttl 秒後に期限切れになるため、速やかにダウンロードするか保存してください。

タスクステータス値

ステータス 意味
TASK_STATUS_QUEUED リクエストが受理され、実行待ち
TASK_STATUS_PROCESSING 生成中
TASK_STATUS_SUCCEED 完了 — videos[0].video_url に動画URLが利用可能
TASK_STATUS_FAILED 生成失敗 — レスポンスで失敗理由を確認

Python の例

import os
import time
import requests

API_KEY = os.environ["NOVITA_API_KEY"]
BASE_URL = "https://api.novita.ai"
HEADERS = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}


def submit_video(
    prompt: str,
    negative_prompt: str = "",
    width: int = 1280,
    height: int = 720,
    seed: int = -1,
) -> str:
    payload = {
        "prompt": prompt,
        "negative_prompt": negative_prompt,
        "width": width,
        "height": height,
        "seed": seed,
    }
    resp = requests.post(
        f"{BASE_URL}/v3/async/hunyuan-video-fast",
        headers=HEADERS,
        json=payload,
    )
    resp.raise_for_status()
    return resp.json()["task_id"]


def poll_result(task_id: str, interval: int = 5, timeout: int = 300) -> dict:
    deadline = time.time() + timeout
    while time.time() < deadline:
        resp = requests.get(
            f"{BASE_URL}/v3/async/task-result",
            headers=HEADERS,
            params={"task_id": task_id},
        )
        resp.raise_for_status()
        data = resp.json()
        status = data.get("task_status", "")
        if status == "TASK_STATUS_SUCCEED":
            return data
        if status == "TASK_STATUS_FAILED":
            raise RuntimeError(f"Task failed: {data}")
        time.sleep(interval)
    raise TimeoutError(f"Task {task_id} did not complete within {timeout}s")


if __name__ == "__main__":
    task_id = submit_video(
        prompt="A red fox running through a snowy forest at dawn, slow motion, cinematic wide shot",
        negative_prompt="blurry, low quality, distorted, watermark",
        width=1280,
        height=720,
    )
    print(f"Task submitted: {task_id}")

    result = poll_result(task_id)
    for video in result.get("videos", []):
        print(f"Video URL (expires in {video['video_url_ttl']}s): {video['video_url']}")

cURL の例

# Step 1: Submit the generation request
TASK_ID=$(curl -s -X POST https://api.novita.ai/v3/async/hunyuan-video-fast \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A timelapse of a city skyline transitioning from dusk to night, cinematic",
    "negative_prompt": "blurry, low quality, distorted",
    "width": 1280,
    "height": 720,
    "seed": 42
  }' | jq -r '.task_id')

echo "Task ID: $TASK_ID"

# Step 2: Poll until complete
while true; do
  RESULT=$(curl -s "https://api.novita.ai/v3/async/task-result?task_id=$TASK_ID" \
    -H "Authorization: Bearer $NOVITA_API_KEY")
  STATUS=$(echo "$RESULT" | jq -r '.task_status')
  if [ "$STATUS" = "TASK_STATUS_SUCCEED" ]; then
    echo "$RESULT" | jq -r '.videos[0].video_url'
    break
  elif [ "$STATUS" = "TASK_STATUS_FAILED" ]; then
    echo "Failed: $RESULT"
    break
  fi
  echo "Status: $STATUS — waiting..."
  sleep 5
done

主要パラメータ

パラメータ 必須 説明
prompt string はい 動画のシーン、被写体、動き、スタイルを説明するテキスト
negative_prompt string いいえ 出力で避けたい要素(例: “blurry, low quality”)
width integer いいえ 出力の幅(ピクセル) — サポートされている値は APIドキュメント を確認
height integer いいえ 出力の高さ(ピクセル) — width と組み合わせて解像度を設定
seed integer いいえ 固定の整数を設定して同じ出力を再現可能に。-1 はランダム

期間オプション、最大解像度制約、モデル固有のフィールドを含む完全なパラメータリストについては、Hunyuan Video Fast API リファレンス を参照してください。

料金と制限

現在の動画あたりの料金は、Novita AI モデルページ で確認してください。動画生成の料金は通常、生成されたクリップあたりであり、解像度と期間によって異なります。本番ワークロードのコストモデルを構築する前に、料金ページを確認してください。

デプロイ前に、公式ドキュメントで以下の制限を確認してください。

  • プロンプトの最大文字数
  • サポートされている解像度値(幅×高さの組み合わせ)
  • 最大動画時間(秒)
  • APIキーあたりのレート制限と同時タスク数の上限

高速バリアントは通常、計算時間が短縮されるため、標準モデルよりもクリップあたりのコストが低くなります。Novita の料金ページで現在の差額を確認してください。

トラブルシューティング

401 Unauthorized — API キーが欠落しているか、無効または期限切れです。NOVITA_API_KEY が設定されていること、およびキーが Novita AI ダッシュボード でアクティブであることを確認してください。

422 Unprocessable Entity — 必須パラメータが欠落しているか、値が範囲外です。prompt が空でないこと、width/height の値が API ドキュメントのサポート対象セットに含まれていることを確認してください。

タスクが TASK_STATUS_PROCESSING のままになる — 生成がまだ実行中です。高速バリアントは標準よりも速く完了しますが、解像度が高く、期間が長いほど時間がかかります。大きな出力の場合は、ポーリングのタイムアウトを延長してください。

video_url が 403 または 404 を返す — URL の有効期限が切れています(video_url_ttl 経過)。本番環境では、TASK_STATUS_SUCCEED の直後に動画をダウンロードするか転送してください。ホストされたURLを永続的なストレージとして依存しないでください。

特定のプロンプトタイプで一貫した品質の問題が発生する — プロンプトの改善アプローチに切り替えてください。被写体、アクション、カメラアングル、スタイルを明示的に記述します。一般的なアーティファクトに対して negative_prompt エントリを追加します。それでもユースケースに品質が不十分な場合は、標準の Hunyuan Video エンドポイントを評価してください。

FAQ

Novita AI での Hunyuan Video Fast のエンドポイントは何ですか?

POST https://api.novita.ai/v3/async/hunyuan-video-fast です。API は非同期です。リクエストを送信して task_id を受け取り、task_statusTASK_STATUS_SUCCEED になるまで GET https://api.novita.ai/v3/async/task-result?task_id=<id> をポーリングします。

Hunyuan Video Fast と標準の Hunyuan Video の違いは何ですか?

高速バリアントは生成速度に最適化されており、タスク送信から動画完了までの時間を短縮します。トレードオフとして、動きの忠実度や細かいプロンプト追従性は標準モデルよりも低くなります。プロンプトの反復、高スループットのバッチジョブ、またはステージングには高速バリアントを使用し、最終品質の出力には標準モデルを使用してください。

特定の動画時間を設定できますか?

サポートされている期間パラメータについては、API リファレンス を確認してください。一部の Novita ビデオAPIでは明示的な duration フィールドが公開されていますが、他のものではモデルのデフォルトが使用されます。デフォルトのクリップ長を仮定する前に確認してください。

特定の動画出力を再現するにはどうすればよいですか?

seed を固定の整数に設定します。同じ seedpromptwidthheight の組み合わせにより、実行間で一貫した出力が生成されるはずです。

Hunyuan Video Fast は画像から動画への生成をサポートしていますか?

Novita AI の Hunyuan Video Fast はテキストから動画へのモデルです。Novita での画像から動画への生成については、Novita モデルページ で利用可能な I2V モデル(Kling、Vidu、Wan など)を確認してください。

Novita AI での Hunyuan Video Fast の料金はいくらですか?

現在の料金は novita.ai/models で確認してください。動画モデルのクリップあたりの料金は変更される可能性があります。本番環境のコスト見積もりを構築する前に、必ず料金ページを確認してください。

Hunyuan Video Fast は本番動画パイプラインに適していますか?

はい、適切な処理を行えば適しています。非同期タスク送信を中心にパイプラインを設計し、ステータス追跡のために task_id を保存し、完了後すぐに(video_url_ttl が期限切れになる前に)動画をダウンロードし、TASK_STATUS_FAILED に対してリトライまたはフォールバック戦略を実装してください。

おすすめ記事