Kling v2.1 Master
Kling v2.1 Masterは、テキストまたは画像を起点とする制作指示から動画を生成します。見せる出来事を定め、被写体、動作、カメラの指示、終わり方を、一貫した短いショットとして計画できます。
モデルについて
この説明はモデルの機能を紹介するものです。Ailootで利用できる入力、出力、オプションは、選択したメソッドごとに以下に記載されています。
Kling v2.1 Masterは、ドキュメントのモデルカタログに、テキストや画像から動画を生成する機能が記載されているKlingの動画生成バージョンです。テキストから映像のアイデアを展開する場合は文章によるシーンの制作指示を、被写体と構図がすでに決まっている場合は画像を起点とする制作指示を選んでください。どちらの場合も、完成したショットで見せる出来事を定めます。
テキストを起点に作成する場合は、被写体、舞台、動作を分かりやすい順序で記述します。スタジオを横切るダンサー、木々の下を走る車、変化する光を受けるガラスの物体など、それぞれがシーケンスの具体的な目的になります。シーンの見た目を決める細部を含め、指示文全体で統一してください。
画像を起点に作成する場合は、ショットで維持すべき特徴が見える参照画像を準備します。顔、物体の縁、特徴的な素材を見えるようにしてください。被写体のしぐさ、環境の動き、カメラの位置など、開始時の画から何が変わるかを記述します。結果の確認時に元画像を参照できるようにしてください。
終わり方を基準に動作を計画します。人が物を置く動作なら、その物が見分けられる場所に置かれた状態で終わり、何かを見せる演出なら、重要な特徴が見えた状態で終わるようにしてください。これにより、編集点を選びやすくなり、動きが目的を果たしているかも評価しやすくなります。
ドキュメントのモデル項目には、5秒と10秒の長さ、stdとproのモード、横長・縦長・正方形の画面形状が記載されています。選択したワークフローで利用できるコントロールを選び、実際の値を保存してください。生成されたクリップは、モデルのバージョン名ではなく、意図した動作とフレーミングに照らして評価します。
被写体の動きとカメラの動きを分けて記述してください。追従ショットでは、カメラがどの被写体を追い、周囲のどの部分が画面を通過するかを示します。固定ショットでは、画面内で起こる動きを指定してください。カメラの指示は、見る人に気づいてほしいものと結びつけます。
シーケンス全体の連続性を確認します。重要な被写体を引き続き見分けられるか、相互作用が空間的に一貫しているか、意図したカットのための時間的な余裕があるかを確かめてください。手、顔、表面の細部、重なり合う物体の変化を観察します。最も優れた個々のフレームだけでなく、動きも評価してください。
完成した動画はそれぞれ、プロンプト、参照画像、設定と一緒に保存します。複数のバージョンで同じシーンを比較するときは同じ指示文を使い、実際の映像の違いを記録してください。候補を修正するときは、観察した問題を記述し、シーンの有用な要素を保ちながら、その問題に関係する指示を変更します。
Ailoot Ultra · Video POST /v1/videos kling-v2-1-master
kling-v2-1-masterはじめに
Kling v2.1 Masterは、テキストまたは画像を起点とする制作指示から動画を生成します。見せる出来事を定め、被写体、動作、カメラの指示、終わり方を、一貫した短いショットとして計画できます。
- 対応する入力
- テキスト
- 結果
- 動画
Ailootで利用可能 · 入力とメソッド
Ailoot Ultra · Video POST /v1/videos
- 入力の種類
text- 出力の種類
video
| フィールド | 種類 | 要件 | 値と制限 | デフォルト |
|---|---|---|---|---|
フィールドmodel | 種類string | 要件必須 | 値と制限 kling-v2-1-master 条件: この Ailoot ルーティングセレクターをそのまま使用してください。 | デフォルト— |
フィールドprompt | 種類string | 要件必須 | 値と制限 最大の長さ: 500 条件: | デフォルト— |
フィールドmode | 種類string | 要件必須 | 値と制限 std, pro 条件: | デフォルト— |
フィールドmodel_name | 種類string | 要件任意 | 値と制限 条件: ネイティブ設定の上書き。省略可能です。省略すると選択したモデルを自動的に使用し、明示した値がある場合はその値を保持します。 | デフォルト— |
フィールドcfg_scale | 種類number | 要件任意 | 値と制限 最小値: 0 最大値: 1 条件: | デフォルト— |
フィールドaspect_ratio | 種類string | 要件任意 | 値と制限 条件: | デフォルト— |
フィールドnegative_prompt | 種類string | 要件任意 | 値と制限 最大の長さ: 200 条件: | デフォルト— |
フィールドduration | 種類integer | 要件任意 | 値と制限 5, 10 条件: | デフォルト— |
メソッドのパラメータとライフサイクル
| パラメータ | 仕様 |
|---|---|
パラメータcontent_type | 仕様application/json |
パラメータrequired | 仕様model, prompt, mode |
パラメータoptional | 仕様model_name, cfg_scale, aspect_ratio, negative_prompt, duration |
パラメータmaterial_types | 仕様text |
パラメータconditions | 仕様この Ailoot ルーティングセレクターをそのまま使用してください。, ネイティブ設定の上書き。省略可能です。省略すると選択したモデルを自動的に使用し、明示した値がある場合はその値を保持します。 |
メソッドのエイリアス: /v1/videos/generations
ライフサイクル: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
料金
最終料金の計算方法
表示料金は生成前の費用の見積もりです。最終請求額は、元の生成処理に記録された費用から計算されます。実測された出力時間や予測数量が、そのまま最終的な課金数量になるわけではありません。
料金情報はリクエストの機能を追加しません。対応するパラメーターは選択したメソッドに記載されています。
- 高速モード
- 未指定 高速モードが選択されている場合
- Flex モード
- 未指定 flex モードが選択されている場合
- 最大推論量
- 未指定 推論量が最大で、調整に既定値(default)を使用する場合
比較用の推定料金
設定別の価格
各料金を表示された条件と照合してください。選択肢となる設定の各組には、いずれか1つの料金を適用します。
| 設定 | 料金表 | 予測数量 | 料金 |
|---|---|---|---|
| 設定基本トークン料金 | 料金表基本料金 | 予測数量— | 料金 入力 · 入力トークン · 比較専用の見積もり — / 1K トークン 出力 · 出力トークン · 比較専用の見積もり — / 1K トークン 入力 · キャッシュ読み取り · 比較専用の見積もり — / 1K トークン 入力 · キャッシュ書き込み · 比較専用の見積もり — / 1K トークン 入力 · キャッシュ書き込み、1時間 · 比較専用の見積もり — / 1K トークン |
| 設定生成費用の見積もり | 料金表— | 予測数量生成1回分の概算 | 料金 出力 · 推定生成コスト · 比較専用の見積もり $6 生成前の見積もり この見積もりは追加料金ではなく、完了した生成処理に対する固定料金でもありません。 |
Ailootはリクエスト前に見積額を確保します。結果の取得後、実測使用量に基づいて最終料金を精算します。ストリーミング時の精算には最終の使用量記録を使用します。金額の確保と精算の仕組み →
リクエスト例
Ailoot Ultra · Video
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "kling-v2-1-master", "prompt": "A happy holiday scene at the beach.", "mode": "pro"}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
# Submit once. Retain the complete result, original identifiers and every response header.
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_STATUS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path("result.json").read_text())
u=urljoin("https://api.ailoot.ai",r["polling_url"])
p=urlsplit(u)
if p.scheme!="https" or p.netloc!="api.ailoot.ai" or p.username or p.password:
raise SystemExit("Unexpected returned polling URL; preserve the response")
subprocess.run(["curl","--fail-with-body","--silent","--show-error",u,"-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"],"-D","status-headers.txt","-o","status.json"],check=True)
# Read this same original polling_url again while pending.
# Preserve unknown/result_pending_check; do not repeat creation.
PY_STATUS
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_ASSETS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path("status.json").read_text())
roles={}
def visit(v,path=""):
if isinstance(v,dict):
for k,x in v.items(): visit(x,path+"/"+k)
elif isinstance(v,list):
for i,x in enumerate(v): visit(x,path+"/"+str(i))
elif isinstance(v,str):
u=urljoin("https://api.ailoot.ai",v); p=urlsplit(u)
if p.scheme=="https" and p.netloc=="api.ailoot.ai" and not p.username and not p.password and p.path.startswith("/v1/media/assets/") and p.path.endswith("/content"):
roles.setdefault(u,[]).append(path)
visit(r)
if not roles: raise SystemExit("No completed owned assets; retain the original status")
manifest=[]
for i,(u,paths) in enumerate(roles.items()):
target=Path(f"asset-{i}.bin")
subprocess.run(["curl","--fail-with-body","--silent","--show-error",u,"-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"],"-o",str(target)],check=True)
raw=target.read_bytes()
if not raw: raise SystemExit("Empty asset; retain original status and metadata")
ext="glb" if raw[:4]==b"glTF" else "png" if raw[:8]==b"\x89PNG\r\n\x1a\n" else "jpg" if raw[:3]==b"\xff\xd8\xff" else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "mp4" if raw[4:8]==b"ftyp" else "bin"
name=f"asset-{i}.{ext}"
if target.name!=name: target.rename(name)
manifest.append({"file":name,"response_paths":paths,"bytes":len(raw)})
Path("asset-manifest.json").write_text(json.dumps(manifest,indent=2))
print("Saved",len(manifest),"unique owned assets; every response role retained")
PY_ASSETS
結果を受け取って保存
Ailoot Ultra · Video
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
完了した結果をすべて保存
完了した動画や返されたファイルをすべて保存し、実際に返されたすべてのアセットURLから取得してください。
完全なレスポンスとヘッダー、元の識別子、実際のすべての出力、および使用量/会計の全フィールドを保持してください。一意の所有アセットをそれぞれ保存し、それを参照するすべての役割を保持してください。
元のレスポンスを確認する場合
返された公開タスクまたは操作のidと、すべてのヘッダーを保持してください。元のタスクだけを読み取ってください。unknownまたはresult_pending_checkであっても、別の作成を行うことは認められません。
レスポンスのフィールド
| フィールド | 種類 |
|---|---|
フィールドid | 種類string |
フィールドpolling_url | 種類string |
フィールドprovider_task_id | 種類string |
フィールドdata.task_id | 種類string |
フィールドdata.task_status | 種類string |
フィールドdata.task_result.videos[].url | 種類string |
エラーと次の手順
| レスポンス | 条件 | 次の手順 |
|---|---|---|
レスポンス400 · invalid_request_error | 条件必須フィールド、モデルセレクター、型、または入力の表現形式が無効です。 | 次の手順別のリクエストを準備する前に、返された検証の詳細を確認してください。 |
レスポンス | 条件元のリクエストまたは結果が不明、あるいは確認が必要です。 | 次の手順元の識別子とヘッダーを保持し、サポートされているステータス情報やライブラリレコードだけを読み取ってください。作成リクエストを再送しないでください。 |
エイリアス
モデルのエイリアス
Ailoot Ultra kling-v2-1-master
メソッドパスのエイリアス
/v1/videos/generations
関連する呼び出し用ID
FAQ · Kling v2.1 Master
- 利用できる入力と結果は何ですか?
POST /v1/videos·kling-v2-1-master:text→video- リクエストはどの項目を使用しますか?
POST /v1/videos·kling-v2-1-master:model,prompt,mode,model_name,cfg_scale,aspect_ratio,negative_prompt,duration- どの制限が適用されますか?
POST /v1/videos·kling-v2-1-master:prompt.maximum_length:500;cfg_scale.minimum:0;cfg_scale.maximum:1;negative_prompt.maximum_length:200