Seedance 2.5
使用 Seedance 2.5,透過文字、首尾影格或多模態參考資料來生成影片。本頁面將完整說明此模型「從請求到產出結果」的完整工作流程。
API 模型 ID: seedance-2-5
影片生成採非同步方式處理。建立任務後,請保存回傳的 taskId,並透過查詢狀態或設定 Webhook 來取得結果。
模型功能
| 功能 | 支援的值 |
|---|---|
| 輸出解析度 | 480p · 720p · 1080p |
| 輸出長度 | 4–30 秒 |
| 長寬比 | 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive |
| 參考圖片 | 最多 30 張圖片 |
| 參考影片 | 最多 10 部影片 |
| 參考音訊 | 最多 10 個音訊檔案 |
| 參考資料總計 | 最多共 50 個參考檔案 |
| 每組影片/音訊總長度 | 30 秒 |
| seed | 不支援 |
計費與額度
影片生成費用是以秒為單位(計費時長),並扣除相應的額度。若無輸入影片,計費時長即為輸出時長;若有輸入影片,計費時長則會額外包含參考影片的時長。
下表列出的是每秒扣除的額度,而非單次任務的總費用。費率依據所選模型、輸出解析度,以及在「影片生影片(video-to-video)」模式下是否提供參考影片而定。總費用的計算公式與範例請參閱表格下方的說明。
| 輸出解析度 | 無影片輸入 | 有影片輸入 |
|---|---|---|
480p | 每秒 10 點 | 每秒 6 點 |
720p | 每秒 20 點 | 每秒 12 點 |
1080p | 每秒 30 點 | 每秒 20 點 |
- 無影片輸入:輸出秒數 × 無影片費率。
- 有影片輸入:(輸出秒數 + 系統偵測之參考影片秒數) × 有影片費率。伺服器會偵測參考影片的總長度,並在計費前無條件進位至整數秒。
- 僅使用圖片或音訊參考時,適用「無影片費率」。「有影片費率」僅適用於「參考生成影片」模式且有提供影片參考資料的情況。
計費案例
5 秒 720p 文字生成影片:5 × 20 = 100 額度。
5 秒 720p 輸出(搭配 5 秒參考影片):(5 + 5) × 12 = 120 額度。
提交任務時會先預扣額度,任務成功後完成扣款。失敗或逾時的任務將進入退款流程。若帳務狀態顯示為 refund_failed,代表退款未成功完成,請檢查 API 日誌或聯絡客戶支援。
當 duration=-1 時的額度扣除規則
當長度設定為 -1 時,最終輸出的影片長度將不固定,由模型自動決定。
在多數情況下,請依實際需求設定影片長度,而非設為 -1。我們建議僅在進行影片編輯時才使用 -1,其他影片生成場景則不建議使用。
| 參考輸入來源 | 扣費計算方式 | 範例 |
|---|---|---|
| 含有參考影片 | 將所有參考影片的時間相加,並無條件進位至整數秒(記為 T)。扣費計算公式為 (T + T) × 「含影片費率」:其中一個 T 為預估輸出長度,另一個 T 則為輸入影片長度。 | 以 720p 且包含 5 秒參考影片為例:(5 + 5) × 12 = 120 額度。 |
| 不含參考影片(僅有圖片或音訊) | 以 30 秒作為預估輸出長度。扣費計算公式為 30 × 「無影片費率」。 | 以 720p 且不含參考影片為例:30 × 20 = 600 額度。 |
身分驗證
請至控制台建立 API 金鑰。完整的金鑰內容僅會顯示一次,請妥善保存在您的伺服器端,並在每次發送請求時,將其作為 Bearer 權杖(Token)帶入標頭。
基本 URL
https://api.seevio.aiAuthorization: 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": "seedance-2-5",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
}
}'建立任務的回傳範例
接受上述請求後,API 會傳回此 JSON 回應。taskId 為後續查詢狀態時使用的任務識別碼;credits 為此任務預扣的額度。此回應僅確認任務已成功建立,並不代表影片已製作完成。您需要輪詢任務狀態或使用 Webhook 來接收影片結果。
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 100
}建立任務
POST https://api.seevio.ai/v1/videos/generations傳送一個包含 model 和 input 的 JSON 物件,並可選擇性提供 callback_url。請務必指定本頁面所示的模型 ID;若省略 model 欄位,預設會選擇 seedance-2-0。
請求主體
| 欄位 | 類型 | 必填 | 說明與限制 |
|---|---|---|---|
model | string | 是 | 模型 ID。若要使用 Seedance 2.5,請將此欄位設為 seedance-2-5。 |
callback_url | string | 否 | 用於接收完成和失敗 POST 回呼的公開 HTTPS 端點。不支援私有網路與 localhost。 範例: https://example.com/webhooks/seevio |
input | object | 是 | 生成設定。必須包含非空字串的 prompt 提示詞。 |
輸入參數
請以 URL 字串陣列 (string[]) 的格式提供 image_urls、video_urls 及 audio_urls。所有提供的 URL 都必須能透過 HTTPS 公開存取,包含所選模式忽略的媒體。
| 欄位 | 類型 | 必填 | 預設值 | 說明與限制 |
|---|---|---|---|---|
input.prompt | string | 是 | — | 所有模式均須提供 prompt,包括僅使用音訊等媒體作為參考的情境。去除首尾空白前最多 10,000 個字元,且不能全部為空白字元。 範例: A cat surfing at sunset |
input.generation_type | string | 否 | text-to-video | text-to-video 僅使用提示詞;image-to-video 使用 1–2 張圖片;reference-to-video 則可使用圖片、影片及/或音訊參考資料。 支援的值 text-to-video | image-to-video | reference-to-video |
input.image_urls | string[] | 條件式必填 | [] | image-to-video:1 張圖片作為首影格,或 2 張排序圖片作為首尾影格。reference-to-video:最多 30 張圖片。在 text-to-video 模式中會被忽略。 範例: ["https://example.com/first-frame.jpg"] |
input.video_urls | string[] | 條件式必填 | [] | 僅在 reference-to-video 中傳遞;最多 10 個影片,總長度不超過 30 秒。在其他模式中會被忽略。 範例: ["https://example.com/source.mp4"] |
input.audio_urls | string[] | 條件式必填 | [] | 僅在 reference-to-video 中傳遞;最多 10 個音訊檔案,總長度不超過 30 秒。在其他模式中會被忽略。 範例: ["https://example.com/music.mp3"] |
input.duration | integer | 否 | 5 | 輸出長度(整數),範圍為 4 至 30 秒。 僅在 reference-to-video 模式中可接受設定為 -1。適用於搭配來源影片進行編輯的流程;計費方式請參閱上述特殊規則。 支援的值 -1 | 4–30範例: 5 |
input.aspect_ratio | string | 否 | adaptive | 輸出長寬比。設定為 adaptive 可讓模型自動判斷合適比例。 image-to-video 僅支援 adaptive;請忽略此欄位或將其設為 adaptive。 支援的值 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive範例: adaptive |
input.resolution | string | 否 | 720p | 請使用此處列出的其中一種支援輸出解析度。 支援的值 480p | 720p | 1080p範例: 720p |
input.generate_audio | boolean | 否 | true | 請求同步生成音訊。 支援的值 true | false範例: true |
input.watermark | boolean | 否 | false | 請求在生成的影片中加上 AI 浮水印。 支援的值 true | false範例: false |
input.web_search | boolean | 否 | false | 在模型支援的情況下,允許進行網路搜尋。 支援的值 true | false範例: false |
input.return_last_frame | boolean | 否 | false | 請求擷取最後一個影格。當影格生成完畢後,查詢結果中的 data.last_frame_url 會包含該網址;否則為 null。 支援的值 true | false範例: true |
布林值欄位必須是 JSON 的 true 或 false,不能是字串或數字。
建立任務回應
HTTP 200 回傳 taskId (字串) 和 credits (數字)。這僅代表任務已成功建立,並不代表已生成完畢。下方的數值對應 5 秒 720p 的快速上手範例費率。
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 100
}生成模式與範例
文字生成影片 (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": "seedance-2-5",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
}
}'首影格參考
提供一張圖片作為首影格,並在提示詞中描述動作變化。
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-5",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "image-to-video",
"image_urls": [
"https://example.com/first-frame.jpg"
],
"aspect_ratio": "adaptive"
}
}'首尾影格參考
依序提供兩張圖片 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": "seedance-2-5",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "image-to-video",
"image_urls": [
"https://example.com/first-frame.jpg",
"https://example.com/last-frame.jpg"
],
"aspect_ratio": "adaptive",
"return_last_frame": true
}
}'多模態參考
結合圖片、影片和音訊參考資料。提示詞仍為必填。輸入參考影片會改變計費公式。
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-5",
"input": {
"prompt": "Follow the reference camera movement and keep the character consistent. Use the audio for ambience.",
"duration": 5,
"resolution": "720p",
"generation_type": "reference-to-video",
"image_urls": [
"https://example.com/character.jpg"
],
"video_urls": [
"https://example.com/camera.mp4"
],
"audio_urls": [
"https://example.com/ambience.mp3"
],
"aspect_ratio": "adaptive"
}
}'音訊參考
僅使用音訊作為參考資料,並搭配必填的文字提示詞來描述想要的影片畫面。
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-5",
"input": {
"prompt": "Create a coastal sunrise scene matching the rhythm of this audio.",
"duration": 5,
"resolution": "720p",
"generation_type": "reference-to-video",
"audio_urls": [
"https://example.com/music.mp3"
]
}
}'影片編輯
描述您想編輯的內容並提供來源影片。將 duration 設為 -1 並使用 adaptive 長寬比。此流程請使用至少 4 秒的來源短片。duration=-1 的計費規則請參閱上方說明。
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-5",
"input": {
"prompt": "Edit the source video: change the character’s coat to blue and preserve the camera movement.",
"duration": -1,
"resolution": "720p",
"generation_type": "reference-to-video",
"video_urls": [
"https://example.com/source.mp4"
],
"aspect_ratio": "adaptive"
}
}'影片延伸
描述如何延伸續接來源影片。請使用 adaptive 長寬比,並在模型支援的範圍內設定一般的輸出長度。
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedance-2-5",
"input": {
"prompt": "Continue the camera movement from the source video, revealing a forest clearing.",
"duration": 8,
"resolution": "720p",
"generation_type": "reference-to-video",
"video_urls": [
"https://example.com/source.mp4"
],
"aspect_ratio": "adaptive"
}
}'查詢任務
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。 |
| 欄位 | 類型 | 說明與限制 |
|---|---|---|
id | string | 任務識別碼。即建立任務回應中的 taskId。 |
created_at | number | 任務建立時間(Unix 時間戳記,秒)。 |
model | string | 執行此任務所使用的公開模型 ID。 |
billing_status | string | 帳務狀態:reserved(已預扣)、charged(已扣款)、refunded(已退款)或 refund_failed(退款失敗)。 |
credits | number | 為此任務預扣的額度。即使退款後此欄位仍會保留原數值;請檢查 billing_status 以確認最終扣款結果。 |
failed_reason | string | null | 任務失敗時的原因說明;成功時為 null。失敗的查詢回應中會省略 data 欄位。 |
data | object | 僅在未失敗的任務查詢中出現。包含輸出成果與處理細節。 |
data.results | string[] | 影片 URL 陣列。在生成完成前或影片過期後將為空陣列。 |
data.video_expires_at | string | null | 影片過期時間(ISO 8601 時間戳記);在影片可用前為 null。請在此時間前下載保存結果。 |
data.last_frame_url | string | null | 若有請求且可用,則為最後影格的 URL;否則為 null。 |
data.processing_time | number | null | 服務商處理時長(秒,若可用);否則為 null。 |
已完成任務:包含影片結果的查詢回應
當查詢狀態顯示 status=completed 時,代表影片已生成完畢。請從 data.results 取得影片網址,並於 data.video_expires_at 之前下載。billing_status=charged 表示已正式扣除預扣的額度。
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-5",
"status": "completed",
"billing_status": "charged",
"credits": 100,
"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": "seedance-2-5",
"status": "failed",
"billing_status": "refunded",
"credits": 100,
"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": "seedance-2-5",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "text-to-video",
"aspect_ratio": "16:9",
"generate_audio": true
},
"callback_url": "https://example.com/webhooks/seevio"
}'Webhook 傳送的資料內容與任務查詢回應有所不同:它會省略 billing_status 和 credits;失敗詳情會放在 data.failed_reason 和 data.credits_refunded 中。Webhook 中的 created_at 為該事件建立時的 Unix 時間戳記(秒)。
任務完成:成功回呼的承載資料
產生成功時,回呼將包含 status=completed。請使用 id 識別任務,並透過 data.results 取得影片 URL。請務必在 data.video_expires_at 之前下載並儲存結果。
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-5",
"status": "completed",
"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 識別任務,並透過 data.failed_reason 查看失敗原因,以及透過 data.credits_refunded 確認退回的點數。
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-5",
"status": "failed",
"data": {
"failed_reason": "provider_failed",
"credits_refunded": 100
}
}接收端範例
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.data;
// 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 必須可以直接讀取媒體串流。
- 在 reference-to-video 模式中,必須提供至少一個參考資料,且總計不得超過 30 張圖片、10 個影片、10 個音訊檔案,以及 50 個素材。影片總長度與音訊總長度各別不得超過 30 秒。
- text-to-video 會忽略所有媒體參考資料。image-to-video 僅會傳遞首/尾影格圖片,並忽略影片和音訊參考資料。若要結合多種媒體,請使用 reference-to-video 模式。
- 每個參考影片和音訊檔案長度必須介於 2–30 秒之間。若是影片編輯範例,請使用至少 4 秒的來源短片。
圖片規格要求
- 每張圖片大小不得超過 30 MB。
- 支援格式:jpeg、png、webp、bmp、tiff、gif。
- 寬高比(寬度 ÷ 高度):須介於 0.4 至 2.5 之間(含)。
- 寬度與高度皆須介於 300 至 6,000 像素之間(含)。
影片規格要求
- 支援格式:mp4、mov。
- 每部影片大小不得超過 100 MB。
- 影格率:須介於 24 至 60 FPS 之間(含)。
- 寬高比(寬度 ÷ 高度):須介於 0.4 至 2.5 之間(含)。
- 總像素(寬度 × 高度):須介於 407,696 至 8,295,044 之間(含)。例如:614 × 664 = 407,696 以及 3,326 × 2,494 = 8,295,044。此處僅為總像素計算範例,並非固定的寬高尺寸要求。
音訊規格要求
- 支援格式:wav、mp3。
- 每個音訊檔案大小不得超過 15 MB。
錯誤處理
HTTP 錯誤會包含一個 error 物件,內有 code(錯誤碼)和 message(錯誤訊息)。即使任務成功建立,後續仍可能生成失敗;請持續查詢任務狀態或處理失敗回呼。
{
"error": {
"code": "invalid_request",
"message": "input.prompt is required."
}
}| HTTP | 欄位 | 建議處理方法 |
|---|---|---|
| 400 | invalid_request | 請在重試前修正 JSON 格式、缺少的提示詞、無效的參數範圍或媒體 URL。 |
| 401 | invalid_api_key | 請檢查 Bearer 權杖(Token)以及 API 金鑰是否處於啟用狀態。 |
| 402 | insufficient_credits | 請儲值額度或降低任務成本。回應中可能會顯示所需的額度與目前可用額度。 |
| 403 | forbidden | 請檢查錯誤訊息中說明的帳戶權限限制。 |
| 404 | not_found | 請檢查任務 ID 是否正確,以及該金鑰是否屬於建立該任務的使用者。 |
| 429 | rate_limited | 請在 Retry-After 指定的間隔時間過後再重試。 |
| 500 | internal_error | 請檢查錯誤訊息和 API 日誌。請謹慎重試;重複送出建立請求可能會產生新的計費任務。 |
速率限制
建立任務:預設情況下,每個 API 金鑰每分鐘最多允許 100 次請求。目前不提供自訂速率限制。
查詢任務:預設情況下,每個 API 金鑰每分鐘最多允許 120 次請求。查詢請求與任務建立請求為分開計算。