- Wan 2.7 VideoEdit が適切なツールである場合
- 確認済みのエンドポイントとワークフロー
- ステップ 1:Novita AI API キーを取得する
- ステップ 2:リクエストの形式を理解する
- ステップ 3:最初の VideoEdit リクエストを送信する
- ステップ 4:タスク結果エンドポイントをポーリングする
- ステップ 5:より厳密なビジュアルコントロールが必要な場合に参照画像を追加する
- 実際に気にするべき主要パラメータ
- ドキュメント化された制限と実用的な制約
- Python の例:送信とポーリング
- cURL の例:シェルポーリング付き
- 料金、クレジット、コスト見積もり前に確認すべきこと
- よくある統合の間違い
- どの Wan 2.7 エンドポイントを選択すべきか?
- FAQ
- おすすめの記事
Novita AI の Wan 2.7 VideoEdit は、既に映像があり、モデルにシーンをリスタイルまたは書き換えさせたいが、モーションをゼロから再構築したくない場合に適したエンドポイントです。ソースビデオを POST https://api.novita.ai/v3/async/wan2.7-videoedit に送信し、task_id を受け取り、編集されたクリップが完成するまで GET /v3/async/task-result をポーリングします。このガイドでは、正確なリクエストの形式、参照画像を追加するタイミング、本番環境に組み込む前に重要な実装の詳細を示します。
より広範なモード比較については、Novita AI の Wan 2.7:Text-to-Video vs Image-to-Video vs Reference-to-Video を参照してください。
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 ボディを使用します。リクエストは input や parameters の下にフィールドをネストしません。
最低限、以下を送信します。
video_urlprompt
通常最初に気にするドキュメント化されたオプションフィールドは次のとおりです。
reference_image_url(ルック/スタイルの参照)resolutiondurationaudio_settingprompt_extendseed
ステップ 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 | いいえ | 出力解像度、ドキュメント化された値には 720P と 1080P が含まれる |
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
- 参照画像形式:
jpg、jpeg、png、webp - 参照画像サイズ制限:最大 20 MB
- 出力ビデオ形式:
mp4
これらの制約は、汎用的なメディアパイプラインを構築している場合に見落としがちです。最も一般的な統合の失敗は、エンドポイントが受け入れるよりも長いまたは大きなソースファイルを送信することです。
2 つの実用的な意味合い:
- 編集されたクリップの長さをソースと同じにしたい場合は、
durationを省略するか0に設定し、2 ~ 10 秒のトリミングを強制しないでください。 - プロンプトを迅速にテストする場合は、最初に
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 料金ページ と公式ドキュメントからリンクされているモデルエントリから現在のレートを直接確認してください。
エンジニアリング計画では、より安全な前提は次のとおりです。
- コストは、単なる 1 回のリクエスト料金ではなく、生成されたクリップの設定に応じてスケーリングされます。
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 を選択します。
この分離により、統合がシンプルになります。チームは、実際にはプロンプトベースの編集問題であるジョブにテキスト間ビデオを過剰に使用することがよくあります。
このエンドポイントの周りにオーケストレーションを配線している場合は、より重みのあるモデルアンカーとして Macaron V1 Tall Quick Start on Novita AI と Qwen3.8-Max on Novita AI を比較してください。
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 を使用します。
