Claude Opus 5.5 已在 SeedRouter 上線
SeedRouter Docs

Seedance 2.0

透過官方 ModelArk 任務 API 使用 Seedance 2.0 生成影片:文字轉影片、首尾影格,以及圖片、影片和音訊參考,480p 到 4K。

View Markdown

Seedance 2.0 是 ByteDance 的影片生成模型(Dreamina Seedance 2.0)。傳送官方 ModelArk 任務請求主體,保留回傳的任務 ID,再從該任務讀取生成完成的影片。圖片、影片和音訊以 URL 形式放在 content 中。

模型 ID

模型 ID解析度說明
dreamina-seedance-2-0480p、720p、1080p、4K完整模型
dreamina-seedance-2-0-fast480p、720p每秒價格更低
dreamina-seedance-2-0-mini480p、720p每秒價格最低

三個 ID 接受相同的參數。目前價格見模型頁。

快速範例

curl https://api.seedrouter.ai/v1/contents/generations/tasks \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0",
    "content": [{"type": "text", "text": "A red paper boat drifts across a calm pond at sunrise, slow dolly-in"}],
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5,
    "generate_audio": true
  }'

端點

POST https://api.seedrouter.ai/v1/contents/generations/tasks
標頭值
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

請求主體就是官方 ModelArk 的「建立影片生成任務」請求。如果你已經在呼叫 ModelArk,只需把 base URL 改成 https://api.seedrouter.ai/v1 並更換 API 金鑰。回應是 {"id": "task_..."},而不是生成完成的影片。請把 API 金鑰保存在伺服器端程式碼中。

參數

名稱型別必填預設值說明
modelstring是—上面三個模型 ID 之一。
contentobject[]是—提示詞和媒體;見下文。
resolutionenum否720p480p、720p、1080p、4k;Fast 和 Mini ID 只接受 480p 和 720p。
ratioenum否adaptive16:9、4:3、1:1、3:4、9:16、21:9、adaptive。
durationinteger否54–15 秒,或傳 -1 由模型決定。
generate_audioboolean否true隨影片一起生成聲音。
watermarkboolean否false加上浮水印。
return_last_frameboolean否false同時以圖片 URL 形式回傳最後一個影格。
execution_expires_afterinteger否1728003600–259200 秒。超過這個時間仍未完成的任務會變為 expired,且不計費。
priorityinteger否00–9。
safety_identifierstring否—識別你的終端使用者,1–64 個字元。使用雜湊值即可。
service_tierenum否default只能是 default。
content_filterboolean否trueSeedRouter 擴充欄位。設為 false 會關閉這次請求的內容過濾。

content 項目

項目結構角色限制
文字{"type": "text", "text": "..."}—一則。
圖片{"type": "image_url", "image_url": {"url": "https://..."}, "role": "..."}first_frame、last_frame、reference_image最多 9 張參考圖片。
影片{"type": "video_url", "video_url": {"url": "https://..."}, "role": "reference_video"}reference_video最多 3 段。
音訊{"type": "audio_url", "audio_url": {"url": "https://..."}, "role": "reference_audio"}reference_audio最多 3 段。需要同時提供參考圖片或參考影片。

未知欄位會被拒絕。不支援:seed、callback_url(請改為輪詢任務)、draft 和 draft_task、tools、僅適用於 1.x 的 frames 和 camera_fixed,以及 output_format 和 omni_reference_task_type(僅限 Seedance 2.5)。任務無法取消或刪除。

模式

模式由 content 項目決定;沒有模式參數。

模式content
文字轉影片一則文字項目
首影格文字(選用)+ 一張角色為 first_frame 的圖片,或一張未指定角色的圖片
首尾影格文字(選用)+ 一張 first_frame 圖片 + 一張 last_frame 圖片
多模態參考文字 + reference_image、reference_video 和 reference_audio 項目的任意組合

首影格類模式不能與參考項目混用。有多張圖片或包含其他任何媒體時,每張圖片都必須指定 role。

參考範例

curl https://api.seedrouter.ai/v1/contents/generations/tasks \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0",
    "content": [
      {"type": "text", "text": "The character from the image walks through the market in the video, same camera move"},
      {"type": "image_url", "image_url": {"url": "https://example.com/character.png"}, "role": "reference_image"},
      {"type": "video_url", "video_url": {"url": "https://example.com/market.mp4"}, "role": "reference_video"}
    ],
    "ratio": "adaptive",
    "duration": 8
  }'

請把範例 URL 換成你自己、可存取的檔案。

媒體輸入

本 API 只接受 URL 參考。不接受 Base64、data: URL、asset:// ID 和 multipart 上傳。Playground 會先把所選檔案上傳到儲存空間,再提交其 URL。

媒體必須是可公開存取的 HTTP(S) URL,並符合模型的官方限制:

媒體格式限制
圖片JPEG、PNG、WebP、BMP、TIFF、GIF、HEIC、HEIF小於 30 MB;寬和高 300–6000 px;長寬比(寬 / 高)0.4–2.5;1–9 張參考圖片
影片MP4、MOV(H.264 或 H.265)每段 2–15 秒,最多 3 段,總長不超過 15 秒;不超過 200 MB;24–60 FPS;寬和高 300–6000 px;長寬比 0.4–2.5;407,696–8,295,044 像素(寬 × 高)
音訊WAV、MP3每段 2–15 秒,最多 3 段,總長不超過 15 秒;需要同時提供參考圖片或參考影片;不超過 15 MB

模型不支援包含真人臉孔的參考圖片和參考影片。

媒體會在任務開始時、任何生成之前接受檢查。媒體違反上述任一限制的任務會以 failed 結束,附帶 invalid_request_error 和一則指出所違反規則的訊息,例如 The request was rejected: content reference videos must total at most 15 seconds.,且不計費。當時無法讀取的檔案會交給模型,由模型決定接受或拒絕;無論哪種情況,失敗的任務都不計費。

計費維度

目前費率請查看模型定價區段。Seedance 2.0 按影片 token 計費,這是官方的計費單位:

video tokens = (output seconds + reference video seconds) × width × height × 24 / 1024

每百萬 token 的費率取決於輸出解析度,以及請求是否包含參考影片;包含參考影片的請求,其全部 token 都按較低的費率計費。文字、圖片和音訊輸入不計費。在 16:9 下,每秒在 480p(864×496)為 10,044 個 token,720p 為 21,600,1080p 為 48,600,4K 為 194,400。

扣款以生成完成的影片所回報的 token(usage.completion_tokens)為準,因此 duration: -1 會按實際生成的長度計費。算繪出的片段會略長於請求的長度:一個 5 秒、720p、16:9 的請求會算繪 121 個影格,回報 108,900 個 token,而不是 108,000。最終扣款請在帳號的用量記錄中查看。失敗和逾期的任務不計費。

輸出結構

提交後會回傳任務 ID:

{"id": "task_..."}

查詢任務

curl https://api.seedrouter.ai/v1/contents/generations/tasks/YOUR_TASK_ID \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

每 10–20 秒輪詢一次,直到 status 變為 succeeded、failed 或 expired。輪詢過程中發生網路逾時,並不代表生成失敗:請保留任務 ID 並繼續查詢。不要為了查看進度而再建立一個任務。

完整輪詢範例

請在上方的 Python 提交範例之後執行這段程式碼。

import time

deadline = time.monotonic() + 1800
while time.monotonic() < deadline:
    result = requests.get(
        f"https://api.seedrouter.ai/v1/contents/generations/tasks/{task_id}",
        headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
        timeout=30,
    )
    result.raise_for_status()
    task = result.json()
    if task["status"] == "succeeded":
        print(task["content"]["video_url"])
        break
    if task["status"] in ("failed", "expired"):
        raise RuntimeError(task["error"]["message"])
    time.sleep(15)
else:
    raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")

成功的任務

{
  "id": "task_...",
  "model": "dreamina-seedance-2-0",
  "status": "succeeded",
  "content": {
    "video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4",
    "last_frame_url": "https://static.seedrouter.ai/media/tasks/task_example/last_frame/0.jpg"
  },
  "usage": {"completion_tokens": 108900, "total_tokens": 108900},
  "seed": 42,
  "resolution": "720p",
  "ratio": "16:9",
  "duration": 5,
  "framespersecond": 24,
  "generate_audio": true,
  "draft": false,
  "output_format": "mp4",
  "service_tier": "default",
  "execution_expires_after": 172800,
  "priority": 0,
  "created_at": 1790321515,
  "updated_at": 1790321652
}
欄位含義
id請保留該 ID 供後續查詢使用。
statusqueued、running、succeeded、failed 或 expired。
content.video_url生成的影片。
content.last_frame_url最後一個影格,在 return_last_frame 為 true 時回傳。
usage.completion_tokens生成完成的影片的影片 token 數,即計費數量。
duration、resolution、ratio、framespersecond、seed實際算繪時的值;seed 是模型選定的值。
created_at、updated_at以秒為單位的 Unix 時間戳記。
error任務失敗或逾期時回傳 {"code", "message"}。

影片 URL 託管在我們的儲存空間上。需要長期保存時,請把檔案儲存到你自己的儲存空間中。

列出任務

curl "https://api.seedrouter.ai/v1/contents/generations/tasks?page_num=1&page_size=20&filter.status=succeeded" \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

回傳 {"total": N, "items": [...]},包含最近 7 天的任務物件,由新到舊排列。page_num 和 page_size 的範圍是 1–500(預設分別為 1 和 20)。篩選條件:filter.status、filter.model、filter.task_ids(可重複)和 filter.service_tier。

錯誤

在任務建立之前就被拒絕的請求,會回傳 HTTP 錯誤狀態碼和一個 error 物件,且不計費。受理之後才失敗的任務,查詢時會回傳 HTTP 200,並帶有 status: "failed"(或 "expired")和一個 error 物件。被內容過濾攔下的輸出會以 content_policy_violation 失敗;執行超過 execution_expires_after 的任務會以 expired 結束,錯誤碼為 task_expired。

錯誤碼、HTTP 狀態碼和重試建議請參見共用錯誤目錄。

{
  "id": "task_...",
  "model": "dreamina-seedance-2-0",
  "status": "failed",
  "error": {
    "code": 60001,
    "message": "The request was rejected by the content policy. Please revise the prompt or input images."
  }
}

如果提交本身逾時,請先檢查你的任務清單再重新提交:第一次請求有可能已經被受理。

實用建議

  • 用完整的句子描述主體、動作、運鏡和光線。
  • 先用 480p 和較短的 duration 產出草稿,再用更高的解析度算繪選定的版本。
  • 用 return_last_frame 串接鏡頭:把回傳的影格當作下一個任務的 first_frame。

相關內容