火山引擎 Seedream
目前在售的 Seedream 模型:seedream-5.0-pro 和 seedream-5.0-lite。它們由火山引擎(豆包)渠道提供,透過與 OpenAI 圖像格式 相同的 OpenAI 相容 images 端點呼叫;本頁說明火山引擎適配器會做哪些改動。
Seedream 模型的 supported_endpoint_types 包含 image-generation——欄位讀法見模型。
POST /v1/images/generationsPOST /v1/images/edits/v1/images/generations 接收 JSON 請求體。圖生圖編輯使用 /v1/images/edits,把來源圖像作為字串放在 image 欄位;兩者都會被轉發到上游的圖像生成端點(該渠道下火山引擎沒有另外的表單編輯端點)。
| 欄位 | 類型 | 必填 | 說明 |
|---|---|---|---|
model | string | 是 | seedream-5.0-pro 或 seedream-5.0-lite |
prompt | string | 是 | 文字描述或編輯指令 |
size | string | 否 | 輸出尺寸或分檔。到達火山引擎前會做歸一(見尺寸歸一化) |
image | string | 否 | 圖生圖的來源圖像,http(s) 連結或 data:image/...;base64,... 字串。放在 JSON 請求體中傳遞 |
watermark | boolean | 否 | 是否為輸出加上浮水印;明確傳 false 會轉發 |
sequential_image_generation | string | 否 | "auto" 開啟多圖生成,"disabled" 關閉 |
sequential_image_generation_options | object | 否 | 連續生成的選項,{"max_images": <整數>} 指定數量 |
layer_decomposition | boolean | 否 | 把結果拆成分層圖。開啟後也會改變該請求的計價方式(見計費) |
background | string | 否 | 背景處理,例如 "transparent" 或 "opaque" |
tools | array | 否 | 上游工具,例如 [{"type": "web_search"}] |
optimize_prompt_options | object | 否 | prompt 優化,例如 {"mode": "standard"} 或 {"mode": "fast"} |
這些欄位都屬於網關的圖像請求結構,會轉發給火山引擎。未傳的可選欄位會從上游請求體中省略,而不是送出 null。其他網關不認得的 JSON 欄位會被丟棄——如果確實需要網關未建模的欄位,請在渠道上開啟請求體透傳。
size 的處理方式取決於模型:
| 模型 | size 處理 |
|---|---|
seedream-5.0-pro | 保留原生尺寸:1K、1.5K、1024x1024 這類像素值以及其他值都按傳入值送出 |
seedream-5.0-lite | 逐像素尺寸會被改寫為 2K / 3K / 4K 分檔 |
對於會被改寫的模型,長邊決定分檔:長邊除以 1024 後四捨五入取整(正好 .5 時向上),再夾取到 2K–4K 區間。直接傳分檔(例如 2K、3k)只做夾取,auto 這類無法識別的值原樣透傳,由火山引擎校驗。seedream-5.0-lite 的範例:
請求的 size | 送給上游的值 |
|---|---|
1024x1024 | 2K |
2048x2048 | 2K |
1536x1536 | 2K |
1440x2560 | 3K |
3840x2160 | 4K |
1K | 2K |
5K | 4K |
auto | auto |
curl https://api.routeapi.ai/v1/images/generations \ -H "Authorization: Bearer $ROUTEAPI_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "seedream-5.0-pro", "prompt": "A misty mountain lake at sunrise, cinematic", "size": "2K" }'curl https://api.routeapi.ai/v1/images/generations \ -H "Authorization: Bearer $ROUTEAPI_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "seedream-5.0-lite", "prompt": "A series of four postcards from the same coastal town, consistent style", "sequential_image_generation": "auto", "sequential_image_generation_options": { "max_images": 4 } }'sequential_image_generation 為 "auto" 且沒有給出 max_images 時,如果該模型設定了額外輸出計價,預估計費會按 15 張圖計算。
把來源圖像作為字串放進 JSON 請求體。網關會把 image 的值原樣轉發給火山引擎——http(s) 連結或 data:image/...;base64,... 字串都可以。上面的尺寸歸一化同樣作用於編輯請求。
curl https://api.routeapi.ai/v1/images/edits \ -H "Authorization: Bearer $ROUTEAPI_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "seedream-5.0-pro", "prompt": "Replace the background with a sunset beach, keep the subject unchanged", "image": "https://example.com/photo.png", "size": "2K" }'layer_decomposition: true 要求上游把結果拆成獨立圖層;background: "transparent" 要求透明背景。兩者都原樣轉發。
火山引擎的圖像物件會原樣回傳給你。可以解析的欄位如下:
{ "data": [ { "url": "https://example.com/generated.png", "size": "2048x2048" } ], "usage": { "input_images": 1, "generated_images": 1, "output_tokens": 4096, "total_tokens": 4096 }}- 圖像從
data[].url讀取。每一項可能帶有實際交付的size,它可能與你請求的分檔不同。 - 模型按張計費時,
usage.input_images和usage.generated_images用於結算;output_tokens用於按 token 結算。
Seedream 模型在設定為按張計費時按張收費。如果模型詳情頁展示了尺寸分檔,分檔會在選擇渠道之前,根據你送出的 size 對應的像素數確定。適用價格見模型定價與模型詳情頁。
Seedream 有兩點特別注意:
- 適配器會改寫
seedream-5.0-lite的size,因此實際交付的圖像可能落在與計費分檔不同的分檔上。為避免這種錯配,按尺寸分檔計價的模型如果被路由到火山引擎渠道,會以400拒絕;請求體透傳模式不受影響,因為此時適配器不會改寫請求體。 layer_decomposition: true會切換到分層拆解的價格設定(僅在該模型設定了分層價格時)。免費額度之外的參考圖以及連續生成的多張圖也會計費,具體數字以模型詳情頁為準。
| 狀態碼 | 含義 | 常見原因 |
|---|---|---|
| 400 | 請求無效 | 缺少 model、n 超過 128、在 JSON 請求體中用 × 作為尺寸分隔符,或按尺寸分檔計價的模型被路由到火山引擎 |
| 401 | 認證失敗 | API Key 缺失、無效、過期或額度耗盡 |
| 403 | 餘額或額度不足 | insufficient_user_quota 或 pre_consume_token_quota_failed |
| 429 | 觸發限流 | 降低並行 |
| 500 | 轉換或內部錯誤 | 請求無法轉換,或上游沒有回傳圖像 |
不支援的 size、被拒絕的 prompt 等上游錯誤會帶回上游的狀態碼與訊息,並附加 RouteAPI 的請求 ID。
- OpenAI 圖像格式 — 共用的
/v1/images請求格式與 OpenAI 模型。 - Nano Banana — Gemini 圖像模型。
- 模型 — 查找圖像模型並確認
image-generation支援。 - 模型定價 — 尺寸分檔與按張計費。