Kling 3.0 API の使い方:キー、リクエスト、ポーリング、フレーム、マルチショット
Kling 3.0 API を順を追って使う方法。キーの作成、動画タスクの送信、動画 URL のポーリング、最初と最後のフレームからの生成、マルチショットのクリップ作成。
Markdown で読むKling 3.0 API を使うには、API キーを作成し、モデル ID kling-3-0 とプロンプトを含む JSON ボディを 1 つ POST して、返されたタスクを動画 URL の準備ができるまでポーリングします。テキストから動画、最初と最後のフレームから動画、マルチショットのクリップ、エレメント参照はすべて 1 つのエンドポイントで扱い、どれになるかはボディのフィールドで決まります。
このガイドでは、動くコードで各ステップを順に説明し、そのあとでフレーム、マルチショットのクリップ、エレメント、そして課金前に拒否されるリクエストを紹介します。
最初のリクエストの前に必要なものは?
- API キー。 API キーページで作成し、サーバー上に保管してください。ブラウザのコードには絶対に入れないでください。
- クレジット。 請求ページで残高をチャージしてください。クレジットに期限はなく、失敗したタスクは課金されません。
- モデル ID
kling-3-0。
export SEEDROUTER_API_KEY="your-key"Kling 3.0 のリクエストはどう送る?
タスクを /v1/videos/generations に POST します:
curl https://api.seedrouter.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-3-0",
"prompt": "A red paper boat drifting on a calm pond at sunrise, soft mist on the water, slow push-in, no text, no logos.",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9"
}'レスポンスは動画ではなくタスクです:
{"id": "task_...", "model": "kling-3-0", "status": "processing", "created_at": 1789689600}model と prompt 以外のフィールドにはすべてデフォルト値があります:
| フィールド | デフォルト | 値 |
|---|---|---|
mode | pro | std(720p)、pro(1080p)、4K |
duration | 5 | 3〜15 秒 |
aspect_ratio | 16:9 | 16:9、9:16、1:1 |
sound | false | true でネイティブ音声を生成 |
スキーマは厳格です。未知のフィールドはタスク作成前に HTTP 400 で拒否されるので、タイプミスのせいで設定が黙って無視されたまま課金されるクリップができることはありません。
動画はどう取得する?
status が completed または failed になるまで、10〜20 秒ごとに GET /v1/tasks/{id} をポーリングします。私たちのテストでは、3 秒の std クリップは約 2 分、音声付きの 5 秒の pro クリップは約 2 分半で完了しました。
import os
import time
import requests
API = "https://api.seedrouter.ai/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"}
task = requests.post(
f"{API}/videos/generations",
headers=HEADERS,
json={
"model": "kling-3-0",
"prompt": "A red paper boat drifting on a calm pond at sunrise, slow push-in, no text, no logos.",
"mode": "std",
"duration": 5,
},
timeout=60,
)
task.raise_for_status()
task_id = task.json()["id"]
while True:
result = requests.get(f"{API}/tasks/{task_id}", headers=HEADERS, timeout=60).json()
if result["status"] in ("completed", "failed"):
break
time.sleep(15)
if result["status"] == "completed":
print(result["output"]["video_url"])
else:
print(result["error"])完了したタスクは次のようになります:
{
"id": "task_...",
"model": "kling-3-0",
"status": "completed",
"output": {"video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4"}
}std は 1280 × 720、pro は 1920 × 1080 で返り、どちらも MP4(H.264)です。sound をオンにすると、ファイルにステレオの音声トラックが付きます。ホストされたリンクは永続的ではないので、ファイルは自分のストレージにダウンロードしてください。ポーリング中のネットワークタイムアウトは生成の失敗を意味しないので、新しいタスクを送信せず、タスク ID を保持してもう一度確認してください。
最初と最後のフレームから始めるには?
image_urls に画像 URL を 1 つか 2 つ渡します。1 枚目の画像がクリップの始まりになり、2 枚目が終わりになります。画像がない場合、クリップはプロンプトだけから作られます。
{
"model": "kling-3-0",
"prompt": "The camera glides from the empty street to the lit shop window",
"image_urls": ["https://example.com/start.png", "https://example.com/end.png"],
"mode": "pro",
"duration": 6
}画像は公開されている HTTP(S) URL で、JPG または PNG である必要があります。Base64 のデータは拒否されるので、先にファイルを自分のストレージにアップロードしてください。
マルチショットのクリップはどう作る?
multi_shots を true にして、multi_prompt に各ショットを記述します。ショットは最大 5 つで、それぞれ 1〜12 秒です。ショットの長さの合計は 3〜15 秒でなければならず、その合計が課金されるクリップの長さになります。duration は使われません。
{
"model": "kling-3-0",
"mode": "pro",
"sound": true,
"multi_shots": true,
"multi_prompt": [
{"prompt": "Wide shot of a small open kitchen, a chef tosses vegetables in a wok, flames rising, warm light.", "duration": 3},
{"prompt": "Close-up of the wok, vegetables flipping through the flames, oil sizzling, steam drifting.", "duration": 3}
]
}これは私たちのテストでこのリクエストから生成されたクリップで、6 秒の動画 1 本がワイドショットからクローズアップに切り替わります:
Kling 3.0、pro(1080p)、マルチショット 3 + 3 秒、音声あり。
人物や商品を一貫させるには?
kling_elements に追加します。name、短い description、被写体の画像 URL 2〜4 個を指定し、1 リクエストにつき最大 3 つのエレメントを使えます。プロンプトではエレメントを名前で言及します。
{
"model": "kling-3-0",
"prompt": "@hero slowly turns toward the camera in soft window light",
"kling_elements": [
{
"name": "hero",
"description": "a young woman with short black hair and a yellow raincoat",
"element_input_urls": ["https://example.com/hero-front.png", "https://example.com/hero-side.png"]
}
]
}課金前に拒否されるリクエストは?
次のリクエストは送信時に HTTP 400 が返り、タスクは作成されず、課金もされません:
| リクエスト | 理由 |
|---|---|
| ショットの合計が 3 秒未満または 15 秒を超えるマルチショットのクリップ | Kling 3.0 が作るクリップは 3〜15 秒 |
description のないエレメント | すべてのエレメントに必要 |
image_urls が 2 つを超える、ショットが 5 つを超える、エレメントが 3 つを超える | モデルの上限を超えている |
小文字の mode: "4k" | 値は 4K |
| Base64 の画像、または上の表にないフィールド | メディアは URL で渡す。スキーマは厳格 |
受理されたあとに失敗したタスク(たとえばモデルのコンテンツポリシーによるもの)は、status: "failed" と error コードを返し、課金されません。コードの一覧はエラーカタログにあります。
Kling 自身の API とどう違う?
Kling の開発者向け API は独自のフィールド名を使っており、旧バージョンと現行バージョンでも異なります。[1][2] 既存の連携を移行する場合は、フィールドを次のように対応させてください:
| SeedRouter | Kling 旧バージョン API |
|---|---|
model: "kling-3-0" | model_name: "kling-v3" |
sound: true / false | sound: "on" / "off" |
duration: 5(整数) | duration: "5"(文字列) |
mode: "4K" | mode: "4k" |
image_urls: [first, last] | image と image_tail |
multi_shots + multi_prompt: [{prompt, duration}] | multi_shot + shot_type: "customize" + multi_prompt: [{index, prompt, duration}] |
kling_elements: [{name, description, element_input_urls}] | element_list: [{element_id}](事前に作成) |
SeedRouter は結果をポーリングで受け取るタスクとして提供します。callback_url は提供していません。
コーディングエージェントに任せられる?
はい。Kling 3.0 のページには Claude Code、Codex、Cursor 用の既製プロンプトがあり、環境変数からキーを読み取り、リクエストとその料金を提示して承認を待ってから、送信・ポーリング・クリップのダウンロードまで行います。同じページには、コードが送るのとまったく同じボディを送信する Playground もあります。
Kling 3.0 API に関するよくある質問
Kling 3.0 の公式 API はある?
あります。Kling は独自のキー、ユニット制の課金、リクエスト形式を持つ開発者向け API を公開しています。[1][3] SeedRouter は、ほかのモデルと共通の 1 つのキーと 1 つの残高で Kling 3.0 を呼び出せる別の方法です。
Kling 3.0 API の料金は?
動画の秒数で課金され、モードと音声がオンかどうかで決まります。Kling 3.0 API の料金ガイドでクリップごとの費用を計算しており、モデルページには現在のレートが表示されています。
タスクはキャンセルできる?
できません。受理されたタスクは、完了するか失敗するまで実行されます。失敗したタスクは課金されません。



