Seedream

官方协议文档:图片生成 API(火山引擎方舟)。本页字段与官方文档逐项对齐,网关侧的差异集中列在文末「与官方文档的差异」小节;响应字段说明见官方图片生成流式响应事件。

模型与档位

模型缺省 size常用 size(示例)
doubao-seedream-4.02K1K / 2K / 4K
doubao-seedream-5.0-pro2K1K / 1.5K / 2K
doubao-seedream-5.0-lite2K2K / 3K / 4K
doubao-seedream-5.02K同 5.0 lite
doubao-seedream-4.52K2K / 4K
  • 上述模型走同一入口 POST /api/v3/images/generations,能力均为文生图、图生图(单图 / 多图参考),必填 model、prompt。组图(sequential_image_generation: "auto")仅 5.0 lite / 5.0 / 4.5 / 4.0 支持。
  • doubao-seedream-5.0 是 doubao-seedream-5.0-lite 的别名:方舟没有独立的 5.0 模型,二者档位与单价完全一致。
  • 各模型支持的档位不完全相同,上表只列常用值;完整取值范围以方舟官方文档为准。表外档位会在创建时被拒(HTTP 400),不渲染、不计费。
  • 5.0 pro 的 1.5K 与 1K 同价(方舟定价),且只有部分供应商能出该档位,可用线路少于其他档位。
  • 入口可达性以模型详情页的协议列表为准。 doubao-seedream-4.0 同时提供 Ark 原生入口(本页)与 OpenAI 兼容入口(POST /v1/images/generations,见下文「OpenAI 兼容入口」);5.0 / 5.0 lite / 5.0 pro 目前只经 OpenAI 兼容入口提供,见图像生成(OpenAI 兼容)。在未开放的入口上调用会返回 400 model_protocol_not_offered。

ModelGo 按火山引擎方舟 Images API 的官方路径与请求/响应格式原样接收 Seedream 请求,网关负责路由到供应商并计费;由哪家供应商渲染对调用方不可见。图像同步返回,无需轮询。

使用方舟官方 SDK(volcenginesdkarkruntime)时,把 base_url 指向 https://api.modelgo.ai/api/v3、api_key 换成 ModelGo API Key 即可。

1. 创建图像

POST https://api.modelgo.ai/api/v3/images/generations

文生图(4.0)

bash
curl https://api.modelgo.ai/api/v3/images/generations \
  -H "Authorization: Bearer $MODELGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedream-4.0",
    "prompt": "一只毛茸茸的橘猫坐在阳光下的窗台上,16:9 横构图,胶片质感",
    "size": "2K",
    "watermark": false
  }'

文生图(5.0 pro)

bash
curl https://api.modelgo.ai/api/v3/images/generations \
  -H "Authorization: Bearer $MODELGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedream-5.0-pro",
    "prompt": "一只毛茸茸的橘猫坐在阳光下的窗台上,16:9 横构图,胶片质感",
    "size": "2K",
    "watermark": false
  }'

文生图(5.0 lite)

bash
curl https://api.modelgo.ai/api/v3/images/generations \
  -H "Authorization: Bearer $MODELGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedream-5.0-lite",
    "prompt": "一只毛茸茸的橘猫坐在阳光下的窗台上,胶片质感",
    "size": "2K",
    "watermark": false
  }'

图生图 / 多图参考

bash
curl https://api.modelgo.ai/api/v3/images/generations \
  -H "Authorization: Bearer $MODELGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedream-5.0-pro",
    "prompt": "把第一张图的猫放到第二张图的霓虹街景里",
    "image": ["https://example-cdn.com/cat.jpg", "https://example-cdn.com/street.jpg"],
    "size": "1280x720",
    "response_format": "b64_json"
  }'

组图(4.0)

组图由 sequential_image_generation: "auto" 开启,实际张数由模型根据提示词判断,上限由 max_images 约束;具体上限以官方文档为准。

bash
curl https://api.modelgo.ai/api/v3/images/generations \
  -H "Authorization: Bearer $MODELGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedream-4.0",
    "prompt": "生成 4 张不同风格的柴犬海报:赛博朋克、水彩、极简、复古胶片",
    "size": "2K",
    "sequential_image_generation": "auto",
    "sequential_image_generation_options": {"max_images": 4}
  }'

例如:请求 4 张时 data[] 返回 4 张图,usage.generated_images = 4,按 4 × 单价结算。

OpenAI 兼容入口

doubao-seedream-4.0 同时提供 OpenAI 兼容入口 POST https://api.modelgo.ai/v1/images/generations。请求体沿用方舟官方字段原样转发,响应也是官方形状,计费规则与原生入口完全一致(见「计费口径」);方舟官方 SDK 之外的 OpenAI SDK / 客户端可直接使用。

bash
curl https://api.modelgo.ai/v1/images/generations \
  -H "Authorization: Bearer $MODELGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedream-4.0",
    "prompt": "生成 4 张不同风格的柴犬海报:赛博朋克、水彩、极简、复古胶片",
    "size": "2K",
    "sequential_image_generation": "auto",
    "sequential_image_generation_options": {"max_images": 4}
  }'
  • n 必须省略或为 1:方舟 Images API 没有 n,n ≥ 2 会在创建时被拒(HTTP 400)。要一次出多张请用 sequential_image_generation: "auto"。
  • 组图:与原生入口相同,sequential_image_generation + sequential_image_generation_options.max_images;例如请求 4 张会返回 4 张,按 4 × 单价结算。
  • 图生图 / 多图参考:用 JSON 的 image 字段(与官方一致,URL 或 base64),不要用 multipart 的 /v1/images/edits —— 该模型当前未开放这个入口,请求会返回 400 model_protocol_not_offered。
  • 其余字段(size、watermark、response_format、stream 等)的限制与原生入口相同,见「参数说明」与「与官方文档的差异」。

响应结构

json
{
  "model": "doubao-seedream-5.0-pro",
  "created": 1757318400,
  "data": [{"url": "https://ark-content-generation.tos-cn-beijing.volces.com/...", "size": "2816x1584", "output_format": "jpeg"}],
  "usage": {"generated_images": 1, "input_images": 0, "output_tokens": 17424, "total_tokens": 17424}
}
  • model 始终回显你请求的逻辑模型名(如 doubao-seedream-5.0-lite),不是方舟内部的版本 id(形如 doubao-seedream-5-0-260128 / doubao-seedream-4-5-251128 / doubao-seedream-4-0-250828)。
  • response_format 缺省 url,链接 24 小时内有效,请及时下载,不要持久化该 URL。
  • response_format: "b64_json" 时 data[].b64_json 直接给出 base64 图像。
  • data[].size 是实际输出像素。data[].output_format(编码格式)与 usage.input_images 只由 5.0 pro / 5.0 flash 返回,4.0 / 4.5 / 5.0 lite 的响应中没有这两个字段。
  • usage.output_tokens / total_tokens 为上游回显的参考值,不参与计费;结算只看 usage.generated_images。
  • 组图场景中某张图失败时,该条目为 {"error": {...}},其余条目照常返回;只有成功生成的图片计费。
  • 5.0 lite 开启 tools: [{"type":"web_search"}] 时,搜索次数在 usage.tool_usage.web_search 回显,并单独按加价项计费。

保存到文件:

bash
curl -s https://api.modelgo.ai/api/v3/images/generations \
  -H "Authorization: Bearer $MODELGO_API_KEY" -H "Content-Type: application/json" \
  -d '{"model":"doubao-seedream-5.0-lite","prompt":"a red ball on a wooden table","size":"2K","response_format":"b64_json"}' \
  | python3 -c 'import sys,json,base64; open("out.jpg","wb").write(base64.b64decode(json.load(sys.stdin)["data"][0]["b64_json"]))'

2. 参数说明

字段名、类型、默认值与模型支持范围均以官方文档为准;下表在官方字段之外标注了 ModelGo 当前的实际行为。

字段类型模型支持说明
modelstring全部必填。doubao-seedream-4.0 / doubao-seedream-5.0-pro / doubao-seedream-5.0-lite / doubao-seedream-5.0 / doubao-seedream-4.5
promptstring全部必填。画面内容描述;使用档位写法时在此描述构图比例
imagestring / string[]全部参考图 URL 或 data:image/<格式>;base64,<...>(格式小写)。多图参考 2–14 张;参考图数量 + 生成数量 ≤ 15 张
sizestring全部分辨率档位(缺省 2K;各模型可用档位见「模型与档位」),或显式像素 WxH(如 1280x720、2560x1440)
sequential_image_generationstring5.0 lite / 5.0 / 4.5 / 4.0组图开关:disabled(缺省)/ auto。5.0 pro 传 auto → 400
sequential_image_generation_options.max_imagesinteger5.0 lite / 5.0 / 4.5 / 4.0组图最大张数,缺省 15;仅 auto 时生效,允许范围以官方文档为准
streamboolean官方:5.0 lite / 4.5 / 4.0ModelGo 当前不支持流式:传 true → 400,本入口一次返回完整 JSON
response_formatstring全部url(缺省,链接 24 小时有效)/ b64_json
output_formatstring5.0 pro / 5.0 flash / 5.0 litejpeg(缺省)/ png。4.0 / 4.5 传入会由上游拒绝(400)
backgroundstring官方:5.0 pro / 5.0 flashopaque(缺省)/ transparent。ModelGo 目前仅对 5.0 pro 放行,其余模型 → 400
layer_decompositionboolean官方:5.0 pro / 5.0 flash图层拆分开关。ModelGo 暂未开放,传入 → 400
optimize_prompt_options.modestring全部standard(缺省)/ fast;官方注明 fast 在 5.0 flash / lite / 4.5 不支持
tools[].typestring5.0 liteweb_search(联网搜索);搜索次数按 web_search_calls 加价项计费
watermarkboolean全部是否加水印,缺省 true
seedint—网关兼容接受并透传;官方 4.0/5.0 文档未列出,行为由上游决定,新接入不建议使用
guidance_scalenumber—同上
  • 请求体中出现上表之外的字段 → 400,不会被忽略(这条比官方更严:官方对未知字段不保证报错)。
  • 按可交付档位选路。 网关优先选择能按所声明 size 交付的供应商;若没有供应商声明该档位,仍把请求交给可用供应商,由其最终裁决(不支持时返回 400)。

分辨率档位

size 可传档位(如 1K / 2K / 4K)或 宽x高(如 1280x720、2048x2048)。档位决定总像素量级,精确宽高由构图提示或显式 WxH 决定。各模型的可用档位与像素上下限不同,以上表常用值为例,完整约束以方舟官方文档为准;越界会返回 HTTP 400,不会静默降档或升档,也不产生费用。

参考图的要求

  • 必须是上游服务器能直接 GET 到的直链:无鉴权、无跳转、不依赖 Referer / Cookie。
  • 部分站点直链对非浏览器抓取返回 403,会导致请求失败,不计费。建议使用自有对象存储或 CDN 地址。

3. 完整示例(Python,方舟官方 SDK)

python
import os, requests
from volcenginesdkarkruntime import Ark

client = Ark(api_key=os.environ["MODELGO_API_KEY"], base_url="https://api.modelgo.ai/api/v3")

# 5.0 pro:档位 + 提示词里的构图比例
r = client.images.generate(model="doubao-seedream-5.0-pro",
                           prompt="一只橘猫坐在窗台上,16:9 横构图,胶片质感",
                           size="2K", watermark=False)
img = r.data[0]
print(r.model, img.size, r.usage.generated_images)
open("cat.jpg", "wb").write(requests.get(img.url, timeout=60).content)

# 5.0 lite:2K 缺省档(2048x2048)
l = client.images.generate(model="doubao-seedream-5.0-lite",
                           prompt="一只橘猫坐在窗台上,胶片质感",
                           size="2K", watermark=False)
open("cat-lite.jpg", "wb").write(requests.get(l.data[0].url, timeout=60).content)

# 多图参考
e = client.images.generate(model="doubao-seedream-5.0-pro",
                           prompt="把第一张图的猫放到第二张图的霓虹街景里",
                           image=["https://example-cdn.com/cat.jpg", "https://example-cdn.com/street.jpg"],
                           size="1280x720")
open("cat-neon.jpg", "wb").write(requests.get(e.data[0].url, timeout=60).content)

4. 计费口径

  • 按张计费:以 usage.generated_images 为结算数量,每张固定单价,与 size 档位无关。组图一次生成 N 张即按 N × 单价结算。
  • 两个入口计价一致:Ark 原生入口与 OpenAI 兼容入口读的是同一份计量(image_generation_calls = 实际生成张数),同一请求走哪个入口实收相同。
  • 每个模型一个单价:4.0 / 5.0 pro / 5.0 lite / 5.0 / 4.5 在控制台「模型列表」中各有一张价卡,单价不同(5.0 与 5.0 lite 同价)。
  • 请求时预授权冻结(按请求可能生成的张数),响应返回后按实际生成张数结算,差额退还。
  • 请求被拒(400)或生成失败不计费,预授权自动释放。
  • HTTP 200 但 data[] 中没有任何 url / b64_json(例如各条目均为 error)不计费。
  • 内容审核拒绝(如 OutputImageSensitiveContentDetected)返回 HTTP 400 并携带上游错误码,不计费、不重试。

5. 与官方文档的差异

以下差异是有意的网关行为,其余字段、取值范围、默认值与官方文档一致(与官方文档对齐)。

项目官方ModelGo
stream5.0 lite / 4.5 / 4.0 支持流式不支持,stream: true → 400;本入口一次返回完整 JSON
layer_decomposition5.0 pro / 5.0 flash 支持图层拆分暂未开放,传入 → 400(跟踪 shared/modelgo_prd#1366)
background5.0 pro / 5.0 flash仅 5.0 pro 放行,其余 → 400
seed / guidance_scale4.0/5.0 文档未列出兼容接受并透传,不保证生效
未知字段不保证报错严格拒绝,返回 400 并指出字段名
output_format5.0 pro / flash / lite一致;4.0 / 4.5 传入由上游 400

常见错误

现象原因处理
返回 400size 不在档位表内或 WxH 越界;缺 prompt;带了模型不支持或网关不开放的字段(如 stream、layer_decomposition);当前无供应商能出所请求档位按参数表修正或换档位
返回 400(4.0)传了该模型不提供的档位,或 WxH 过小改用该模型常用档位(如 2K),或换更大的 WxH
返回 400(5.0 lite / 5.0 / 4.5)size 低于该模型下限,或传了不提供的档位改用该模型常用档位(如 2K / 4K),或换更大的 WxH
返回 400(5.0 pro)传了 3K / 4K,5.0 pro 不提供该档位改用 1K / 1.5K / 2K 或 WxH
返回 400,metadata.upstream_reason=parameter_invalid 且 upstream_param=max_imagesmax_images 超出允许范围按官方范围取值
返回 400,message 为 model does not offer this inbound protocol该模型的公开协议不含所调用的入口(如国内站 5.0 系列只走 OpenAI 兼容接口;4.0 不开放 multipart /v1/images/edits)按模型详情页的协议列表选择入口
返回 400,metadata.upstream_error_code 为 OutputImageSensitiveContentDetected 等上游内容审核拒绝,不计费、不重试修改 prompt / 参考图后重试
生成失败上游无法下载 image 中的 URL换成公网可直接下载的直链
data[].url 下载 403 / 404链接已过 24 小时有效期重新生成;或改用 response_format: "b64_json"
返回 401API Key 无效或未带 Authorization 头核对 Key