跳至說明文件
本頁目錄

Kling 4.0

使用 Kling 4.0,透過文字、首尾影格或多模態參考資料來生成影片。本頁面將完整說明此模型「從請求到產出結果」的完整工作流程。

API 模型 ID: kling-4-0

影片生成採非同步方式處理。建立任務後,請保存回傳的 taskId,並透過查詢狀態或設定 Webhook 來取得結果。

模型功能

功能支援的值
輸出解析度720p · 1080p
輸出長度3–30 s
長寬比auto, 16:9, 9:16, 1:1, 21:9
參考圖片最多 10 張圖片
參考影片最多 5 部影片
參考音訊最多 3 個音訊檔案
參考資料總計最多共 15 個參考檔案
參考影片 (Σ)30 秒
seed不支援

計費與額度

影片生成費用是以秒為單位(計費時長),並扣除相應的額度。若無輸入影片,計費時長即為輸出時長;若有輸入影片,計費時長則會額外包含參考影片的時長。

下表列出的是每秒扣除的額度,而非單次任務的總費用。費率依據所選模型、輸出解析度,以及在「影片生影片(video-to-video)」模式下是否提供參考影片而定。總費用的計算公式與範例請參閱表格下方的說明。

輸出解析度無影片輸入有影片輸入
720p每秒 13 點每秒 8 點
1080p每秒 20 點每秒 13 點
  • 無影片輸入:輸出秒數 × 無影片費率。
  • 有影片輸入時,T 為伺服器實測的參考影片總秒數。僅將最終點數無條件進位。 ceil((duration + max(duration, T)) × rate)
  • 僅使用圖片或音訊參考時,適用「無影片費率」。「有影片費率」僅適用於「參考生成影片」模式且有提供影片參考資料的情況。

計費案例

5 秒 720p 文字生成影片:5 × 13 = 65 額度。

5 秒 720p 輸出(搭配 5 秒參考影片):(5 + 5) × 8 = 80 額度。

提交任務時會先預扣額度,任務成功後完成扣款。失敗或逾時的任務將進入退款流程。若帳務狀態顯示為 refund_failed,代表退款未成功完成,請檢查 API 日誌或聯絡客戶支援。

身分驗證

請至控制台建立 API 金鑰。完整的金鑰內容僅會顯示一次,請妥善保存在您的伺服器端,並在每次發送請求時,將其作為 Bearer 權杖(Token)帶入標頭。

基本 URL

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

在執行這些程式碼範例之前,請先設定 SEEVIO_API_KEY 環境變數。JavaScript 範例將在您的 Node.js 伺服器端執行;Python 範例則使用 requests 套件。

快速上手

提交此最簡請求並保存回傳的 taskId,接著使用下方的任務查詢範例。在「建立任務回應」中顯示的 credits 值為預先扣除(凍結)的額度。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video"
  }
}'

建立任務的回傳範例

接受上述請求後,API 會傳回此 JSON 回應。taskId 為後續查詢狀態時使用的任務識別碼;credits 為此任務預扣的額度。此回應僅確認任務已成功建立,並不代表影片已製作完成。您需要輪詢任務狀態或使用 Webhook 來接收影片結果。

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 65
}

建立任務

POST https://api.seevio.ai/v1/videos/generations

傳送包含 model 和 input 的 JSON 物件,並可選擇性提供 callback_url。請務必指定此頁面所示的 model ID;若未指定,系統預設會選取 seedance-2-0。

請求主體

欄位類型必填說明與限制
model
string是

模型 ID。若要使用 Kling 4.0,請將此欄位設為 kling-4-0。

callback_url
string否

用於接收完成和失敗 POST 回呼的公開 HTTPS 端點。不支援私有網路與 localhost。

範例: https://example.com/webhooks/seevio
input
object是

輸入參數

輸入參數

欄位類型預設值說明與限制
input.generation_typestringtext-to-videotext-to-video | image-to-video | reference-to-video
input.promptstring—最多 8000 個字元。圖生影片可省略提示詞,其他模式必填。參考素材按類型及陣列順序編號,從 @Image1、@Video1、@Audio1 開始。
input.durationinteger53–30 s
input.resolutionstring720p720p | 1080p
input.aspect_ratiostring依生成模式而定
支援的值auto16:99:161:121:9

指定固定比例時,輸出影片使用該比例。省略欄位或選擇 auto 時,文字生成影片使用 16:9,圖片生成影片沿用首幀比例,多素材參考模式則根據參考圖片或影片決定比例。

input.image_urlsstring[][]圖片生成影片時依序傳入首幀及選填的尾幀。參考模式最多可傳入 10 張參考圖。
input.keyframe_urlsstring[][]依播放順序傳入中間關鍵幀,僅限圖片生成影片。無尾幀時最多 9 張,有尾幀時最多 8 張。
input.video_urlsstring[][]僅適用於多素材參考模式。提供參考影片的 HTTPS 網址,供模型參考動作或運鏡。最多 5 段,每段 2 至 30 秒,所有影片合計最多 30 秒。
input.audio_urlsstring[][]僅適用於多素材參考模式。提供參考音訊的 HTTPS 網址,作為產生人聲或音效的參考。最多 3 段,每段 5 至 30 秒。
input.keep_original_soundbooleanfalse僅在 video_urls 含有參考影片時生效。true 保留影片原音,false(預設)由模型產生新音訊。未提供參考影片時會忽略此參數。

建立任務回應

HTTP 200 回傳 taskId (字串) 和 credits (數字)。這僅代表任務已成功建立,並不代表已生成完畢。下方的數值對應 5 秒 720p 的快速上手範例費率。

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 65
}

生成模式與範例

請將範例中的 example.com 媒體 URL 替換為您自己可公開存取的 HTTPS 檔案。範例 URL 僅用於展示請求格式,並非可下載的真實素材。

文字生成影片 (T2V)

從純文字提示詞生成影片。在此模式下不會傳遞媒體 URL。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video"
  }
}'

首影格參考

提供一張圖片作為首影格,並在提示詞中描述動作變化。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first.jpg"
    ]
  }
}'

首尾影格參考

圖片生成影片時依序傳入首幀及選填的尾幀。參考模式最多可傳入 10 張參考圖。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first.jpg",
      "https://example.com/last.jpg"
    ]
  }
}'

用關鍵幀生成影片:玫瑰綻放

用相同角度拍攝的四張照片製作一段 8 秒的玫瑰開花縮時影片。在 image_urls 中依序放入閉合的花苞與盛開的花朵,作為首幀與尾幀。在 keyframe_urls 中先放花瓣剛展開的照片,再放半開的照片。畫面依「花苞 → 初綻 → 半開 → 盛開」的順序過渡。中間幀的順序取決於陣列,出現的時間由模型決定。

請將範例中的 example.com 媒體 URL 替換為您自己可公開存取的 HTTPS 檔案。範例 URL 僅用於展示請求格式,並非可下載的真實素材。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A time-lapse of a rose opening. Keep the camera still and the light soft as the petals unfold.",
    "duration": 8,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/rose-bud.jpg",
      "https://example.com/rose-full-bloom.jpg"
    ],
    "keyframe_urls": [
      "https://example.com/rose-opening.jpg",
      "https://example.com/rose-half-open.jpg"
    ]
  }
}'

多模態參考

結合圖片、影片和音訊參考資料。提示詞仍為必填。輸入參考影片會改變計費公式。

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "Animate @Image1 with the movement of @Video1 and ambience from @Audio1.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "image_urls": [
      "https://example.com/character.jpg"
    ],
    "video_urls": [
      "https://example.com/motion.mp4"
    ],
    "audio_urls": [
      "https://example.com/surf.mp3"
    ],
    "keep_original_sound": false
  }
}'

查詢任務

GET https://api.seevio.ai/v1/tasks/{taskId}

請將範例中的 ID 替換為建立任務時回傳的 taskId。查詢功能僅能存取該 API 金鑰擁有者建立的任務;存取無權限或不存在的 ID 會回傳 HTTP 404。

建議每 10–20 秒輪詢一次,若收到 HTTP 429 則請放慢頻率(Backoff),並在狀態轉為 completed 或 failed 時停止。生產環境建議優先採用 Webhook。下方的每個程式碼範例僅執行單次查詢。

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
狀態說明與限制
queued已接收並等待提交處理。
generating影片正在生成中。
completed生成成功。請在過期前下載 data.results 中的影片。
failed生成失敗。請檢查 failed_reason 和 billing_status。
欄位類型說明與限制
idstring
任務識別碼。即建立任務回應中的 taskId。
created_atnumber
任務建立時間(Unix 時間戳記,秒)。
modelstring
執行此任務所使用的公開模型 ID。
billing_statusstring
帳務狀態:reserved(已預扣)、charged(已扣款)、refunded(已退款)或 refund_failed(退款失敗)。
creditsnumber
為此任務預扣的額度。即使退款後此欄位仍會保留原數值;請檢查 billing_status 以確認最終扣款結果。
failed_reasonstring | null
任務失敗時的原因說明;成功時為 null。失敗的查詢回應中會省略 data 欄位。
dataobject
僅在未失敗的任務查詢中出現。包含輸出成果與處理細節。
data.resultsstring[]
影片 URL 陣列。在生成完成前或影片過期後將為空陣列。
data.video_expires_atstring | null
影片過期時間(ISO 8601 時間戳記);在影片可用前為 null。請在此時間前下載保存結果。
data.last_frame_urlstring | null
若有請求且可用,則為最後影格的 URL;否則為 null。
data.processing_timenumber | null
若有提供,則為任務處理時間(秒),否則為 null。

已完成任務:包含影片結果的查詢回應

當查詢狀態顯示 status=completed 時,代表影片已生成完畢。請從 data.results 取得影片網址,並於 data.video_expires_at 之前下載。billing_status=charged 表示已正式扣除預扣的額度。

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "kling-4-0",
  "is_draft": false,
  "draft_task_id": null,
  "status": "completed",
  "billing_status": "charged",
  "credits": 65,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

失敗任務:包含失敗原因與計費詳情的查詢回應

當查詢狀態顯示 status=failed 時,代表生成失敗。請參閱 failed_reason 瞭解失敗原因,並查看 billing_status 確認退款結果。在此範例中,refunded 表示額度已退還。credits 仍會顯示原先預扣的額度,且回應中不會包含 data 資料。

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "kling-4-0",
  "is_draft": false,
  "draft_task_id": null,
  "status": "failed",
  "billing_status": "refunded",
  "credits": 65,
  "failed_reason": "provider_failed"
}

Webhook

在建立任務的請求中設定 callback_url,即可在任務完成或失敗時接收 JSON POST 請求。您的伺服器必須在 15 秒內回傳 2xx 回應。發送失敗的回呼會進行重試;請根據任務 ID 進行等冪(Idempotent)處理,以防重複發送。

您的回呼端點必須接受含有 JSON 請求主體的 POST 請求 (Content-Type: application/json)。

建立包含回呼設定的任務

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video"
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

任務完成:成功回呼的承載資料

產生成功時,回呼將包含 status=completed。請使用 id 識別任務,並透過 data.results 取得影片 URL。請務必在 data.video_expires_at 之前下載並儲存結果。

created_at 為回呼事件建立時間,task_created_at 為任務建立時間,均為 Unix 秒級時間戳記。範例展示建議使用的欄位,實際回應可能包含額外欄位。

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652848,
  "model": "kling-4-0",
  "status": "completed",
  "task_created_at": 1788652800,
  "billing_status": "charged",
  "credits": 65,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

任務失敗:失敗回呼的承載資料

產生失敗時,回呼將包含 status=failed。請使用 id 識別任務,並透過 failed_reason 查看失敗原因,以及透過 credits_refunded 確認退回的點數。

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652848,
  "model": "kling-4-0",
  "status": "failed",
  "task_created_at": 1788652800,
  "billing_status": "refunded",
  "credits": 65,
  "failed_reason": "provider_failed",
  "credits_refunded": 65
}

接收端範例

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrls = callbackData.data.results;
    // Save the video URLs and mark this task as completed in your application.
    console.log(callbackData.id, videoUrls);
  }

  if (callbackData.status === "failed") {
    const { failed_reason, credits_refunded } = callbackData;
    // Record the failure reason and refunded credits for this task.
    console.error(callbackData.id, failed_reason, credits_refunded);
  }

  return new Response(null, { status: 200 });
}

此 Next.js 範例可讀取 JSON 回呼主體,並直接處理已完成與失敗的任務。請為您的應用程式加入持續性與任務 ID 去重功能;並在確認回呼前,將耗時較長的工作排入佇列。

媒體檔案限制與規範

  • 所有媒體與回呼 URL 都必須是公開的 HTTPS 網址。請勿使用 localhost、本機私有 IP 或需要 Cookie/登入才能存取的檔案。參考影片/音訊 URL 必須可以直接讀取媒體串流。
  • 每部影片大小不得超過 100 MB。
  • 每個音訊檔案大小不得超過 15 MB。
  • 最多共 15 個參考檔案