Apimart
登录注册
如何使用 Seedream 5.0 Pro 图像 API

如何使用 Seedream 5.0 Pro 图像 API

手把手教你调用 Seedream 5.0 Pro API:认证、请求字段、同步与异步作业、轮询、webhook 以及保存生成的图像。

教程

你只需一个 POST 请求、一个 API key 和一个后续步骤,就能让 Seedream 5.0 Pro 跑起来: 提交作业,拿到一个 task_id,然后不断查询状态直到图像完成。如果你漏掉第二步,就拿不到最终文件。

这里是简短版本:

  • 我把请求发到 https://api.apimart.ai/v1/images/generations
  • 我加上 Authorization: Bearer YOUR_API_KEY
  • 我把 model 设为 doubao-seedream-5-0-pro
  • 我包含 promptsizen
  • 我用 文生图 来产生新的图像创意
  • 当我想让输出更贴近一张或多张参考图时,我用 图生图
  • 我会尽快存下图像 URL,因为它们在 24 小时后过期
  • 对于像 3K 图这类耗时较长的输出,我用异步作业,它可能需要约 35 到 50 秒
  • 我会关注成本,因为定价约为每张图 $0.0320

我最想记住的一点: 把 key 放在服务端,把 n 作为数字传递,并对较长的作业使用轮询或 webhook。

有几个细节比看起来更重要。例如,401 往往意味着 key 缺失或 Bearer 格式不对。403 往往意味着 key 有效,但账户不能使用该模型或余额不足。而如果我用 Base64 输出,我需要在浏览器中显示之前自己加上 data:image/...;base64, 前缀。

Seedream 5.0 Pro API:同步与异步 & URL 与 Base64 速查表
Seedream 5.0 Pro API:同步与异步 & URL 与 Base64 速查表

快速对比

项目我用它来做什么关键限制或说明
文生图仅凭 prompt 生成新场景无需输入图
图生图重新风格化、编辑、保持一致性最多 14 张参考图
URL 输出默认交付方式链接在 24 小时内过期
Base64 输出当我需要响应里直接带图像数据时响应载荷更大
同步请求测试和小作业大作业可能超时
异步请求批量作业和 3K 图需要轮询或 callback_url

简而言之: 本指南展示我会如何设置认证、构建请求体、在 T2I 和 I2I 之间选择、处理异步作业,并在不丢文件、不浪费开销的情况下保存结果。

2. 设置 API 访问与认证

2.1 创建你的 APIMart 账户并生成 API key

GccAi

前往 APIMart 网站并注册一个新账户 [8]。然后在你的控制台打开 API Key 管理页面并生成一个 API key [1][5]

立刻复制那个 key 并把它存在服务端。密钥管理器或环境变量是最安全的存放处。

绝不要把你的 API key 放进前端代码或公开仓库。如果有人拿到那个 key,他们就能使用你的账户。在 Node.js 中,用 process.env.API_KEY 存储它。在 shell 环境中,用 export API_KEY="your-key-here" [1][6]

在构建完整的请求流程之前,先发送一个小的 POST 请求以确认访问正常 [1][2]。如果你得到 200 OK 响应,说明你的 key 和权限都配置正确了。

之后,你就可以继续处理请求字段,包括 model 和 prompt。

2.2 设置 Base URL 与 Bearer 认证头

一旦你选好了 T2I 或 I2I 模式并准备好 key,在任何图像请求生效之前,你都需要先设置好认证。每个请求都要带上这些请求头:

请求头
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

Bearer 前缀很重要。漏掉它,请求就会失败 [2][5]。另外,Bearer 后面要正好用一个空格。

HTTP 状态码能帮你快速发现认证问题 [1][10]401 Unauthorized 错误通常意味着 key 缺失、无效,或没带上 Bearer 前缀 [1][10]403 Forbidden 错误通常意味着 key 本身有效,但账户没有模型访问权限或余额不足 [1][10]

一个不错的排查办法是先用 cURL 测试。如果 cURL 能跑通但你的应用不行,那 bug 多半出在你应用的请求代码里 [2][6]

认证设置好后,下一步是构建图像请求体。

3. 构建一个 Seedream 5.0 Pro 图像请求

Seedream 5.0 Pro

3.1 必需字段:Model、Prompt、Size 和图像数量

认证设置好后,下一步是构建 JSON 请求体。

一个有效的请求体需要四个字段:modelpromptsizen

对于 Seedream 5.0 Pro,把 model 设为 doubao-seedream-5-0-pro [1]prompt 字段接受一段自然语言描述,最多支持 5,000 个字符 [2]size 字段控制输出尺寸或宽高比。常见值包括 1024x10242K,以及像 1:116:9 这样的宽高比 [1][2]n 字段设置要生成多少张图像,通常从 1 到 15 [1][6]

有一个小细节可能会绊倒人:n 必须是整数,而不是字符串。如果你传 "1" 而不是 1,API 会返回校验错误 [1][5]

3.2 可选字段:参考图、Web 搜索和异步作业

image_urls 是图生图模式的主要字段。用它以 URL 或 Base64 data URI 的形式发送最多 14 张参考图。每张图必须小于 10 MB,并使用 1:3 到 3:1 之间的宽高比 [1]。如果你用 Base64,请包含完整的 Data URI 前缀 data:image/jpeg;base64,,否则请求会失败 [1][5]

web_search 能帮上事实性或实时性的 prompt,比如时事或品牌 logo [4][7]。对于大多数标准图像生成,你用不到它。

对于异步或批量作业,callback_url 接受一个公开的 HTTPS 端点,APIMart 会把任务完成载荷 POST 到那里 [2]

可选参数类型何时使用
image_urlsArray图生图、风格迁移、主体一致性
web_searchBoolean时事、logo、事实性的真实世界参考
callback_urlString异步作业、批量生成、3K 图
seedInteger可复现输出;范围:-1 到 2,147,483,647
output_formatString需要透明背景用 png;标准 Web 用途用 jpeg

3.3 cURL 和 JavaScript 的示例 API 调用

这是一个用于生成单张 1024×1024 图像的最小可用 cURL 请求:

curl --request POST \
  --url https://api.apimart.ai/v1/images/generations \
  --header "Authorization: Bearer $API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "doubao-seedream-5-0-pro",
    "prompt": "A sunlit mountain trail in autumn, photorealistic, wide angle",
    "size": "1024x1024",
    "n": 1
  }'

下面是同样的请求在 Node.js 中用 fetch 的写法:

const response = await fetch("https://api.apimart.ai/v1/images/generations", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.API_KEY}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "doubao-seedream-5-0-pro",
    prompt: "A sunlit mountain trail in autumn, photorealistic, wide angle",
    size: "1024x1024",
    n: 1
  })
});

const data = await response.json();
console.log(data);

把这个请求保持在服务端。绝不要在客户端代码中暴露你的 API key。

一旦你提交了请求,下一步就是解析响应载荷。

4. 处理响应并运行常见的图像工作流

4.1 解析图像 URL、Base64 输出和错误对象

请求完成后,无论你发送的是一张还是多张图像,响应的结构都保持不变。

成功的响应会返回一个 JSON 对象,包含四个顶层字段:modelcreated(一个 Unix 时间戳)、data(一个图像对象数组)和 usage [6]。每张生成的图像都会出现在 data 内,根据你请求的格式,表现为 urlb64_json 字符串。如果 n 大于 1,data 里会为每个输出包含一个图像对象。

如果你用了 URL 格式data 中的每一项会把图像链接存在 .url 里。你可以把那个值设为浏览器中图像的 src。有一点要注意:这些是临时签名链接,24 小时后过期 [6]。对于生产应用,请立刻下载文件并保存到永久存储,而不是存储 URL。

如果你用了 Base64 格式data 中的每一项会把原始字符串存在 .b64_json 里。它_不_包含 data:image/...;base64, 前缀 [6]。要在浏览器中显示它,请自己加上那个前缀:

img.src = "data:image/png;base64", + data.b64_json;

要在 Python 中把它保存为文件,先解码:

import base64

image_data = base64.b64decode(response["data"][0]["b64_json"])
with open("output.png", "wb") as f:
    f.write(image_data)

如果请求失败,响应会包含一个 code 字段和一个 message 字段 [6]400 通常意味着不支持的尺寸或无效参数。401 意味着请求未授权。每次都把这两个字段记录下来。大多数情况下,message 会直接指向问题所在。

用这些字段来决定你应该存储、解码还是显示输出。


4.2 你可以用 Seedream 5.0 Pro 生成的三种常见图像类型

这三种模式与前面讲过的模式一一对应:纯文本、单参考和多参考。

  • 纯文本营销视觉。 对于需要更多细节的活动素材,使用 3K 分辨率(size: "3K"),并写一个结构化的 prompt,从主体和场景布局开始,然后加上光照、风格和色彩细节。3K 生成需要 35–50 秒,所以异步通常更合适。

  • 单参考产品变体。 使用图生图模式,在 image_urls 中放一张参考图,并写一个聚焦的 prompt,只改动你想改的东西,比如背景、光照或表面纹理。这能让产品的形状和细节比从零生成更贴近源图像。对于 3K 变体,使用 callback_url,因为每个任务可能需要约 40 秒 [2]

  • 面向品牌和角色一致性的多参考一致性。 如果你需要某个角色或品牌元素在多张图像中保持一致,通过 image_urls 传入最多 14 张参考图 [2][3]。当从参考输入创建多个输出时,把 sequential_image_generation 设为 auto,这样你在保留多样性的同时不会丢失视觉一致性 [5][4]。这非常适合社交内容系列、产品目录和角色设定图。

当响应格式与工作流相匹配时,这些模式往往效果最好。


4.3 同步与异步请求 & URL 与 Base64 响应

用这个对比来在上线集成之前选定响应格式。

同步异步
延迟阻塞直到生成完成立即返回一个 task ID
可靠性容易超时,尤其在 3K 时干净利落地处理长时间运行的作业
复杂度一次请求,一次响应需要轮询或一个 webhook 端点
最适合原型开发、低分辨率预览批量作业、3K 导出、生产规模

对于异步作业,在第一次轮询前先等约 20 秒,然后每 3 秒查一次 [2]。在生产中,callback_url 是更好的选择,因为它避免了轮询循环并减少了服务器开销 [2][9]

URL 响应Base64(b64_json
带宽低 —— JSON 中的短字符串高 —— JSON 中数 MB 的字符串
存储临时(24 小时后过期)[6]存储在响应体中
交付两步:获取 JSON,再下载图像一步:图像数据就在响应里
浏览器风险大字符串可能让某些环境崩溃 [6]

默认使用 URL 响应。只在你需要图像数据出现在同一个响应里时才切换到 Base64。

5. 可靠的 Seedream 5.0 Pro 集成最终检查清单

在你第一次成功的测试调用之后、在你扩展到生产之前,过一遍这份检查清单。这是一个简单的办法,用来抓住那些常常让上线戛然而止的问题。

认证与 key 安全。 把你的 API key 放在环境变量或密钥管理器里。用 Authorization: Bearer <your_key> 从你的后端发送请求。

在发送之前校验你的请求参数。 检查 model 字符串,把 n 作为整数传递,把 image_urls 保持在允许的限制之内,并确保请求的 size 是受支持的。

对于比快速预览耗时更长的作业,相应地调整你的交付路径。 根据输出大小设置超时,并对长时间运行的作业使用 callback_url 而不是轮询。

图像就绪后,把交付当作一个存储问题,而不仅仅是一个响应问题。 如果你用 URL 输出,请立刻下载文件并把它移入永久存储。签名 URL 在 24 小时后过期 [6]

在扩大规模之前,先在一小批上测试 prompt。 Seedream 5.0 的计费约为每张生成图像 $0.0320 [2]。记录 createTimecompleteTimecostTime,这样你就能监控延迟和支出 [2]

常见问题

::: faq

拿到 task_id 之后,我怎么查询一个异步图像作业?

用返回的 task_id 来查询你异步图像作业的状态。

向 API 给你的状态端点发送一个 GET 请求。在许多 API 中,它看起来像这样:

  • /v1/tasks/{task_id}
  • 或者一个带 task_id 的查询式端点

在生产使用中,创建任务后先等约 20 秒,再做第一次状态检查。之后每 3 秒轮询一次,直到作业状态显示为 completed

作业完成后,读取响应载荷并从中取出图像 URL。 :::

::: faq

我什么时候该用 URL 输出而不是 Base64?

大多数情况下用 URL 输出。它给你一个指向生成图像的直接链接,这让你更容易把它接入 Web 或移动应用。

只在你的配置需要图像数据内联在响应体中时才用 Base64,比如基于内存的处理,或当你想省掉第二次请求时。对于高分辨率的 4K 素材,URL 输出通常更高效。 :::

::: faq

避免丢失生成图像的最佳办法是什么?

及时保存生成的图像,因为 API 图像链接只在 72 小时内有效。

Seedream 5.0 Pro API 是异步运行的。这意味着你不会立刻拿到图像 URL。你先拿到一个 task ID,然后用那个 task ID 去获取图像 URL。

为避免丢失输出,你有两个主要选择:

  • 用 task ID 轮询,直到图像就绪
  • 使用一个回调 URL,让你的系统在链接过期前接收、捕获并存储图像

如果你等太久,URL 就会过期,图像可能就丢了。 :::

看完就试试

去模型市场挑选你想要的模型

在 APIMart 模型市场尝试聊天、图像和视频模型,用统一 API 快速体验模型能力。

聊天模型图像模型视频模型
进入模型市场