Kling 3.0
テキスト、または 1~2 枚のフレームから、std または pro 区分の 3~15 秒の動画を生成します。マルチショットのストーリーボードと再利用できるエレメントに対応し、料金は秒単位です。
- 非同期です。作成の呼び出しはタスク ID を返し、動画はタスクが成功した時点で得られます。
- 入力方法は 3 通りです。テキストのみ、開始フレーム、または開始フレームと終了フレームです。このモデルは参照画像、参照動画、音声を受け付けません。
resolutionは区分です。stdは 720p、pro(デフォルト)は 1080p でレンダリングされます。- マルチショット:1 枚の開始フレーム画像から、最大 5 つのショットを作れます。各ショットには、それぞれのプロンプトと長さがあります。ショットの長さの合計は
durationと一致する必要があります。 - エレメント:
elementsで、名前を付けた被写体を最大 3 つまで一度だけ定義できます。 - 料金は、選んだ区分での動画の秒数に応じて決まります。失敗したタスクには課金されません。
このモデルをテスト画面で開きます。BeatAPI の API キーを入力するとタスクを作成できます。実際に呼び出され、ご自身の残高から課金されます。
エンドポイントと認証
POST https://api.beatapi.io/v1/videos/tasks
Authorization
string
必須
BeatAPI の API キーを Bearer <BEATAPI_API_KEY> の形式で送信します。キーはダッシュボードで作成できます。キーはサーバー側で保管し、ブラウザーやモバイルアプリに含めないでください。
ボディは JSON で送信し、Content-Type: application/json を指定します。Idempotency-Key は任意です。論理的に 1 件のリクエストごとに一意の値(255 文字以内)を送り、まったく同じボディを再試行するときだけ再利用してください。24 時間以内に同じキーと同じボディで再試行すると、最初のレスポンスが Idempotent-Replayed: true 付きで再度返されます。同じキーで異なるボディを送ると 409 idempotency_conflict が返ります。2xx 以外のレスポンスは保存されないため、400 や 402 の後の再試行は改めて実行されます。
リクエストの流れ
タスクを作成する
下記のパラメーターをエンドポイントに POST します。201 が返れば、タスクが受け付けられ、料金が残高から仮確保されたことを意味します。処理はバックグラウンドで実行されます。data.id を保存してください。
完了を待つ
GET /v1/tasks/{task_id} を呼び出し、status が succeeded または failed になるまで、呼び出しの間隔を data.poll_after_seconds(画像は 5 秒、動画は 8 秒)だけ空けてください。あるいは task.succeeded と task.failed のWebhookを登録することもできます。処理タイムアウトで停止したタスクはイベントを送信しないため、フォールバックとしてポーリングも続けてください。
入力モード
リクエストパラメーター
model
string
必須
実行するモデルです。
値:kling-v3
値が正しくない場合
- 指定がない場合:
"model" is required - 画像モデルをこのエンドポイントに送った場合:
"model" nano-banana-2 is served by POST /v1/images/tasks, not this endpoint
prompt
string
必須
動画の中で起きること(被写体、動き、カメラワーク、スタイル)です。
長さ:1–5000 文字
- 長さは文字数で数えます(CJK 文字も 1 文字として数えます)。
- マルチショットを含め、すべてのモードで必須です。マルチショットでは、各ショットにも
multi_promptの中に専用のプロンプトがあります。
値が正しくない場合
- 指定がない場合:
"prompt" is required - 空、または上限を超える長さの場合:
"prompt" has an unsupported length
images
string[]
任意
開始フレーム、または開始フレームと終了フレームです。
要素数:1–2
各要素は公開されている https:// の URL です。ローカルファイルは先に アップロード(POST /v1/files)し、返された data.url を渡してください。
- リンク 1 個の場合は、動画がその画像から始まります。リンク 2 個の場合は、
images[0]が開始フレーム、images[1]が終了フレームです。 - マルチショット(
multi_shots: true)では、画像はちょうど 1 枚です。 - このモデルには参照画像のフィールドがありません。被写体の画像は
elementsに入れます。
値が正しくない場合
- リンクが 3 個以上の場合:
"images" accepts at most 2 items - 空の配列の場合:
"images" requires at least 1 item - https:// のリンクではない場合:
"images[0]" must be a public HTTPS URL multi_shots: trueで画像がない、または 2 枚ある場合:Kling V3 multi-shot mode requires exactly one image
duration
integer
任意デフォルト: 5
動画の長さです。単位は秒で、整数で指定します。料金はこの値に基づきます。
デフォルト:5
範囲:3–15
- 省略すると
5が使われ、その秒数で課金されます。 multi_shots: trueの場合、multi_prompt内の各ショットのdurationの合計が、この値とちょうど一致する必要があります。durationを省略した場合は、合計が 5 になる必要があります。
値が正しくない場合
- 範囲外、整数ではない、または文字列として送った場合:
"duration" is outside its supported range - マルチショットの長さの合計が
durationと一致しない場合:Kling V3 shot durations must sum to duration
aspect_ratio
string
任意デフォルト: 16:9
動画の形(幅:高さ)です。
指定できる値:16:9, 9:16, 1:1
デフォルト:16:9
- デフォルトは
16:9です。
値が正しくない場合
- 一覧にない値の場合:
"aspect_ratio" must be one of: [16:9 9:16 1:1]
resolution
string
任意デフォルト: pro
画質の区分です。std は 720p、pro は 1080p でレンダリングされます。pro は 1 秒あたりの料金が高くなります。指定する値は std と pro で、ピクセル数ではありません。
指定できる値:std, pro
デフォルト:pro
- 省略すると
proが使われ、その区分で課金されます。 4K、720p、1080pは受け付けません。stdまたはproを送ってください。
値が正しくない場合
- 一覧にない値の場合(たとえば
720pや4K):"resolution" must be one of: [std pro]
sound
boolean
任意
動画に、生成されたサウンドトラックを付けるかどうかです。
- 省略すると、音声は
multi_shotsに従います。マルチショットのリクエストではオン、それ以外ではオフです。自分で決める場合はtrueまたはfalseを送ります。
値が正しくない場合
- true でも false でもない場合:
"sound" must be a boolean
multi_shots
boolean
任意デフォルト: false
ストーリーボードモードをオンにします。動画は multi_prompt に並べたショットで構成されます。デフォルトは false です。
デフォルト:false
imagesにちょうど 1 枚の画像が必要で、multi_promptのショットの長さの合計がdurationと一致する必要があります。multi_shots: trueがない場合、multi_promptは拒否されます。- 確認は次の順で行われます。画像が 1 枚であること、次に
multi_promptがあること、最後に長さです。
値が正しくない場合
- true でも false でもない場合:
"multi_shots" must be a boolean - 画像がない、または 2 枚以上ある場合:
Kling V3 multi-shot mode requires exactly one image multi_promptがない場合:Kling V3 multi-shot mode requires multi_prompt- ショットの長さの合計が
durationと一致しない場合:Kling V3 shot durations must sum to duration
multi_prompt
object[]
任意
マルチショット動画のショットを順番に並べたものです。1~5 個のオブジェクトで、それぞれに専用のプロンプトと長さがあります。
要素数:1–5
- 各ショットは 2 つの必須フィールドを持つオブジェクトで、それ以外は受け付けません。
multi_prompt[].prompt(文字列、必須):このショットで起きること。1~500 文字です。multi_prompt[].duration(整数、必須):このショットの長さ。整数秒で、1~12 です。- ショットの長さの合計は、リクエストの
duration(durationを省略した場合は 5)と一致する必要があり、その合計は最大 15 です。 multi_shots: trueの場合のみ有効です。
値が正しくない場合
multi_shots: trueなしで送った場合:"multi_prompt" requires multi_shots=true- ショットが 6 個以上の場合:
"multi_prompt" accepts at most 5 items - 空の配列の場合:
"multi_prompt" requires at least 1 item - ショットに
promptがない場合:"prompt" is required in "multi_prompt[0]" - ショットに
durationがない場合:"duration" is required in "multi_prompt[0]" - ショットのプロンプトが空、または 500 文字を超える場合:
"multi_prompt[0].prompt" has an unsupported length - ショットの長さが 1~12 の範囲外、または整数ではない場合:
"multi_prompt[0].duration" is outside its supported range promptとduration以外のキーがある場合:field "name" is not supported in "multi_prompt[0]"- ショットの長さの合計が
durationと一致しない場合:Kling V3 shot durations must sum to duration
elements
object[]
任意
名前を付けた被写体(キャラクター、商品、小道具)を最大 3 つまで、画像を使って一度だけ定義します。
要素数:≤ 3
- 最大 3 個のオブジェクトの配列です。各オブジェクトは次のキーのみ受け付けます。
elements[].name(文字列、必須):エレメントの名前。1 文字以上です。elements[].description(文字列、任意):そのエレメントが何であるか。省略すると、nameが説明として使われます。elements[].element_input_urls(文字列の配列、必須):そのエレメントを写した公開 HTTPS リンクを 1~4 個です。elements[].element_input_audio_urls(文字列の配列、任意):そのエレメントの公開 HTTPS 音声リンクをちょうど 1 個です。elements[].start_timeとelements[].end_time(整数、任意):時間をミリ秒で指定します。それぞれ 0~30000 の整数です。両方を送るか、どちらも送らないかのいずれかにします。end_timeはstart_timeより大きく、end_time - start_timeは 3000~8000(3~8 秒)である必要があります。- リンクの上限は、各エレメントごとに適用されます。すべてのエントリが、それぞれ 4 個のリンクと 1 個の音声リンクを持てます。
値が正しくない場合
- エレメントが 4 個以上の場合:
"elements" accepts at most 3 items - エレメントがオブジェクトではない場合:
"elements[0]" must be an object - エレメントに
nameがない場合:"name" is required in "elements[0]" - エレメントに
element_input_urlsがない場合:"element_input_urls" is required in "elements[0]" nameが空の場合:"elements[0].name" has an unsupported length- リンクが 5 個以上の場合:
"elements[0].element_input_urls" accepts at most 4 items element_input_urlsが空の配列の場合:"elements[0].element_input_urls" requires at least 1 item- リンクが https:// ではない場合:
"elements[0].element_input_urls[1]" must be a public HTTPS URL - 音声リンクが 2 個以上の場合:
"elements[0].element_input_audio_urls" accepts at most 1 items start_timeまたはend_timeが 0~30000 の範囲外、または整数ではない場合:"elements[0].start_time" is outside its supported range- エレメントが受け付けないキーがある場合:
field "color" is not supported in "elements[0]" start_timeとend_timeの片方だけを送った、end_timeがstart_timeより後ではない、または区間が 3 秒より短い、もしくは 8 秒より長い場合:Kling V3 element segment must provide a 3-8 second start_time/end_time range
入力メディアの上限
ゲートウェイはタスク作成前にすべての入力を読み取り、次の上限を超えるものは、その入力を示す 400 bad_request で拒否します。課金はされません。
- ゲートウェイは、タスクを作成する前に、各画像、エレメントのリンク、音声リンクが公開 HTTPS リンクであることだけを確認します。サイズ、形式、寸法は確認しないため、モデルが使えない入力は送信後にタスクが失敗します。そのメッセージには変更すべき点が示され、予約された金額は全額返却されます。
- ローカルのファイルしかない場合は、
POST /v1/filesでアップロードし、返されたdata.urlを渡してください。
マルチショットのルール
タスクの作成時に、次の順で確認されます。ルールに反するリクエストは 400 bad_request で拒否され、課金されません。
- テキストのみのマルチショットは使えません。マルチショット動画は、必ず 1 枚の画像から始まります。
- マルチショットのリクエストは
duration秒分で課金されます。これはショットの長さの合計です。
このモデルが受け付けないフィールド
次のフィールドを送ると、無視されるのではなく、課金される前に拒否されます。
reference_images、reference_videos、reference_audios、generate_audio、seed、quality、watermark、task_type、output_format→field "reference_images" is not supported by model kling-v3(送ったフィールド名が入ります)。- その他の未知のフィールド →
unknown field: <name>。
リクエスト例
テキストから動画
pro 区分(1080p)で、音声付きの 5 秒のクリップです。
開始フレーム
動画はその画像から始まります。
開始フレームと終了フレーム
動画は 1 枚目の画像から 2 枚目の画像へ動きます。より安い std 区分(720p)を使っています。
マルチショット
1 枚の開始フレーム画像から作る、3 秒のショット 2 つです。ショットの長さ(3 + 3)が duration(6)と一致しています。
再利用できるエレメント
2 枚の画像から、名前付きのエレメントを 1 つ定義します。エレメントの名前は product で、説明は任意です。
レスポンス
タスクの作成(201)
タスクオブジェクトです。タスクが成功するまで output は null です。「実行中」と記載されたフィールドは、タスクの完了後に表示されなくなります。
完了したタスク
GET /v1/tasks/{task_id} は HTTP 200 と status: "succeeded" を返し、結果は data.output に入ります。
出力フィールド
失敗したタスク
失敗したタスクも、GET /v1/tasks/{task_id} では HTTP 200 になります。失敗はボディに示されます。仮確保された金額は全額戻されるため、課金されません。
完全なコード例
タスクを作成し、サーバーが示すポーリング間隔で完了を待ち、結果の URL を出力します。環境変数に BEATAPI_API_KEY を設定し、requests をインストールしてください。
課金
soundは料金に影響しません。料金はdurationとresolutionだけで決まるため、音声の有無にかかわらず料金表の行がそのまま適用されます。- 料金は、選んだ区分での動画の秒数に応じて決まります。下の一覧は 8 秒のクリップの料金なので、8 で割ると 1 秒あたりの単価になります(
stdで約 0.13)。 - 秒数は
durationで、省略すると 5 です。マルチショットのリクエストではショットの長さの合計で、これはdurationと一致します。タスクのusage.billable_duration_secondsに表示されます。 - 料金はタスクの作成時に予約され、動画の完成時に確定します。失敗したタスク(送信後にモデレーションで拒否されたものを含む)は全額返金されます。
よくあるエラー
HTTP エラー早見表
タスクが作られる前のエラーは、2xx 以外のレスポンスで返されます。課金はされません。error.code または error.retryable で処理を分岐してください。message には問題の内容が示されます。全一覧と再試行のルールはエラーにあります。
認証
Send your API key as Authorization: Bearer <BEATAPI_API_KEY>.
ヘッダー
ボディは JSON で送信し、Content-Type: application/json を指定します。Idempotency-Key は任意です。論理的に 1 件のリクエストごとに一意の値(255 文字以内)を送り、まったく同じボディを再試行するときだけ再利用してください。24 時間以内に同じキーと同じボディで再試行すると、最初のレスポンスが Idempotent-Replayed: true 付きで再度返されます。同じキーで異なるボディを送ると 409 idempotency_conflict が返ります。2xx 以外のレスポンスは保存されないため、400 や 402 の後の再試行は改めて実行されます。
リクエスト
実行するモデルです。
値:kling-v3
値が正しくない場合
- 指定がない場合:
"model" is required - 画像モデルをこのエンドポイントに送った場合:
"model" nano-banana-2 is served by POST /v1/images/tasks, not this endpoint
動画の中で起きること(被写体、動き、カメラワーク、スタイル)です。
長さ:1–5000 文字
- 長さは文字数で数えます(CJK 文字も 1 文字として数えます)。
- マルチショットを含め、すべてのモードで必須です。マルチショットでは、各ショットにも
multi_promptの中に専用のプロンプトがあります。
値が正しくない場合
- 指定がない場合:
"prompt" is required - 空、または上限を超える長さの場合:
"prompt" has an unsupported length
動画の形(幅:高さ)です。
指定できる値:16:9, 9:16, 1:1
デフォルト:16:9
- デフォルトは
16:9です。
値が正しくない場合
- 一覧にない値の場合:
"aspect_ratio" must be one of: [16:9 9:16 1:1]
動画の長さです。単位は秒で、整数で指定します。料金はこの値に基づきます。
デフォルト:5
範囲:3–15
- 省略すると
5が使われ、その秒数で課金されます。 multi_shots: trueの場合、multi_prompt内の各ショットのdurationの合計が、この値とちょうど一致する必要があります。durationを省略した場合は、合計が 5 になる必要があります。
値が正しくない場合
- 範囲外、整数ではない、または文字列として送った場合:
"duration" is outside its supported range - マルチショットの長さの合計が
durationと一致しない場合:Kling V3 shot durations must sum to duration
名前を付けた被写体(キャラクター、商品、小道具)を最大 3 つまで、画像を使って一度だけ定義します。
要素数:≤ 3
- 最大 3 個のオブジェクトの配列です。各オブジェクトは次のキーのみ受け付けます。
elements[].name(文字列、必須):エレメントの名前。1 文字以上です。elements[].description(文字列、任意):そのエレメントが何であるか。省略すると、nameが説明として使われます。elements[].element_input_urls(文字列の配列、必須):そのエレメントを写した公開 HTTPS リンクを 1~4 個です。elements[].element_input_audio_urls(文字列の配列、任意):そのエレメントの公開 HTTPS 音声リンクをちょうど 1 個です。elements[].start_timeとelements[].end_time(整数、任意):時間をミリ秒で指定します。それぞれ 0~30000 の整数です。両方を送るか、どちらも送らないかのいずれかにします。end_timeはstart_timeより大きく、end_time - start_timeは 3000~8000(3~8 秒)である必要があります。- リンクの上限は、各エレメントごとに適用されます。すべてのエントリが、それぞれ 4 個のリンクと 1 個の音声リンクを持てます。
値が正しくない場合
- エレメントが 4 個以上の場合:
"elements" accepts at most 3 items - エレメントがオブジェクトではない場合:
"elements[0]" must be an object - エレメントに
nameがない場合:"name" is required in "elements[0]" - エレメントに
element_input_urlsがない場合:"element_input_urls" is required in "elements[0]" nameが空の場合:"elements[0].name" has an unsupported length- リンクが 5 個以上の場合:
"elements[0].element_input_urls" accepts at most 4 items element_input_urlsが空の配列の場合:"elements[0].element_input_urls" requires at least 1 item- リンクが https:// ではない場合:
"elements[0].element_input_urls[1]" must be a public HTTPS URL - 音声リンクが 2 個以上の場合:
"elements[0].element_input_audio_urls" accepts at most 1 items start_timeまたはend_timeが 0~30000 の範囲外、または整数ではない場合:"elements[0].start_time" is outside its supported range- エレメントが受け付けないキーがある場合:
field "color" is not supported in "elements[0]" start_timeとend_timeの片方だけを送った、end_timeがstart_timeより後ではない、または区間が 3 秒より短い、もしくは 8 秒より長い場合:Kling V3 element segment must provide a 3-8 second start_time/end_time range
開始フレーム、または開始フレームと終了フレームです。
要素数:1–2
各要素は公開されている https:// の URL です。ローカルファイルは先に アップロード(POST /v1/files)し、返された data.url を渡してください。
- リンク 1 個の場合は、動画がその画像から始まります。リンク 2 個の場合は、
images[0]が開始フレーム、images[1]が終了フレームです。 - マルチショット(
multi_shots: true)では、画像はちょうど 1 枚です。 - このモデルには参照画像のフィールドがありません。被写体の画像は
elementsに入れます。
値が正しくない場合
- リンクが 3 個以上の場合:
"images" accepts at most 2 items - 空の配列の場合:
"images" requires at least 1 item - https:// のリンクではない場合:
"images[0]" must be a public HTTPS URL multi_shots: trueで画像がない、または 2 枚ある場合:Kling V3 multi-shot mode requires exactly one image
マルチショット動画のショットを順番に並べたものです。1~5 個のオブジェクトで、それぞれに専用のプロンプトと長さがあります。
要素数:1–5
- 各ショットは 2 つの必須フィールドを持つオブジェクトで、それ以外は受け付けません。
multi_prompt[].prompt(文字列、必須):このショットで起きること。1~500 文字です。multi_prompt[].duration(整数、必須):このショットの長さ。整数秒で、1~12 です。- ショットの長さの合計は、リクエストの
duration(durationを省略した場合は 5)と一致する必要があり、その合計は最大 15 です。 multi_shots: trueの場合のみ有効です。
値が正しくない場合
multi_shots: trueなしで送った場合:"multi_prompt" requires multi_shots=true- ショットが 6 個以上の場合:
"multi_prompt" accepts at most 5 items - 空の配列の場合:
"multi_prompt" requires at least 1 item - ショットに
promptがない場合:"prompt" is required in "multi_prompt[0]" - ショットに
durationがない場合:"duration" is required in "multi_prompt[0]" - ショットのプロンプトが空、または 500 文字を超える場合:
"multi_prompt[0].prompt" has an unsupported length - ショットの長さが 1~12 の範囲外、または整数ではない場合:
"multi_prompt[0].duration" is outside its supported range promptとduration以外のキーがある場合:field "name" is not supported in "multi_prompt[0]"- ショットの長さの合計が
durationと一致しない場合:Kling V3 shot durations must sum to duration
ストーリーボードモードをオンにします。動画は multi_prompt に並べたショットで構成されます。デフォルトは false です。
デフォルト:false
imagesにちょうど 1 枚の画像が必要で、multi_promptのショットの長さの合計がdurationと一致する必要があります。multi_shots: trueがない場合、multi_promptは拒否されます。- 確認は次の順で行われます。画像が 1 枚であること、次に
multi_promptがあること、最後に長さです。
値が正しくない場合
- true でも false でもない場合:
"multi_shots" must be a boolean - 画像がない、または 2 枚以上ある場合:
Kling V3 multi-shot mode requires exactly one image multi_promptがない場合:Kling V3 multi-shot mode requires multi_prompt- ショットの長さの合計が
durationと一致しない場合:Kling V3 shot durations must sum to duration
画質の区分です。std は 720p、pro は 1080p でレンダリングされます。pro は 1 秒あたりの料金が高くなります。指定する値は std と pro で、ピクセル数ではありません。
指定できる値:std, pro
デフォルト:pro
- 省略すると
proが使われ、その区分で課金されます。 4K、720p、1080pは受け付けません。stdまたはproを送ってください。
値が正しくない場合
- 一覧にない値の場合(たとえば
720pや4K):"resolution" must be one of: [std pro]
動画に、生成されたサウンドトラックを付けるかどうかです。
- 省略すると、音声は
multi_shotsに従います。マルチショットのリクエストではオン、それ以外ではオフです。自分で決める場合はtrueまたはfalseを送ります。
値が正しくない場合
- true でも false でもない場合:
"sound" must be a boolean
レスポンス
タスクオブジェクトです。タスクが成功するまで output は null です。「実行中」と記載されたフィールドは、タスクの完了後に表示されなくなります。

