跳转到主要内容
Seedream 是字节跳动 BytePlus ModelArk 的图像模型,最新版本为 5.0 Flash 和 5.0 Pro。在老张API中,文生图和图改图用同一个 JSON 接口,按输出图片张数计费。 价格为 2026 年 9 月 25 日公开价格配置,见模型与价格总表。除 5.0 Pro 从第 2 张参考图起每张另收 $0.003 外,参考图不另收费;分层(透明图层)同样按输出张数计费,见下方「分层」一节。
Seedream 5.0 生成的写实风格山间日落

「文生图」示例的输出:Seedream 5.0,2K

本页示例使用 Seedream 5.0,换用其他版本时只改 model。5.0 Flash 和 5.0 Pro 不支持 sequential_image_generation 和 stream,传入任何值都会返回 400,切换前先删掉这两个字段。

准备令牌与环境

在令牌管理新建 default 分组的令牌,计费模式选择「按量优先」(推荐)或「按次计费」,然后点击创建。按量优先的令牌同时可以调用按量计费的模型;按次计费的令牌只能调用按次计费的模型。 在令牌管理中新建令牌,计费模式选择按次计费后点击创建 设置密钥,并安装 Python 示例用到的依赖:
cURL 示例把响应写入 JSON 文件,再用 Images API 参考中的保存脚本 save_images.py 下载图片(脚本依赖 pillow)。Python 示例拿到 URL 后直接下载。返回的图片地址是临时链接,拿到后请尽快保存。

文生图

cURL

保存脚本会下载 data[0].url 指向的图片,并按实际格式命名,例如 seedream-generation-1.jpg。

Python

图改图

在请求中加入 image 即为图改图。参考图可以是公网 URL,也可以是 data:image/png;base64,... 形式的 Base64 data URL。提示词里写清楚要改变什么、保留什么。

单张参考图

下面的示例使用 BytePlus 文档中的公开示例图,可以直接运行:

多张参考图

image 传数组,最多 10 张。数组顺序就是提示词里的图 1、图 2、图 3……下面把两张本地图片转成 data URL 后发送:

Python:本地文件或 URL

分层:拆出透明图层

seedream-5-0-flash-260915 和 seedream-5-0-pro-260628 都能把一张成品图拆成一张补全后的背景底图和若干张透明 PNG 图层,每个图层只含一个元素,适合换背景、二次排版和素材复用。只在提示词里要求「透明背景」得不到 alpha 通道,需要透明素材时用分层。 两款模型都按输出张数计费,Pro 每张的价格约是 Flash 的 6.7 倍,分层默认用 Flash 即可。 分层请求与普通改图的区别:
  • 设置 "layer_decomposition": true。
  • image 只传 1 张图片,写成字符串或只含一项的数组都可以。
  • prompt 可以不传,也可以传空字符串,模型会自动识别画面里的主要元素。
  • size 推荐用 1K,不能写像素宽高。
  • 分层可用的尺寸档位只有 1K、1.5K、2K、auto。
  • 只有 5.0 Flash 和 5.0 Pro 支持分层。seedream-5-0-260128 和 seedream-4-5-251128 收到该参数会返回 400,错误码为 InvalidParameter。

发送分层请求

把 image 换成你自己可公网下载的图片,或者 Base64 data URL。换成 Pro 时只改 model。
分层按输出张数计费:Flash 每张 $0.018,Pro 每张 $0.12。
  • 图层数量由画面内容决定,无法事先指定,同一张图两次分层的张数也可能不同。例如一张电影海报拆出 6 张(1 张底图 + 5 个图层),Flash 计 $0.108,Pro 计 $0.72;元素多的画面可能返回十几张,Flash 返回 16 张计 $0.288。
  • 用 1K 拆出 6 张时,Flash 不到 1 分钟、Pro 约 70 秒返回,图层越多越慢。客户端超时设到 300 秒以上;2K 分层耗时可能很长,客户端提前断开后请求仍会计费。
  • 图片无法分层时返回 400,不计费。
  • 底图里被移走元素的位置是模型补画的内容,商用前请人工检查。

分层响应

data[] 的第 1 项是底图,其余每项是一个图层。下面的响应只保留了底图和其中一个图层:
usage 里还有 output_tokens,但费用只按图片张数计算。 图层 PNG 的像素尺寸不一定等于 bounding_box 的大小,例如上面的图层是 916×529,而框只有 359×208。重新合成时要把图层缩放到 absolute 框里,不能按原尺寸直接贴。

保存图层并重新合成

下面的脚本读取上一步保存的 seedream-layers.json,把每张图片按 z_index 和图层名称保存,再用 Pillow 按 bounding_box.absolute 叠回底图,得到 recomposited.png:
save_layers.py
运行后会得到 layer-00-base.jpg、layer-04-spaceship.png 这样的文件。想换背景或删掉某个元素时,替换底图或跳过对应图层再合成即可。

请求参数

组图模式和分层一次可能返回多张图片,要逐项保存 data[]:save_images.py、上面的 seedream_edit() 和 save_layers.py 都会保存全部图片。 普通生成和改图的成功响应格式如下,分层响应的字段见上方「分层响应」:
没有 data 时,响应里会有错误信息。检查模型 ID、参考图地址和令牌分组,并在调用日志中核对请求记录和扣费。

常见问题

新接入选哪个版本?

按任务选: 5.0 Flash 通常 20 秒以内出图;5.0 Pro 常见约 2 分钟,客户端超时要设到 240 秒以上。seedream-5-0-260128 在 BytePlus 文档中对应 Seedream 5.0 lite。两款新模型的上线说明见 Seedream 5.0 Flash 与 5.0 Pro 上线公告。

size 可以填哪些值?能出 4K 吗?

size 有两种写法,二选一:写分辨率档位,并在提示词里描述比例(例如「16:9 横版」);或者直接写像素宽高,例如 2848x1600。各模型可用的分辨率档位:
  • seedream-5-0-flash-260915:1K、1.5K、2K,默认 2K
  • seedream-5-0-pro-260628:1K、2K
  • seedream-5-0-260128:2K、3K(最高 3K)
  • seedream-4-5-251128:2K、4K
  • seedream-4-0-250828:1K、2K、4K
写像素宽高时,宽高比都要在 1/16 到 16 之间,总像素要在对应模型的范围内: 所以 1024x1024 这类小尺寸在 5.0 和 4.5 上会报错。每张图片的单价不随尺寸变化。 5.0 Flash 和 5.0 Pro 用预设档位时,画面宽高比由模型按内容决定,提示词里写比例不一定生效;需要固定比例时直接写像素宽高。 分层请求只接受 1K、1.5K、2K、auto 档位,不能写像素宽高。

组图模式怎么用?怎么计费?

组图模式只适用于 5.0、4.5 和 4.0;5.0 Flash 和 5.0 Pro 不支持,传入会返回 400。 把 sequential_image_generation 设为 auto,模型会按提示词决定返回几张相关的图片,例如「生成同一角色在早、中、晚的三张图」。 需要限制张数时,按 BytePlus 文档传 sequential_image_generation_options.max_images(1–15)。参考图数量加上生成张数不能超过 15。 组图响应的 data[] 里有多张图片,要逐项保存。费用按实际返回的图片张数计算,例如用 seedream-5-0-260128 返回 4 张计 $0.14;参考图不另外收费。实际扣费以调用日志为准。

本地图片怎么传?参考图有什么限制?

把图片转成 data URL 放进 image,写法是 data:image/png;base64,<Base64 编码>,其中格式名必须小写,如 png、jpeg。多张参考图的写法见多张参考图。 BytePlus 对每张参考图的要求:
  • 格式为 jpeg、png、webp、bmp、tiff、gif、heic 或 heif;
  • 单张不超过 30 MB;
  • 宽和高都大于 14 像素,总像素不超过 6000×6000;
  • 宽高比在 1/16 到 16 之间。
公网 URL 必须能被直接下载。图片较大时优先用公网 URL,因为 Base64 编码会让请求体增大约三分之一。

怎样去掉水印?

在请求里传 "watermark": false,本页示例都已这样设置。BytePlus 的 watermark 默认为 true,会在图片右下角加「AI generated」字样,所以需要无水印图片时要显式传 false。

结果链接保存多久?能返回 Base64 吗?

BytePlus 官方说明图片 URL 在生成后 24 小时内有效。收到响应后尽快下载到自己的存储,不要把返回的链接当作长期地址。 需要图片内容直接随响应返回时,把 response_format 设为 b64_json。Images API 参考中的保存脚本同时支持 url 和 b64_json 两种返回。

请求失败会扣费吗?

不会。上游返回非 200 的请求(参数错误、内容审核拦截等)不计费,成功返回图片才计费。 客户端超时不等于请求失败:服务端可能已经生成完成并扣费。5.0 Pro 常见约 2 分钟出图,分层也可能超过 1 分钟,请把超时留足。重新提交前先到调用日志确认该请求的状态,避免重复扣费。实际扣费以调用日志为准。

相关文档与来源