Motion ControlKling
Kling 2.6 モーションコントロール
kwaivgi/kling-v2.6/motion-control
Kling 2.6 モーションコントロールは、参照モーション(ダンス、アクション、ジェスチャー)を滑らかでリアルなアニメーションに変換します。キャラクター画像(またはソース動画)とモーション動画をアップロードすると、アイデンティティと時間的一貫性を保ちながら動きを転送します。
サンプル
パラメータ
| 名前 | 型 | 既定 | 制約 | 説明 |
|---|---|---|---|---|
| image *キャラクター画像 | image_upload | — | image/jpeg,image/jpg,image/png · 0–1 items | キャラクター画像をアップロードしてください。対応形式: .jpg/.jpeg/.png。最大ファイルサイズ: 10MB。最小サイズ: 300x300px。アスペクト比: 1:2.5 から 2.5:1。 |
| character_orientationキャラクターの向き | select | image | image | video | キャラクターソースとして画像または動画を使用するかを選択します。 |
| promptプロンプト | text | — | ≤ 500 chars | 生成のためのオプションのポジティブプロンプト。 |
| negative_promptネガティブプロンプト | text | — | ≤ 500 chars | 生成のためのオプションのネガティブプロンプト。 |
| resolution生成モード | select | 1080P | 720P | 1080P | |
| keep_original_sound元の音声を保持 | boolean | true | — | 出力で元の動画の音声を保持するかどうか。 |
API
統一 REST API でこのモデルを呼び出せます。API Keys ページでキーを取得してください。
cURL
# 1) Submit — returns { "task_uuid": "..." }
curl -X POST "https://www.namifusion.com/api/v1/marketplace/run/kwaivgi/kling-v2.6/motion-control" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"image": [
"https://assets.namifusion.com/uploads/image/e6d71928-36de-4d71-a26c-9b1b427a6dfd/2026-03-27/0847e5142a20.jpg?imageMogr2/thumbnail/600x/format/webp/quality/85"
],
"character_orientation": "image",
"resolution": "1080P",
"keep_original_sound": true
}
}'
# 2) Poll until status is "completed", then read the output URLs
curl "https://www.namifusion.com/api/v1/marketplace/run/tasks/TASK_UUID" \
-H "Authorization: Bearer YOUR_API_KEY"Python
import time, requests
API_KEY = "YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
# 1) Submit
resp = requests.post(
"https://www.namifusion.com/api/v1/marketplace/run/kwaivgi/kling-v2.6/motion-control",
headers=HEADERS,
json={
"input": {
"image": [
"https://assets.namifusion.com/uploads/image/e6d71928-36de-4d71-a26c-9b1b427a6dfd/2026-03-27/0847e5142a20.jpg?imageMogr2/thumbnail/600x/format/webp/quality/85"
],
"character_orientation": "image",
"resolution": "1080P",
"keep_original_sound": True
}
},
)
resp.raise_for_status() # 401/402/429/5xx stop here instead of polling a bad task
task = resp.json()
# 2) Poll until a terminal state (completed / failed / cancelled).
# This model is allowed up to 600s server-side.
deadline = time.time() + 660
while task.get("status") not in ("completed", "failed", "cancelled"):
if time.time() > deadline:
raise TimeoutError(f"still {task.get('status')} — keep the task_uuid and poll later")
time.sleep(3)
poll = requests.get(f"https://www.namifusion.com/api/v1/marketplace/run/tasks/{task['task_uuid']}", headers=HEADERS)
poll.raise_for_status()
task = poll.json()
print(task["status"], task.get("output"))JavaScript
const API_KEY = "YOUR_API_KEY";
const HEADERS = { Authorization: `Bearer ${API_KEY}` };
// 1) Submit
const resp = await fetch("https://www.namifusion.com/api/v1/marketplace/run/kwaivgi/kling-v2.6/motion-control", {
method: "POST",
headers: { ...HEADERS, "Content-Type": "application/json" },
body: JSON.stringify({
"input": {
"image": [
"https://assets.namifusion.com/uploads/image/e6d71928-36de-4d71-a26c-9b1b427a6dfd/2026-03-27/0847e5142a20.jpg?imageMogr2/thumbnail/600x/format/webp/quality/85"
],
"character_orientation": "image",
"resolution": "1080P",
"keep_original_sound": true
}
}),
});
if (!resp.ok) throw new Error(`submit failed: ${resp.status} ${await resp.text()}`);
let task = await resp.json();
// 2) Poll until a terminal state (completed / failed / cancelled).
// This model is allowed up to 600s server-side.
const deadline = Date.now() + 660 * 1000;
while (!["completed", "failed", "cancelled"].includes(task.status)) {
if (Date.now() > deadline) throw new Error(`still ${task.status} — keep the task_uuid and poll later`);
await new Promise((r) => setTimeout(r, 3000));
const poll = await fetch(`https://www.namifusion.com/api/v1/marketplace/run/tasks/${task.task_uuid}`, { headers: HEADERS });
if (!poll.ok) throw new Error(`poll failed: ${poll.status}`);
task = await poll.json();
}
console.log(task.status, task.output);ドキュメント
NamiFusion Kling 2.6 Motion Control
AI モーション制御動画生成:キャラクター画像とモーション参照動画をアップロードして、キャラクターのアイデンティティを保持したアニメーション動画を生成します。
NamiFusion Kling 2.6 Motion Control は、モーション転送シナリオ向けに設計された動画生成サービスです。キャラクター画像とモーション参照動画を受け取り、参照動画のダンス・アクション・ジェスチャーをターゲットキャラクターに転送し、より高いアイデンティティ一貫性と時系列的な整合性を持つ結果動画を出力します。
主な機能
- モーション転送: 参照動画の身体動作をターゲットキャラクターに転送します。ダンス、パフォーマンス、アクションデモンストレーションのシナリオに適しています。
- キャラクター一貫性: キャラクター画像を生成動画の視覚的主体として使用し、人物の外見とアイデンティティ特徴を可能な限り保持します。
- オプションのプロンプト制御: スタイルや不要なコンテンツに対する追加ガイダンスとして
promptとnegative_promptをサポートします。 - 非同期タスク: 送信後に
task_uuidを返し、ポーリングによって処理状況と最終結果を取得できます。
技術仕様
| パラメータ | 詳細 |
|---|---|
| モデル ID | kwaivgi/kling-v2.6-pro/motion-control |
| リクエスト方式 | 非同期 POST(タスク送信 + 結果ポーリング) |
| 入力 | キャラクター画像 URL + モーション参照動画 URL |
| 出力 | 生成動画 URL |
| 処理時間 | 通常数十秒から数分、最大ポーリング待機時間は 10 分 |
| 料金 | $0.112 / 秒、最低 3 秒単位で課金 |
クイックスタート
API エンドポイント
| エンドポイント | メソッド | 説明 |
|---|---|---|
/api/v1/marketplace/run/kwaivgi/kling-v2.6/motion-control | POST | モーション制御タスクを送信 |
/api/v1/marketplace/run/tasks/{task_uuid} | GET | タスクの状態と結果を照会 |
認証
リクエストヘッダーに API Key を含めてください:
X-API-Key: sk-your-api-key
使用例
ステップ 1:タスクを送信する
curl -X POST "https://www.namifusion.com/api/v1/marketplace/run/kwaivgi/kling-v2.6/motion-control" \
-H "X-API-Key: sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"input": {
"image": "https://static.example.com/character.png",
"video": "https://static.example.com/motion.mp4",
"character_orientation": "image",
"prompt": "full body, natural motion, cinematic lighting",
"negative_prompt": "blur, distortion, extra limbs, low quality",
"resolution": "720P",
"keep_original_sound": true
}
}'
レスポンス例:
{
"task_uuid": "443ea3cd-4025-40d2-901f-ef18970dbc43",
"status": "pending",
"cost_credits": 0
}
ステップ 2:タスク状態をポーリングする
curl -X GET "https://www.namifusion.com/api/v1/marketplace/run/tasks/443ea3cd-4025-40d2-901f-ef18970dbc43" \
-H "X-API-Key: sk-your-api-key"
処理中:
{
"task_uuid": "443ea3cd-4025-40d2-901f-ef18970dbc43",
"status": "processing"
}
完了:
{
"task_uuid": "443ea3cd-4025-40d2-901f-ef18970dbc43",
"model_id": "kwaivgi/kling-v2.6/motion-control",
"status": "completed",
"output": {
"video_url": "https://cdn.example.com/results/kling_motion_control_output.mp4"
},
"cost_credits": 0,
"created_at": "2026-03-27T11:40:00Z",
"completed_at": "2026-03-27T11:41:20Z"
}
Python サンプル
import requests
import time
API_KEY = "sk-your-api-key"
BASE_URL = "https://www.namifusion.com/api/v1/marketplace/run"
HEADERS = {
"X-API-Key": API_KEY,
"Content-Type": "application/json",
}
payload = {
"input": {
"image": "https://static.example.com/character.png",
"video": "https://static.example.com/motion.mp4",
"character_orientation": "image",
"prompt": "full body, natural motion, cinematic lighting",
"negative_prompt": "blur, distortion, extra limbs, low quality",
"resolution": "720P",
"keep_original_sound": True,
}
}
submit_resp = requests.post(
f"{BASE_URL}/kwaivgi/kling-v2.6-pro/motion-control",
headers=HEADERS,
json=payload,
)
submit_resp.raise_for_status()
task = submit_resp.json()
task_uuid = task["task_uuid"]
print(f"タスクを送信しました:{task_uuid}")
while True:
status_resp = requests.get(
f"{BASE_URL}/tasks/{task_uuid}",
headers=HEADERS,
)
status_resp.raise_for_status()
result = status_resp.json()
status = result["status"]
print(f"ステータス:{status}")
if status == "completed":
print("結果:", result["output"]["video_url"])
break
if status == "failed":
print("失敗:", result.get("error_message", "不明なエラー"))
break
time.sleep(5)
詳細パラメータと戻り値
リクエストパラメータ
リクエストボディは JSON 形式で、すべてのパラメータは input オブジェクト内に配置します:
{
"input": {
"image": "https://...",
"video": "https://...",
"character_orientation": "image",
"prompt": "full body, natural motion",
"negative_prompt": "blur, low quality",
"keep_original_sound": true
}
}
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
image | string | はい | - | キャラクター画像 URL。.jpg、.jpeg、.png をサポート。最大ファイルサイズ 10MB、最小サイズ 300x300、アスペクト比範囲 1:2.5 ~ 2.5:1。 |
video | string | はい | - | モーション参照動画 URL。.mp4、.mov をサポート。最大ファイルサイズ 10MB、最小サイズ 300x300、アスペクト比範囲 1:2.5 ~ 2.5:1。 |
character_orientation | string | いいえ | "image" | キャラクターのソースタイプ。現在のモデル設定ではデフォルトで image を使用。サポート値:image、video。 |
prompt | string | いいえ | null | モーションスタイル、カメラの雰囲気、キャラクターの表情などを記述するオプションのポジティブプロンプト。最大長 500 文字。 |
negative_prompt | string | いいえ | null | 不要なコンテンツを制限するオプションのネガティブプロンプト。最大長 500 文字。 |
keep_original_sound | boolean | いいえ | true | モーション参照動画の元の音声を保持するかどうか。 |
タスクステータス
タスク送信後、ポーリングでステータスを照会します。5 秒間隔のポーリングを推奨します:
| ステータス | 説明 |
|---|---|
pending | タスクが作成され、処理待ちの状態です。 |
processing | タスクが処理中です。 |
completed | タスクが完了し、結果動画 URL が output.video_url から取得できます。 |
failed | タスクが失敗しました。error_message で原因を確認してください。 |
戻り値の構造
タスク送信レスポンス
| フィールド | 型 | 説明 |
|---|---|---|
task_uuid | string | 後続のステータス照会に使用する一意のタスク識別子。 |
status | string | 初期タスクステータス、通常は pending。 |
cost_credits | number | このタスクで消費されたクレジット。 |
タスク完了レスポンス
| フィールド | 型 | 説明 |
|---|---|---|
task_uuid | string | 一意のタスク識別子。 |
model_id | string | モデル ID(kwaivgi/kling-v2.6-pro/motion-control)。 |
status | string | タスクステータス。 |
output.video_url | string | 生成された結果動画 URL。 |
cost_credits | number | 消費されたクレジット。 |
created_at | string | タスク作成時刻(ISO 8601)。 |
completed_at | string | タスク完了時刻(ISO 8601)。 |
error_message | string | エラーメッセージ、failed 時のみ返されます。 |
パラメータが出力に与える影響
| パラメータ | 出力への影響 |
|---|---|
image | 最終動画のメインキャラクターの外見を決定します。遮蔽がなく、フレーミングが完全な明瞭なキャラクター画像を推奨します。 |
video | モーションの軌跡とリズムの参照を提供します。動きが明確で主体が目立つほど、転送結果が安定する傾向があります。 |
prompt | カメラスタイル、モーションの雰囲気、衣装の詳細、シーンの傾向に対するガイダンスを追加しますが、参照モーション自体を置き換えるものではありません。 |
negative_prompt | ぼかし、歪み、余分な手足、低品質な詳細などの問題を軽減するのに役立ちます。 |
keep_original_sound: true | 出力動画は参照動画の元の音声を可能な限り保持し、ダンスやパフォーマンスのシナリオに適しています。 |
keep_original_sound: false | 出力動画は参照動画の元の音声を保持せず、後の音声置換や編集に適しています。 |
注意事項
- 入力 URL は公開アクセス可能である必要があります:
imageとvideoはどちらも、サーバーが直接ダウンロードできる公開 URL である必要があります。 - キャラクター入力には画像の使用を推奨します: 現在のモデル設定はデフォルトで
character_orientation: "image"となっており、これが最も安定した明確に定義された統合方法です。 - プロンプトは簡潔かつ具体的に保ってください:
promptとnegative_promptは補足的なガイダンスとして最も効果的です。相互に矛盾する説明を多数重ねることは避けてください。 - 5 秒のポーリング間隔を推奨します: このモデルは非同期タスク処理を使用します。5 秒ごとにタスクステータスを照会し、最大待機時間は 600 秒です。
- 結果フィールドは単一の動画 URL です: タスク完了後、
videosのような配列フィールドではなく、output.video_urlから結果を読み取ってください。