Novita AI の Wan 2.7 VideoEdit API:AI で動画を編集する方法

Novita AI の Wan 2.7 VideoEdit API:AI で動画を編集する方法

Novita AI 上の Wan 2.7 VideoEdit は、すでに映像素材があり、モーションをゼロから作り直すことなく、モデルにシーンをリスタイルまたは書き換えさせたい場合に適したエンドポイントです。ソース動画を POST https://api.novita.ai/v3/async/wan2.7-videoedit に送信し、task_id を受け取ったら、GET /v3/async/task-result をポーリングして編集済みクリップが準備できるのを待ちます。このガイドでは、正確なリクエストの構造、参照画像を追加するタイミング、そして本番環境に組み込む前に注意すべき実装の詳細を説明します。

Wan 2.7 VideoEdit が適しているケース

Wan 2.7 VideoEdit は、ソースクリップのタイミングやカメラワークがすでに十分であり、ショットの構図ではなく、視聴者が見るものを AI に変更させたい場合に使用します。

典型的なユースケース:

  • 実写クリップをアニメ、シネマティック、またはスタイライズされたレンダリングに変換したい。
  • 元のモーションの流れを維持したまま、衣装、環境、小道具、雰囲気を変更する必要がある。
  • プロンプトによる変換を映像に適用し、必要に応じて参照画像でルックを固定したい。

以下の場合は適していません:

  • テキストのみから新しいモーションを生成する必要がある場合。代わりに Wan 2.7 T2V を使用してください。
  • 静止画像をアニメーション化したい場合。代わりに Wan 2.7 I2V を使用してください。
  • 生成されたシーン全体で名前付き参照スロットを使用したマルチキャラクターのロールプレイが必要な場合。代わりに Wan 2.7 R2V を使用してください。

この区別は重要です。VideoEdit は入力クリップから開始するため、元のモーションが間違っている場合、モデルがコレオグラフィを修正してくれるわけではありません。

確認済みのエンドポイントとワークフロー

Novita AI 上の Wan 2.7 VideoEdit は、1 つの送信エンドポイントと共有の非同期タスク結果エンドポイントを使用します。

フィールド
送信エンドポイント POST https://api.novita.ai/v3/async/wan2.7-videoedit
結果ポーリング GET https://api.novita.ai/v3/async/task-result?task_id=<id>
認証ヘッダー Authorization: Bearer $NOVITA_API_KEY
コンテンツタイプ application/json
公式ドキュメント Wan 2.7 VideoEdit API リファレンス

API は非同期です。送信呼び出しが成功すると、完了した動画の URL ではなく task_id が返されます。アプリケーションはそのタスク ID を保持し、ポーリングまたはバックグラウンドジョブのロジックを構築する必要があります。

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

Novita AI キー管理 からキーを作成し、環境変数に保存します:

export NOVITA_API_KEY="your_api_key_here"

キーをブラウザコード、モバイルアプリ、またはチェックインされた設定ファイルにハードコードしないでください。

ステップ 2:リクエストの構造を理解する

Wan 2.7 VideoEdit はフラットな JSON ボディを使用します。リクエストは inputparameters の下にフィールドをネストしません。

最低限、以下を送信します:

  • video_url
  • prompt

通常最初に気にする必要がある、ドキュメント化されたオプションフィールドは次のとおりです:

  • reference_image_url(ルック/スタイルの参照用)
  • resolution
  • duration
  • audio_setting
  • prompt_extend
  • seed

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

これが最もシンプルな実用的なリクエストです:

curl -s -X POST https://api.novita.ai/v3/async/wan2.7-videoedit \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://example.com/source-clip.mp4",
    "prompt": "Turn this office hallway scene into a neon cyberpunk corridor, preserve the walking motion and camera path",
    "resolution": "720P",
    "duration": 5
  }'

期待されるレスポンス:

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

送信時点ではこれ以外は保証されません。リクエストを同期的な編集レスポンスではなく、ジョブのキューイングステップとして扱ってください。

ステップ 4:タスク結果エンドポイントをポーリングする

返された task_id を共有のタスク結果 API で使用します:

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

以下の状態に基づいて構築します:

ステータス 意味
TASK_STATUS_QUEUED 受け付けられ、実行待ち
TASK_STATUS_PROCESSING 編集中
TASK_STATUS_SUCCEED 編集済み動画の準備完了
TASK_STATUS_FAILED タスクが失敗しました。レスポンスボディを確認してください

タスクが成功すると、レスポンスには編集された出力 URL と URL TTL を含む videos 配列が含まれます。ホストされている URL を永続的なストレージとして扱わず、迅速にアセットをダウンロードまたは移動してください。

ステップ 5:より厳密なビジュアルコントロールが必要な場合に参照画像を追加する

reference_image_url はオプションですが、編集動作を有用な方法で変更します。

以下の場合に使用します:

  • 最終クリップを特定のキャラクタールック、コスチューム、またはパレットに従わせたい。
  • テキストプロンプトだけにすべてを任せるのではなく、出力を特定のアートディレクションに誘導したい。
  • ソース動画のモーションは正しいが、テキストのみのガイダンスではシーンのアイデンティティが曖すぎる場合。

参照画像を使用したリクエスト例:

curl -s -X POST https://api.novita.ai/v3/async/wan2.7-videoedit \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://example.com/source-clip.mp4",
    "reference_image_url": "https://example.com/reference-look.png",
    "prompt": "Transform the performer into the look and color palette of the reference image while keeping the same dance timing",
    "resolution": "1080P",
    "duration": 6,
    "audio_setting": "auto"
  }'

結果が安定しない場合、通常の修正方法はプロンプトを長くすることではありません。より的確なプロンプトと、より適切な参照画像を使用することです。

実際に気にするべき主要パラメータ

パラメータ 必須 説明
video_url string はい 編集するソース動画
prompt string はい 目的の変換を説明
reference_image_url string いいえ ルックとスタイルの固定のための参照画像
resolution string いいえ 出力解像度。ドキュメント化された値には 720P1080P があります
duration integer いいえ 目標出力長(秒)。0 は入力動画の全長を維持
audio_setting string いいえ オーディオ生成動作を制御
prompt_extend boolean いいえ モデルが短いプロンプトを自動的に拡張できるようにする
seed integer いいえ 再試行時の再現性を向上

デフォルト値を仮定する前に、公式パラメータリファレンス を確認してください。動画モデルのフィールドはテキストモデルのフィールドよりも頻繁に変更され、出力制約は記憶に頼ると間違えやすいです。

ドキュメント化された制限と実用的な制約

2026 年 7 月 29 日現在、Wan 2.7 VideoEdit に関する Novita の公式ドキュメントには以下の境界が記載されています:

  • 対応解像度:720P および 1080P
  • duration のデフォルトは 0 で、入力動画の全長を意味します。明示的に設定した場合の出力時間の範囲は 2 ~ 10 秒
  • 入力動画フォーマット:mp4 および mov
  • 入力動画サイズ制限:最大 100 MB
  • 参照画像フォーマット:jpgjpegpngwebp
  • 参照画像サイズ制限:最大 20 MB
  • 出力動画フォーマット:mp4

これらの制約は、汎用的なメディアパイプラインを構築する際に見落とされがちです。最も一般的な統合の失敗は、エンドポイントが受け付けるよりも長い、または大きなソースファイルを送信することです。

2 つの実用的な意味合い:

  1. 編集されたクリップがソースの長さを維持するようにしたい場合は、duration を省略するか 0 に設定し、2~10 秒のトリムを強制しないでください。
  2. プロンプトを迅速にテストする場合は、最初に 720P を使用し、変換が機能するようになってから 1080P に移行してください。

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_edit(
    video_url: str,
    prompt: str,
    reference_image_url: str | None = None,
    resolution: str = "720P",
    duration: int = 0,
    audio_setting: str = "auto",
    prompt_extend: bool = True,
    seed: int | None = None,
) -> str:
    payload = {
        "video_url": video_url,
        "prompt": prompt,
        "resolution": resolution,
        "duration": duration,
        "audio_setting": audio_setting,
        "prompt_extend": prompt_extend,
    }
    if reference_image_url:
        payload["reference_image_url"] = reference_image_url
    if seed is not None:
        payload["seed"] = seed

    resp = requests.post(
        f"{BASE_URL}/v3/async/wan2.7-videoedit",
        headers=HEADERS,
        json=payload,
        timeout=60,
    )
    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},
            timeout=60,
        )
        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__":
    task_id = submit_video_edit(
        video_url="https://example.com/source-clip.mp4",
        prompt="Change the street scene into a rainy retro-futurist city at night, preserve the original tracking shot",
        reference_image_url="https://example.com/reference-frame.png",
        resolution="720P",
        duration=0,
        seed=42,
    )
    print(f"Submitted task: {task_id}")

    result = poll_result(task_id)
    video = result["videos"][0]
    print("Edited video URL:", video["video_url"])
    print("URL TTL:", video["video_url_ttl"])

シェルポーリングを使用した cURL の例

TASK_ID=$(curl -s -X POST https://api.novita.ai/v3/async/wan2.7-videoedit \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://example.com/source-clip.mp4",
    "prompt": "Convert the clip into a hand-drawn anime city scene, preserve the running motion",
    "resolution": "720P",
    "duration": 0,
    "prompt_extend": true
  }' | jq -r '.task_id')

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
  fi

  if [ "$STATUS" = "TASK_STATUS_FAILED" ]; then
    echo "$RESULT"
    break
  fi

  sleep 5
done

バックエンドサービスから統合する場合は、生成ウィンドウ全体にわたってユーザーリクエストを開いたままにするのではなく、このポーリングループをワーカーでラップしてください。

料金、クレジット、およびコスト見積もり前に確認すべきこと

Novita AI は、モデルと料金ページで動画モデルの料金を公開していますが、これらの数値は変更される可能性があります。Wan 2.7 VideoEdit の場合、顧客向けのコスト見積もりを公開する前に、Novita AI 料金ページ と公式ドキュメントからリンクされているモデルエントリで現在の料金を直接確認してください。

エンジニアリング計画では、以下の前提が安全です:

  • コストは、単一の固定リクエスト料金ではなく、生成されたクリップの設定に応じて変動します。
  • 1080P での実行は、反復作業のベースラインとして適切ではありません。
  • 短いクリップは検証が容易で、デバッグも安価です。

内部ツールを構築する場合は、料金の参照をコードに埋め込まれた定数ではなく、設定の関心事として扱ってください。

よくある統合の間違い

到達可能な URL の代わりに生のアップロードを送信する。 ドキュメント化されたリクエスト構造は、URL ベースのメディア入力を想定しています。ソースクリップがサーバーから参照可能な安定した URL で既に利用可能であることを確認してください。

モーション変更に VideoEdit を使用する。 VideoEdit は変換エンドポイントであり、コレオグラフィエンドポイントではありません。元の動きが間違っている場合は、T2V または I2V で再生成してください。

ソース動画と参照画像の制限を混同する。 ソース動画はより大きなアセットです:mp4/mov、最大 100 MB。より小さい 20 MB の制限は reference_image_url に適用され、video_url には適用されません。

過度に積極的にポーリングする。 マルチ秒の動画ジョブに対して、毎秒タスク結果エンドポイントをヒットする必要はありません。通常は 5~10 秒の間隔がより良い出発点です。

URL TTL を無視する。 結果の URL は一時的なものです。編集されたクリップが後続の処理で重要になる場合は、アセットを迅速に永続化してください。

プロンプトの具体性を省略する。 「もっと良くして」は編集プロンプトではありません。ターゲットのスタイル、環境、被写体の処理、および変更されないままにすべきモーションを記述してください。

どの Wan 2.7 エンドポイントを選ぶべきか?

以下のクイックルールを使用してください:

  • すでにソース動画がある場合は VideoEdit を選択します。
  • ソース画像がある場合、または静止画主導のワークフローからの継続が必要な場合は I2V を選択します。
  • テキストしかない場合は T2V を選択します。
  • 既存のクリップを編集するよりも、アイデンティティの一貫性と参照キャラクターの制御が重要な場合は R2V を選択します。

この区別により、統合がシンプルになります。チームは、実際にはプロンプトベースの編集問題であるジョブに、テキストから動画への変換を過剰に使用することがよくあります。

FAQ

Novita AI の Wan 2.7 VideoEdit のエンドポイントは何ですか?

POST https://api.novita.ai/v3/async/wan2.7-videoedit です。task_id を返し、その後 GET https://api.novita.ai/v3/async/task-result?task_id=<id> をポーリングして完了を確認します。

ソース動画と一緒に参照画像を提供できますか?

はい。ドキュメント化されたリクエスト構造は、video_url および prompt とともにオプションの reference_image_url をサポートしており、最終的なルックをより厳密に制御するのに役立ちます。

Novita AI の Wan 2.7 VideoEdit はどの動画長をサポートしていますか?

2026 年 7 月 29 日時点のドキュメントでは、duration のデフォルトは 0 で、入力動画の全長を意味します。duration を明示的に設定した場合、ドキュメント化された範囲は 2~10 秒です。

Wan 2.7 VideoEdit は大きなソース動画を受け入れますか?

はい、ドキュメント化された制限内で。公式ドキュメントには、最大 100 MB の mp4/mov 入力が記載されています。別途 20 MB の制限は、オプションの参照画像に適用されます。

Wan 2.7 VideoEdit と Wan 2.7 I2V のどちらを使用すべきですか?

すでにクリップがあり、それを変換したい場合は VideoEdit を使用します。開始点が静止画像または画像主導のワークフローの場合は I2V を使用します。

おすすめ記事