火山引擎 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支持。 - 模型定价 — 尺寸档位与按张计费。