3行でいうと

  • 接続先は https://api-singapore.klingai.com、認証は Authorization: Bearer <APIキー> です(作り方は05)。
  • 作成は POST、結果は GET /tasks(IDで)か POST /tasks(期間とカーソルで)で問い合わせます。完了の通知を受けたいときは、options.callback_url を付けます。
  • 4.0のOmniは、画像・動画・エレメント・声を、すべて contents の配列に入れ、type で役割を決めます。素材は id をつけ、文章で @id と呼びます。
  • コールバックには、署名の検証が選べます(2026年8月7日の更新)。検証には、APIキーとは別の「Webhook Secret」を使います。
  • 結果のURLは30日で消える、と公式が書いています。同時実行の上限を超えると、コード1303が返ります。

この記事は、公式の資料を2026年10月25日に読んでまとめたものです。この記事は、実際に使って確かめた記録ではありません。運営者はKlingを入れていますが、使い心地はこの記事には書いていません。手順は「公式の手順を順に並べたもの」です。コマンドは、公式の例を要約の形で読んだものから拾ったか、この記事で組んだ例(動作は確かめていません)です。署名を検証するコードは、公式のページの原文を見て組んでください。

先に結論

前提:用語をそろえる

手順1:呼ぶ側の準備

  1. 05の手順で、APIキーを作る。
  2. 接続先は https://api-singapore.klingai.com。
  3. すべてのリクエストに、Content-Type: application/json と Authorization: Bearer <キー> を付ける。
  4. キーは、環境変数などに入れて、コードやチャットに書き込まない(公式が、漏れると他人が利用枠を使えてしまう、と書く点)。
  5. APIの有料サービス規約は、キーを第三者に譲渡・貸与・開示・漏えいしてはならない、許可のない使用や安全上の問題に気づいたらすぐに通知する、と書いています(キーの下の活動の責任の扱いは、原文で確認してください)。

手順2:主なエンドポイント(公式のAPI資料)

目的 メソッドとパス 公式のページ
4.0 文章から動画 POST /text-to-video/kling-4.0 Kling 4.0 - Text to Video
4.0 画像から動画 POST /image-to-video/kling-4.0 Kling 4.0 - Image to Video
4.0 Omni POST /omni-video/kling-4.0 Kling 4.0 - Omni Video Generation
3.0 モーションコントロール POST /motion-control/kling-3.0 Motion Control 3.0
画像(3.0 Omniのページ) POST /v1/images/generations Kling Image 3.0 & 3.0 Omni - Image Generation
エレメントの作成 POST /v1/general/advanced-custom-elements Kling 4.0 - Element Management
声の作成 POST /v1/general/custom-voices Kling 4.0 - Voice Management
タスクを引く(ID) GET /tasks?task_ids=... または external_task_ids=... 各モデルのページ
タスクを引く(期間・カーソル) POST /tasks 同上
残量 GET /account/costs Account Usage

手順3:作成から結果の受け取りまで

3-1:作成する(4.0 の画像から動画)

公式の例は、contents に文章と画像を入れる形です。次は、公式の例の項目に合わせた、この記事で組んだ例です(動作は確かめていません)。

curl --location 'https://api-singapore.klingai.com/image-to-video/kling-4.0' \
  --header 'Content-Type: application/json' \
  --header "Authorization: Bearer ${KLING_API_KEY}" \
  --data '{
    "contents": [
      {"type": "prompt", "text": "A cat walks across a windowsill at dusk."},
      {"type": "first_frame", "url": "https://example.com/cat.png"}
    ],
    "settings": {"resolution": "720p", "duration": 5},
    "options": {"external_task_id": "my-task-0001"}
  }'

3-2:Omniに素材を渡す

欲しい役割 contents[].type
画像(最初・途中・最後・参考) first_frame、middle_frame、last_frame、refer_image
動画(参考/編集の対象) feature_video、base_video
エレメント element(element_id を使う)
声 voice(voice_id を使う)
文章 prompt(text)

3-3:結果を引く

curl --location 'https://api-singapore.klingai.com/tasks?task_ids=<タスクID>' \
  --header 'Content-Type: application/json' \
  --header "Authorization: Bearer ${KLING_API_KEY}"

手順4:コールバックを受ける

4-1:URLを付けて、形を知る

  1. 作成のとき、options.callback_url に、受け取るURLを書く(画像、動画、バーチャル試着の非同期のタスクが対象、と公式が書く)。
  2. タスクの状態が変わると、そのURLに通知が来る。

通知の形が2種類あります。

形 対象 主な項目
新しい形式 モデルのバージョンがURLの中にあるAPI id、status(submitted、processing、succeeded、failed)、message、create_time、update_time、external_id、outputs、billing
旧形式 Kling 3.0 Omni以前 task_id、task_status(succeed と書く点に注意)、task_status_msg、created_at、updated_at、task_result など

4-2:送り主を確かめる(署名の検証)

公式のコールバック資料が書いている内容です。署名を有効にした場合、通知に3つのヘッダーが付きます。

ヘッダー 内容
webhook-id 通知の固有ID
webhook-timestamp 送った時刻(秒のUnix時刻)。受け取る側の時刻と5分以上ずれるものは断る
webhook-signature v1,<base64> の形。秘密の入れ替えの間は、空白で区切られた複数の署名が入ることがある

4-3:テスト送信

手順5:同時実行と再送

手順6:使った量を確かめる

  1. 残量の一覧。 GET /account/costs(05)。呼ぶのは無料、毎秒1回まで。
  2. 明細。 公式の更新履歴は、2026年7月6日に、リソースパッケージと残高の引き落とし明細をAPIで書き出せるようにした、と書いています。公式のAPI資料に、「Balance Deduction Detail」「Unit Deduction Detail」のページがあります(本文は読んでいません)。
  3. コンソール。 呼び出し量、パッケージの消費、単位ごとと残高ごとの明細(05)。
  4. タスクごとの billing。 問い合わせの返事に、charge_type(cash か unit)、amount、currency、list_price などが入ります。

手順7:ほかのエンドポイントの要点

渡るデータ

流れ 渡るもの 公式の記載
あなた → Kling API プロンプト、設定、画像・動画(URLかBase64)、エレメントや声の素材 各APIページ
Kling → あなたのコールバックURL タスクのID、状態、結果のURL、課金の情報 コールバック資料
保存場所 シンガポールのサーバー。ほかの国のチームが見られることがある APIサービスのプライバシーポリシー
ログ プロンプトと応答を30日記録する、と書く(目的の書き方は原文で確認してください) APIの有料サービス規約
学習 Kling AIは、利用者のプロンプトや出力をモデルの学習に使わない、と書く APIの有料サービス規約

外し方

対象 読んだ範囲での記載
APIキー コンソールでの削除や無効化の手順は、読んだページに記載が見つかりませんでした
コールバック リクエストに callback_url を付けなければ、通知は来ません(この記事の読み。公式の明記ではありません)。署名は、Webhook Secret をすべて削除すると無効になる、と読める記載があります(コールバック資料)
エレメント、声 削除のAPIがあります(上の手順7)
利用の停止 APIの有料サービス規約は、Kling AIが30日前の通知でサービスを変更・終了できる、料金は原則返金されない、停止・終了のときの未使用の残高は返金されない、と書いています
退会 04を参照

この記事の案(公式の手順ではありません)

以下は、公式の記載に合わせて、この記事で考えた案です。動作は確かめていません。

  1. キーを用途ごとに分ける。 公式は、キーに名前をつけて複数作れる、と書いています。ただし、同時実行の枠は、同じアカウントのキーで共有されます。用途ごとに名前を分けておくと、どれを入れ替えるか、見分けやすくなります。
  2. AIには、キーそのものでなく、実行できる範囲を渡す。 AIエージェントにキーを渡すと、キーの下の活動の責任は利用者にある、という規約の扱いになります。環境変数に入れ、チャットにキーを貼らない形にする、という考え方があり得ます。
  3. 作成と回収を分ける。 AIが依頼を作り、external_task_id をつけ、callback_url で結果を別のプログラムに集め、30日の期限の前に保存する。AIには、結果のURLだけを返す。
  4. 1つずつ、費用を見ながら。 最初は、最短の長さと低い解像度で1本出し、billing と /account/costs で減り方を見てから、まとめて頼む。

うまくいかないとき

症状 確認すること
401(1001、1002) Authorization の値。Bearer とキーの間の空白。キーの写し間違い(05)
429(1102) パッケージを使い切った、または期限切れ。/account/costs の status
429(1303) 同時実行の上限。待ってから再送、順番待ちの列を作る
400(1201) message を読み、パラメータを直す。新旧の形式、モデル名、contents の type
400(1301) コンテンツのセキュリティポリシー。入力を見直す
結果が空 まだ submitted か processing かもしれない。status を見る
結果のURLが開かない 30日で消える。保存し忘れていないか
コールバックが来ない callback_url が付いているか。テスト送信で、200を返せているか
署名が合わない 本文を整形し直していないか(生のまま使う)。webhook-timestamp が5分以内か。秘密がAPIキーではなくWebhook Secretか。whsec_ を外してBase64で戻したか

気をつけること

出典