ByteDance: Seedance 2.5
Seedance 2.5 可根據文字及圖片、影片或音訊參考建立影片,文件提供編輯和延長工作流程。其確切的 2.5 範例將產品圖片與多份動作參考組合,並啟用生成聲音,製作協調一致的廣告序列。
關於模型
此說明介紹模型的能力。Ailoot 可用的輸入、輸出與選項,依所選方法列於下方。
Seedance 2.5 可使用文字場景和多模態參考建立影片。確切選擇器 doubao-seedance-2-5-260628 有其專屬的文件操作說明與範例。該操作說明描述影片生成、影片編輯和影片延長,輸入媒體包括圖片、影片、音訊和文字。請以參考素材傳達主體外觀、動作、攝影機運動、風格和聲音,再說明要根據這些素材建立的結果。
輸入組合包括單獨文字、圖片或影片搭配選用文字、圖片搭配音訊、影片搭配音訊,以及圖片、影片和音訊一起使用。列出的組合將音訊附隨於視覺媒體,而非描述僅使用音訊的請求。請依角色安排每個項目:圖片確立主體或視覺風格,影片示範動作或既有場景,音訊提供聲音參考。請說明參考素材在所要求鏡頭中應發揮的作用,避免將背景參考誤認為主要角色。
確切的 2.5 範例是一段產品廣告序列。它提供一張圖片和多份影片參考,再描述開場焦點、整齊的產品排列、細節鏡頭、慢動作事件和結尾品牌構圖。請求指定 reference_image 和 reference_video 角色,並分別以各份參考素材引導構圖、動作、攝影機運動和衝擊感。這為活動概念提供了實用結構:規劃可見的段落節點、指出每個節點的參考素材,並指定最後的排列。
文字序列可區分發生什麼事,以及如何拍攝。先描述產品動作,再交代景別、攝影機路徑、節奏和轉入下一視角的方式。若一份參考素材定義產品,另一份示範攝影機運動,請說明兩者各自的責任。場景中若有多個物件,請說明位置和互動順序。請檢查生成結果中的實際產品形狀、排列與動作,而非假設每個參考細節都會原樣出現。
編輯時請指出既有影片,以及要修改的元素,例如環境、動作或視覺風格,同時說明要保留的連續性。延長影片時,請描述場景應如何從所提供的片段接續。除了新片段,也要檢查接合處:主體外觀、運動方向、攝影機位置和聲音時間安排,都會影響結果看起來是否為同一場景。請將原始影片與完成的修改版保存在一起,以便依預期的連續性檢查變更。
文件中的 2.5 多模態範例設定 generate_audio=true,並要求十五秒、16:9 構圖的序列。這些值描述的是該範例,而非通用片長上限或參考素材限制。請為所要求的場景提供清楚的聲音意圖,包括音樂、音效與可見動作的關係,再評估實際的視聽輸出。應一併檢查聲音參考與生成配樂,確認預期節奏和表演。
請從此確切設定檔提供的設定中選擇片長、構圖和解析度。將請求設定與提示詞一併保留,並與實際回傳任務欄位比較。準備完成影片以用於目標用途時,請使用回傳的片長、解析度和比例。請在修改紀錄中保留確切設定檔識別碼,讓後續比較使用相同的所選版本。
影片詞元用量的計算方式為(輸入影片片長 + 輸出影片片長)× 輸出寬度 × 輸出高度 × 輸出影格速率 / 1024。有輸入影片和沒有輸入影片的請求屬於不同計費類別。任務查詢會回報 usage.completion_tokens 和 usage.total_tokens;請將這些回報數量與完成影片一併保留。
生成採非同步方式。提交會回傳識別碼,設定的任務流程會先提供狀態,成功後再提供 content.video_url。請將完成影片、來源媒體和序列簡報一併儲存。檢查整段結果中所有規劃的節點、物件互動、角色外觀、構圖和聲畫對齊。修改時,請指出具體未達成的細節,並保留場景中成功的部分,而非以無關指示取代整份簡報。
Ailoot Ultra · 影片 POST /v1/videos doubao-seedance-2-5-260628
doubao-seedance-2-5-260628入門
Seedance 2.5 可根據文字及圖片、影片或音訊參考建立影片,文件提供編輯和延長工作流程。其確切的 2.5 範例將產品圖片與多份動作參考組合,並啟用生成聲音,製作協調一致的廣告序列。
- 接受的輸入
- 文字 · 圖片 · 影片 · 音訊
- 結果
- 影片
Ailoot 可用 · 輸入與方法
Ailoot Ultra · 影片 POST /v1/videos
- 輸入
text,image,video,audio- 輸出
video
| 欄位 | 類型 | 要求 | 值與限制 | 預設值 |
|---|---|---|---|---|
欄位model | 類型string | 要求必填 | 值與限制 doubao-seedance-2-5-260628 | 預設值— |
欄位content | 類型array | 要求必填 | 值與限制 條件: 原生文字/媒體物件;外層陣列不得為空。此 Ailoot 通用建構器不會驗證巢狀節點的型別。 | 預設值— |
欄位generate_audio | 類型boolean | 要求選填 | 值與限制 條件: 2.5 的範例設為 true,但複製的選擇器說明僅列出 2.0/fast/1.5;不保證更廣的設定範圍或預設值。 | 預設值— |
欄位duration | 類型integer | 要求選填 | 值與限制 條件: 2.5 範例中的字面值 15 並非上限或預設值。 | 預設值— |
欄位resolution | 類型string | 要求選填 | 值與限制 條件: 不會根據複製的說明推定 2.5 專屬的預設值/列舉值。 | 預設值— |
欄位ratio | 類型string | 要求選填 | 值與限制 條件: 自適應模式明確僅適用於 2.0/fast/1.5;2.5 的範例僅使用 16:9。 | 預設值— |
欄位watermark | 類型boolean | 要求選填 | 值與限制 | 預設值false |
欄位seed | 類型integer | 要求選填 | 值與限制 最小值: -1 最大值: 4,294,967,295 | 預設值-1 |
欄位execution_expires_after | 類型integer | 要求選填 | 值與限制 最小值: 3,600 最大值: 259,200 單位: 秒 | 預設值172,800 |
欄位service_tier | 類型string | 要求選填 | 值與限制 條件: 2.0/fast 不支援離線 flex;2.5 的適用範圍尚未確立。 | 預設值— |
欄位safety_identifier | 類型string | 要求選填 | 值與限制 | 預設值— |
輸入素材組合
方法參數與生命週期
| 參數 | 規格 |
|---|---|
參數content_type | 規格application/json |
參數required | 規格content, model |
參數optional | 規格generate_audio, duration, resolution, ratio, watermark, seed, execution_expires_after, service_tier, safety_identifier |
參數material_types | 規格text, image, video, audio |
參數additional_properties | 規格true |
參數validation_scope | 規格Ailoot 會檢查必要欄位的型別,以及非空的 model/content 陣列。其他請求欄位會為所選模型保留。 |
參數material_combinations | 規格text, image, video, image, audio, image, video, video, audio, image, video, audio |
參數optional_text_with_media | 規格true |
參數reference_media_count_and_size_limits | 規格null |
方法別名: /v1/videos/generations
生命週期: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
僅建立一次,並保留回傳的公開 id/polling_url。
請輪詢原始作業;達到 succeeded 後,下載實際的自有 content.video_url。
方案
最終費用的計算方式
顯示的費率用於在生成前估算費用。最終費用依原始生成作業記錄的成本計算。實測的輸出時間長度與預估數量並非最終計費數量。
費率資訊不會增加請求選項。支援的參數列於所選方法中。
- 快速模式
- 未指定 選取快速模式時
- flex 模式
- 未指定 選取 flex 模式時
- 最高推理強度
- 未指定 最高推理強度採用 default 調整值時
供比較的預估費率
各設定的價格
請逐一核對各項費用與所列條件。每組互為替代選項的設定只套用一種費率。
| 設定 | 費率表 | 預估數量 | 計費單位 | 費用 |
|---|---|---|---|---|
| 設定基礎 token 費率 | 費率表基本費率 | 預估數量— | 計費單位— | 費用 輸入 · 輸入 Token · 僅供比較的估算 — / 1K Token 輸出 · 輸出 Token · 僅供比較的估算 — / 1K Token 輸入 · 讀取快取 · 僅供比較的估算 — / 1K Token 輸入 · 寫入快取 · 僅供比較的估算 — / 1K Token 輸入 · 寫入快取,1 小時 · 僅供比較的估算 — / 1K Token |
| 設定輸入包含影片。 | 費率表— | 預估數量— | 計費單位per 1,000 video tokens | 費用 輸出 · 僅供比較的估算 $0.012 每 1K 影片 Token |
| 設定輸入未包含影片。 | 費率表— | 預估數量— | 計費單位per 1,000 video tokens | 費用 輸出 · 僅供比較的估算 $0.02 每 1K 影片 Token |
| 設定預估生成費用 | 費率表— | 預估數量單次生成估算值 | 計費單位— | 費用 輸出 · 預估生成費用 · 僅供比較的估算 $0.822402 生成前估算 此估算並非額外費用,也不是本次生成完成後的固定費率。 |
Ailoot 會在請求前預留估算金額。取得結果後,依實測用量結算最終費用。串流結算採用最終用量紀錄。預留金額與結算的運作方式 →
請求範例
Ailoot Ultra · 影片
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
cat > request.json <<'JSON_REQUEST'
{"model":"doubao-seedance-2-5-260628","content":[{"type":"text","text":"女孩抱着狐狸,女孩睁开眼,温柔地看向镜头,狐狸友善地抱着,镜头缓缓拉出,女孩的头发被风吹动"}]}
JSON_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_POLL'
import json
from pathlib import Path
from urllib.parse import quote,urljoin,urlsplit
r=json.loads(Path("result.json").read_text())
i=r.get("id")
if not isinstance(i,str) or not i.startswith("native302_"):raise SystemExit("Keep original response/headers/id; do not resubmit creation.")
u=urljoin("https://api.ailoot.ai",r.get("polling_url") or "/v1/videos/"+quote(i,safe=""))
p=urlsplit(u)
if p.scheme!="https" or p.netloc!="api.ailoot.ai" or not p.path.startswith("/v1/videos/"):raise SystemExit("Use actual Ailoot lookup path.")
Path("poll-url.txt").write_text(u)
PY_POLL
curl --fail-with-body --silent --show-error "$(cat poll-url.txt)" -H "Authorization: Bearer $AILOOT_API_KEY" -D status-headers.txt -o status.json
set -eu
python3 - <<'PY_ASSETS'
import json
from pathlib import Path
from urllib.parse import urlsplit
r=json.loads(Path("status.json").read_text())
if r.get("status")!="succeeded":raise SystemExit("Poll same original job until an owned result is returned.")
u=r.get("content",{}).get("video_url")
urls=[u] if isinstance(u,str) else u
if not isinstance(urls,list) or not urls:raise SystemExit("No completed video URL.")
for u in urls:
if not isinstance(u,str):raise SystemExit("Invalid returned URL.")
p=urlsplit(u)
if p.scheme!="https" or p.netloc!="api.ailoot.ai" or not p.path.startswith("/v1/media/assets/") or not p.path.endswith("/content") or not p.query:raise SystemExit("Wait for actual Ailoot-owned signed result.")
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_ASSETS
index=0
while IFS= read -r asset_url; do
curl --fail-with-body --silent --show-error "$asset_url" -o "video-${index}.bin"
index=$((index + 1))
done < asset-urls.txt
接收並儲存結果
Ailoot Ultra · 影片
原生 JSON,含公開的 id/polling_url。發布後,content.video_url 會包含 Ailoot 自有的簽署 URL;發布前,選定的輸出 URL 會被清空。
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
保留所有已完成的結果
請儲存每部已完成的影片或傳回的檔案,並從實際傳回的每個素材 URL 取得素材。
請保留 content.video_url 中每個實際的 URL;index 必須識別一個實際回傳的輸出。
需要檢查原始回應時
請保留原始回應/標頭/id,並輪詢該操作;切勿重新提交結果不明的建立請求。
回應欄位
| 欄位 | 類型 |
|---|---|
欄位id | 類型string |
欄位provider_task_id | 類型string |
欄位polling_url | 類型string |
欄位status | 類型string when supplied |
欄位content.video_url | 類型string|string[] |
欄位usage | 類型object when supplied |
錯誤與後續步驟
| 回應 | 條件 | 下一步 |
|---|---|---|
回應400 · invalid_request_error | 條件JSON/model/必要欄位型別或內容索引無效。 | 下一步 |
回應401 · authentication_error | 條件Ailoot API 金鑰無效。 | 下一步 |
回應404 · not_found_error | 條件工作/輸出不存在,或不屬於同一使用者/API 金鑰/群組。 | 下一步 |
回應502 · result_pending_check | 條件原始提交內容/狀態不完整;請保留原始 ID,切勿重新提交。 | 下一步 |
回應503 · result_pending_check | 條件原始媒體/路由/結算正在查核中;請接續原始操作。 | 下一步 |
別名
模型別名
Ailoot Ultra doubao-seedance-2-5-260628
方法路徑別名
/v1/videos/generations
相關呼叫用 ID
FAQ · ByteDance: Seedance 2.5
- 可以使用哪些輸入與結果?
POST /v1/videos·doubao-seedance-2-5-260628:text,image,video,audio→video- 請求使用哪些欄位?
POST /v1/videos·doubao-seedance-2-5-260628:model,content,generate_audio,duration,resolution,ratio,watermark,seed,execution_expires_after,service_tier,safety_identifier- 適用哪些限制?
POST /v1/videos·doubao-seedance-2-5-260628:seed.minimum:-1;seed.maximum:4294967295;execution_expires_after.minimum:3600;execution_expires_after.maximum:259200