PixVerse V4.5 クイックスタート:テキスト・画像からの動画生成

PixVerse V4.5 クイックスタート:テキスト・画像からの動画生成

PixVerse V4.5 は、Novita AI 上で 2 つの非同期エンドポイントを通じて利用できます。テキストから動画を生成する(T2V)には POST https://api.novita.ai/v3/async/pixverse-v4.5-t2v、画像から動画を生成する(I2V)には POST https://api.novita.ai/v3/async/pixverse-v4.5-i2v を使用します。どちらも同じ 2 ステップの非同期パターンに従います。生成リクエストを送信して task_id を受け取り、その後 GET /v3/async/task-result をポーリングしてステータスが TASK_STATUS_SUCCEED になり動画の URL が利用可能になるのを待ちます。このガイドでは、各モードで実際に動画の URL を取得するまでを説明します。

このクイックスタートを利用するタイミング

このガイドは、PixVerse V4.5 を本番環境で使用する前に、検証済みのリクエストを確認したい場合に役立ちます。

T2V は、シーンの説明、ストーリーボードのキャプション、商品プロンプトなど、入力がすべてテキストである場合に適しています。I2V は、参照画像があり、そのフレームから PixVerse にアニメーションを生成させたい場合に使用します。

開始前に知っておくべきこと:

  • クリップの最大長は、1080p で 5 秒、720p 以下で 8 秒です。
  • fast_mode: true に設定すると生成速度が向上しコストが下がりますが、解像度は 720p に制限されます。
  • style プリセットパラメータ(anime, 3d_animation, clay, comic, cyberpunk)は v3.5 専用として文書化されています。V4.5 で使用する場合は、本番環境で依存する前にテストしてください。
  • I2V の画像入力は jpg、jpeg、または png 形式で、最大 10MB、最小 300×300px、アスペクト比は 1:2.5 から 2.5:1 の間である必要があります。

このガイドでは、PixVerse の Web インターフェース、セルフホスティング、ファインチューニングについては説明しません。Novita AI がホストする API パスのみを対象としています。

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

Novita AI アカウントを作成し、API キー管理 に移動します。キーを生成し、環境変数にエクスポートします。

export NOVITA_API_KEY="your_api_key_here"

キーはバージョン管理、クライアントサイドのバンドル、Docker イメージのレイヤーに含めないでください。

ステップ 2:エンドポイントを確認する

T2V I2V
送信エンドポイント POST https://api.novita.ai/v3/async/pixverse-v4.5-t2v POST https://api.novita.ai/v3/async/pixverse-v4.5-i2v
結果取得エンドポイント GET https://api.novita.ai/v3/async/task-result?task_id=<id> GET https://api.novita.ai/v3/async/task-result?task_id=<id>
API リファレンス T2V ドキュメント I2V ドキュメント

結果取得エンドポイントは、すべての Novita AI 非同期 API で共通です。ポーリングループを理解すれば、すべてのモデルで同じように機能します。

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

プロンプトと希望のアスペクト比を指定して生成を送信します。デフォルト値(aspect_ratio: "16:9", resolution: "540p", fast_mode: false)は適切な出発点です。

curl -s -X POST https://api.novita.ai/v3/async/pixverse-v4.5-t2v \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A time-lapse of cherry blossoms falling in slow motion, soft morning light, cinematic 4K",
    "aspect_ratio": "16:9",
    "resolution": "720p"
  }'

成功した 200 レスポンスでは、次のみが返されます。

{
  "task_id": "abc123..."
}

task_id を保存してください。この段階では他に何も返されません。動画生成は非同期で実行されます。

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

I2V は開始画像を受け取り、プロンプトに従ってアニメーション化します。image_file フィールドには、ソース画像の base64 エンコードされた文字列を指定します。

# まず画像をエンコードします
IMAGE_B64=$(base64 -w 0 /path/to/your/image.jpg)

curl -s -X POST https://api.novita.ai/v3/async/pixverse-v4.5-i2v \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"prompt\": \"Camera slowly pushes forward, light wind moves through the scene\",
    \"image_file\": \"$IMAGE_B64\",
    \"resolution\": \"720p\"
  }"

レスポンスの構造は T2V と同じです。

{
  "task_id": "xyz789..."
}

送信前に確認すべき主な画像制約:

  • 形式:jpg、jpeg、または png のみ
  • ファイルサイズ:最大 10MB(エンコード前に確認 – base64 によりサイズが約 33% 増加します)
  • 最小寸法:300×300px
  • アスペクト比:1:2.5 から 2.5:1 の間(縦長から横長の極端な範囲)

ステップ 5:結果をポーリングする

送信ステップで返された task_id を使用して、タスク結果エンドポイントをポーリングします。

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

task.status フィールドは次の状態を遷移します。

ステータス 意味
TASK_STATUS_QUEUED タスクがキューで待機中
TASK_STATUS_PROCESSING 生成実行中
TASK_STATUS_SUCCEED 動画準備完了。URL がレスポンスに含まれます
TASK_STATUS_FAILED 生成失敗。task.reason を確認してください

5〜10 秒ごとにポーリングします。TASK_STATUS_SUCCEED が表示されたら、動画 URL がレスポンスボディに含まれます。task.eta フィールドには推定完了時間(秒)が含まれており、最初のポーリングのタイミングを決めるのに使用できます。

ステップ 6:料金と制限を確認する

Novita AI の公開料金では、PixVerse V4.5 は 5 秒のクリップあたり $0.7 です(2026 年 7 月時点の Novita AI の PixVerse 製品ページ から確認)。コスト見積もりを作成する前に、Novita AI の料金ページ で現在のレートを確認してください。

fast_mode: true に設定すると、動画の生成が高速化されコストが低減されますが、解像度は 720p に制限されます。品質が二の次となるプロトタイピングやバッチプレビュー生成に適しています。

レート制限はアカウントのティアによって異なります。現在のティアのしきい値については、Novita AI のレート制限ドキュメント を確認してください。

主要パラメータ

T2V パラメータ

パラメータ デフォルト 備考
prompt string 必須。最大 2048 文字。
aspect_ratio string 16:9 16:9, 4:3, 1:1, 3:4, 9:16
resolution string 540p 360p, 540p, 720p, 1080p。1080p を使用するには fast_mode: false が必要です。
negative_prompt string 最大 2048 文字。避けたい内容を記述します。
fast_mode boolean false 高速で低コスト。720p に制限されます。
style string anime, 3d_animation, clay, comic, cyberpunk。v3.5 専用と記載されています。本番環境で使用する前にテストしてください。
seed integer 再現性のために設定します。モデル更新後も出力が変わる可能性があります。

I2V パラメータ

パラメータ デフォルト 備考
prompt string 必須。最大 2048 文字。
image_file string 必須。base64 エンコードされた jpg/jpeg/png。最大 10MB、最小 300×300px、アスペクト比 1:2.5 から 2.5:1。
resolution string 540p T2V と同じオプション。
negative_prompt string 最大 2048 文字。
fast_mode boolean false T2V と同じ。
style string T2V と同じ。
seed integer T2V と同じ。

注意:I2V には aspect_ratio パラメータはありません。出力のアスペクト比は入力画像から引き継がれます。

Python サンプル – 完全な非同期ワークフロー

このサンプルでは、T2V と I2V の送信、およびポーリングループを 1 つのスクリプトでカバーしています。

import os
import time
import base64
import requests

API_KEY = os.environ["NOVITA_API_KEY"]
BASE_URL = "https://api.novita.ai/v3/async"

HEADERS = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}


def submit_t2v(prompt: str, aspect_ratio: str = "16:9", resolution: str = "720p") -> str:
    resp = requests.post(
        f"{BASE_URL}/pixverse-v4.5-t2v",
        headers=HEADERS,
        json={
            "prompt": prompt,
            "aspect_ratio": aspect_ratio,
            "resolution": resolution,
        },
    )
    resp.raise_for_status()
    return resp.json()["task_id"]


def submit_i2v(prompt: str, image_path: str, resolution: str = "720p") -> str:
    with open(image_path, "rb") as f:
        image_b64 = base64.b64encode(f.read()).decode("utf-8")
    resp = requests.post(
        f"{BASE_URL}/pixverse-v4.5-i2v",
        headers=HEADERS,
        json={
            "prompt": prompt,
            "image_file": image_b64,
            "resolution": resolution,
        },
    )
    resp.raise_for_status()
    return resp.json()["task_id"]


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


if __name__ == "__main__":
    # テキストから動画生成
    t2v_task = submit_t2v(
        prompt="A lone lighthouse on a rocky coast at dusk, waves crashing, golden sky",
        aspect_ratio="16:9",
        resolution="720p",
    )
    print(f"T2V task submitted: {t2v_task}")
    t2v_result = poll_result(t2v_task)
    print("T2V result:", t2v_result)

    # 画像から動画生成 — 実際の画像パスに置き換えてください
    # i2v_task = submit_i2v(
    #     prompt="Gentle wind moves through the scene, slow camera pull-back",
    #     image_path="./reference.jpg",
    #     resolution="720p",
    # )
    # print(f"I2V task submitted: {i2v_task}")
    # i2v_result = poll_result(i2v_task)
    # print("I2V result:", i2v_result)

cURL サンプル

fast mode での T2V:

curl -s -X POST https://api.novita.ai/v3/async/pixverse-v4.5-t2v \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A hyperrealistic ocean wave cresting and breaking on shore, slow motion, golden hour",
    "aspect_ratio": "9:16",
    "resolution": "720p",
    "fast_mode": true,
    "negative_prompt": "blurry, low quality, watermark"
  }'

再現性のために seed を指定した T2V:

curl -s -X POST https://api.novita.ai/v3/async/pixverse-v4.5-t2v \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Neon-lit cyberpunk street at night, rain reflections, hovering vehicles",
    "aspect_ratio": "16:9",
    "resolution": "1080p",
    "seed": 42
  }'

結果のポーリング:

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

トラブルシューティング

I2V 送信時に 400 Bad Request が発生する

まず画像の制約を確認してください。形式は jpg/jpeg/png、base64 エンコード前のサイズは 10MB 未満(エンコード後のペイロードは約 33% 大きくなります)、最小 300×300px、アスペクト比は 1:2.5 から 2.5:1 の間である必要があります。極端に横長または縦長の画像は拒否されます。

タスクが長時間 TASK_STATUS_QUEUED のままになる

これはプラットフォームの負荷が高い場合に正常な動作です。task.eta フィールドに推定時間が示されているので、それに従ってポーリングしてください。エンドポイントを過剰に呼び出さないようにしてください。10 分経過してもタスクが進行しない場合は、Novita AI のステータスページを確認するか、リクエストを再送信してください。

TASK_STATUS_FAILED だが理由が不明な場合

より短くシンプルなプロンプトで再試行してください。動作指示があいまい、シーンの説明に矛盾がある、物理的に不可能な動作を含むプロンプトは失敗しやすいです。ネガティブプロンプトがメインプロンプトと広範囲に競合することもあります。

fast mode で 1080p が利用できない

fast_mode: true に設定すると解像度は 720p に制限されます。1080p が必要な場合は、fast_mode を削除するか false に設定してください。

style パラメータが効果を発揮しない

style パラメータは v3.5 専用として文書化されています。V4.5 のリクエストでは、サイレントに無視されるか、一貫性のない結果を生成する可能性があります。特定のユースケースでテストせずに依存しないでください。

FAQ

PixVerse V4.5 の T2V と I2V の違いは何ですか?

T2V はテキストプロンプトのみから動画クリップを生成します。画像入力は不要です。I2V は開始画像を受け取り、テキストプロンプトに従ってその画像をアニメーション化し、画像を最初のフレームとして使用します。完全に生成されたシーンが必要な場合は T2V を、アニメーション化したい特定の視覚的な開始点がある場合は I2V を使用してください。

PixVerse V4.5 はどのような動画の長さを生成しますか?

クリップは 1080p で 5 秒、720p 以下の解像度では最大 8 秒です。API に duration パラメータはありません。クリップの長さは選択した解像度によって決まります。

I2V エンドポイントは画像からアスペクト比を推測しますか?

はい。I2V には aspect_ratio パラメータはありません。出力のアスペクト比は入力画像と同じになります。送信前に画像を目的の出力比率にトリミングしてください。

T2V と I2V のリクエストを並行して送信できますか?

はい。各リクエストは独立した task_id を返します。複数のリクエストを同時に送信し、並行してポーリングできます。1 つが完了するのを待ってから次のリクエストを送信する必要はありません。

実行間で一貫した出力を得るにはどうすればよいですか?

seed パラメータを同じ整数に設定してください。ただし、シードによる再現性はモデルバージョンの更新によって保証されないことに注意してください。後で結果を監査する必要がある場合は、動画の URL と生成パラメータを一緒に保存してください。

fast_mode は本番環境に適していますか?

品質の基準によって異なります。fast_mode: true に設定すると動画の生成が高速化されコストが低減されますが、解像度は 720p に制限され、標準モードよりも品質が低下します。プレビュー生成、バッチ評価、プロトタイピングに適しています。出力品質が重要な場合は標準モードを使用してください。

おすすめ記事