图片

POST /v1/images 的生图、改图(含遮罩)、图生图与变体:参数、响应、流式、计费、限额与错误。

更新于 2026-10-23阅读约 8 分钟

查看 .md
http
POST https://api.scirouter.cn/v1/images/generations
POST https://api.scirouter.cn/v1/images/edits
POST https://api.scirouter.cn/v1/images/variations

接口格式与 OpenAI Images API 一致,OpenAI 官方 SDK 将 base URL 设为 https://api.scirouter.cn/v1 即可调用。

只能调用生图模型,即 GET /models 中 scirouter.kind 为 image 的模型。scirouter.image 说明该模型支持的尺寸、质量档位、单次最多张数、是否支持改图与变体的生成方式。模型种类不符时的错误见错误。

生图

#
bash
curl https://api.scirouter.cn/v1/images/generations \
  -H "Authorization: Bearer $SCIROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "YOUR_IMAGE_MODEL_ID",
    "prompt": "一张钙钛矿太阳能电池结构的示意图,扁平插画风格",
    "size": "1536x1024",
    "quality": "high",
    "n": 1
  }' | jq -r '.data[0].b64_json' | base64 --decode > out.png

Python:

python
import base64, os
from openai import OpenAI

client = OpenAI(base_url="https://api.scirouter.cn/v1", api_key=os.environ["SCIROUTER_API_KEY"])
img = client.images.generate(
    model="YOUR_IMAGE_MODEL_ID",
    prompt="一张钙钛矿太阳能电池结构的示意图,扁平插画风格",
    size="1536x1024",
    quality="high",
)
open("out.png", "wb").write(base64.b64decode(img.data[0].b64_json))

Node:

javascript
import OpenAI from 'openai'

const client = new OpenAI({ baseURL: 'https://api.scirouter.cn/v1', apiKey: process.env.SCIROUTER_API_KEY })
const img = await client.images.generate({ model: 'YOUR_IMAGE_MODEL_ID', prompt: '一张图形摘要', size: '1024x1024' })
字段必填说明
model是生图模型的 id,或平台为其配置的别名
prompt是画面描述。长度上限由模型决定,常见为 32,000 字符
n否单次生成的张数,缺省为 1,上限为模型的 scirouter.image.max_outputs
size否宽x高。须为模型 sizes.presets 中的值,或满足 sizes.custom 的规则(宽高均为 multiple_of 的倍数,长宽比、像素与边长在范围内);模型接受 auto 时可写 auto。不写时使用模型的 sizes.default
quality否模型 qualities 中的一档,不写时使用 default_quality;模型 quality_auto 为 true 时可写 auto。不接受 standard / hd 等旧值
background否auto / transparent / opaque。透明背景须模型支持(transparent),且输出格式为 png 或 webp
output_format否模型 output_formats 中的一种,缺省为 png
output_compression否0–100,只对 jpeg / webp 生效
response_format否b64_json(缺省)或 url,见响应
stream / partial_images否见流式响应
moderation否平台固定按 auto 发送,写 low 时改为 auto
user / safety_identifier / style否接收但不转给上游(style 是 DALL·E 时代的退役参数)。其他无法识别的字段同样丢弃,记录在调用记录的参数中

尺寸不合规时返回 400 validation_failed,param 为 size,details.reason 指明不满足的规则(size_multiple_of、size_ratio、size_max_edge 等)。

改图与图生图

#
bash
curl https://api.scirouter.cn/v1/images/edits \
  -H "Authorization: Bearer $SCIROUTER_API_KEY" \
  -F "model=YOUR_IMAGE_MODEL_ID" \
  -F "image[]=@figure.png" \
  -F "image[]=@reference.jpg" \
  -F "mask=@mask.png" \
  -F "prompt=把背景换成浅灰色,保留主体" \
  -F "response_format=b64_json"
项规则
请求格式multipart/form-data
图片字段一张图写 image,多张写 image[](官方 SDK 的发送方式;image[0]、image[1] 也可识别)。第一张为待修改的图
图片张数上限为模型的 scirouter.image.edit.max_images(不超过 16)。模型的 edit 为 null 时不支持改图
图片格式PNG、JPEG、WebP,按文件内容识别,不看扩展名
图片与请求体大小见限额
mask(可选)带透明通道的 PNG,与第一张图同宽同高,透明区域为待修改区域。模型 edit.mask 为 false 时不接受
其他字段与生图相同。input_fidelity 只在模型声明支持时转发,否则丢弃
  • 遮罩是给模型的参考,模型不一定严格按遮罩的形状修改。
  • 不带遮罩、带多张参考图时为图生图:按描述用这几张图生成新图。

变体

#

/images/variations 在 OpenAI 侧已退役(DALL·E 2 / 3 也已下线)。平台保留该接口(multipart,一张 image,可带 n、size、response_format),按模型的 scirouter.image.variations 处理:

取值平台的处理
native原样转给仍支持该接口的上游
via_edit用该图调用改图接口,提示词为平台的一句固定文字(「生成这张图片的一个变体:保持主体、构图与风格,细节可以不同。」),按改图计费
none400 validation_failed,details.reason 为 variations_unsupported

响应

#
json
{
  "created": 1760918400,
  "data": [{ "b64_json": "iVBORw0KGgo…" }],
  "background": "opaque",
  "output_format": "png",
  "quality": "high",
  "size": "1536x1024",
  "usage": {
    "input_tokens": 24, "input_tokens_details": { "text_tokens": 24, "image_tokens": 0 },
    "output_tokens": 6208, "output_tokens_details": { "image_tokens": 6208, "text_tokens": 0 },
    "total_tokens": 6232
  },
  "scirouter": { "request_id": "req_…", "cost_quota": 186240, "…": "…" }
}

数值为示例。

response_format返回内容
b64_json(缺省)上游返回的原始字节,不重新压缩,保留透明背景;只在文件元数据中加入 AI 生成内容标识,见 AI 生成内容标识
url图片存入平台的对象存储,data[].url 有效期为 1 小时(平台运行参数可调),对象 24 小时后删除。流式不支持 url
  • size、output_format 按实际生成的图片填写。
  • usage 为本次计费所用的用量。上游未返回用量、平台按估算扣费时,scirouter.estimated 为 true。

流式响应

#

请求带 "stream": true 时返回 text/event-stream:

  • 生成期间每隔几秒发送一行 : ping 心跳。
  • 每张图生成后发送一个完成事件:生图为 image_generation.completed,改图与变体为 image_edit.completed。字段包括 b64_json、size、quality、output_format、usage;用量只在最后一个事件中给全,之前的事件为 0。全部图片发送后结束。
  • partial_images 接收但不发送中间图。OpenAI 的官方说明中,中间图本就可能少于请求数量或没有,SDK 照常处理。
  • 出错时发送一帧带 error 的数据,SDK 抛出异常。

高质量大图通常需要一到两分钟。非流式请求平台最多等待 270 秒,超过后会被前置的网络设施断开。大尺寸、高质量的请求使用流式,流式有心跳,不受该限制。

计费

#

按 token 计费,单价见定价或 scirouter.pricing:

计价维度内容
input_tokens文本输入
image_input_tokens图像输入(改图、图生图的输入图)
image_output_tokens图像输出
两个缓存输入维度直接调用图片接口时上游一般不返回

单次生成多张、带多张参考图,均体现在 token 数中。

  • 平台按上游返回的用量扣费;上游未返回时,按模型的估算表与实际出图的尺寸扣费(scirouter.estimated)。
  • 开始前按估算的上界预扣,结束后多退少补。失败、超时与审核拦截均不扣费。
  • 少数模型按张计费(scirouter.image.metering 为 per_image,维度为 image_count),此时响应不含 usage。

限额

#
项目上限
请求体64 MB(413 payload_too_large)
单张输入图20 MB,边长 8192,像素 4,000 万
并发的图片请求个人 4 个,团队 16 个,与站内绘图合计。超出时返回 429 rate_limited,details.scope 为 images
非流式等待270 秒

每分钟请求数照常按套餐计算;图片的 token 不计入每分钟 token 数的限频。

幂等

#

带 Idempotency-Key 时,同键重试的结果:

情况结果
同键的请求仍在处理409
url 模式,已完成直接返回该次的结果
b64_json 与流式,已完成结果不保存,返回 409 idempotency_conflict,details.reason 为 result_not_replayable。不会重复生成、重复扣费

b64_json 与流式模式下需要再次生成时,更换 Idempotency-Key。

判断是否为同一请求时按字段与图片内容比较,同一张图重新上传、multipart 的分隔符不同不影响判断。

错误

#
状态码code触发条件说明
400validation_failed模型种类不符:对话模型调用图片接口,或生图模型调用对话接口details.reason 为 model_kind_mismatch
400validation_failed尺寸、质量、张数、格式或遮罩不符合模型要求param 指明字段
400validation_failed模型不支持改图或变体details.reason 为 edit_unsupported / variations_unsupported
400moderation_blocked上游审核未通过平台错误码 scirouter_code 为 CONTENT_FILTERED(对话接口此处为 content_filter)。不扣费
502upstream_error上游返回了响应,但不是可用的图片details.reason 为 bad_image_output。不扣费
503model_unavailable模型有计价维度尚未定价details.reason 为 model_offline

其他错误(认证、余额、限频、上游超时)与对话接口相同,见错误码。

AI 生成内容标识

#

按《人工智能生成合成内容标识办法》,平台在每张图片的文件元数据中写入 AI 生成内容的隐式标识(AIGC 字段),不在画面上叠加可见角标。

  • 调用方将图片发布或提供给公众时,须按规定自行添加显式标识。
  • 平台按规定留存提供记录(调用方、时间与图片的哈希,不含图片与提示词)不少于六个月。
  • 站内百宝箱「绘图」生成的图片直接带有「AI生成」角标。
  • 开始

  • 接入编程工具

  • 接口

  • 专题

  • 网页端指南

↑ ↓ 选择 · Enter 打开 · Esc 关闭

请验证你的身份

为了保护你的账户,这个操作需要再验证一次。

验证码已发送到你绑定的手机号。5 分钟内的其他敏感操作不会再问。

Cookie 偏好

您可以随时回到这里修改。页脚有常驻入口。

必要

维持登录状态、记住主题与语言偏好。没有它们本站无法正常工作,因此无法关闭。

统计

了解哪些功能有人用、用户在哪一步流失。只收集维度(页面、操作类型、计数),不收集您输入的任何内容。

本站不加载任何第三方统计脚本,也不做会话录屏。完整说明