Monoize
API 使用指南

图片生成

用 Images 端点生成和编辑图片,或在 Responses 中使用内置图片工具。

LynShen 提供两种生成图片的方式:

方式端点适用场景
Images APIPOST /v1/images/generations、POST /v1/images/edits只需要图片。参数简单,兼容 OpenAI SDK 的 images 接口。
Responses 内置工具POST /v1/responses,tools 中加入 image_generation需要模型在对话中按需生成图片。

Chat Completions 不能返回图片。模型在 Chat 中输出图片时,网关返回 HTTP 502 unsupported_output_media。

用 /v1/models 查询可用的图片模型。模型广场中的示例有 gpt-image-2、grok-imagine-image。

生成图片

curl https://api.lynshen.org/v1/images/generations \
  -H "Authorization: Bearer $LYNSHEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "黎明时分的灯塔,水彩风格",
    "size": "1024x1024",
    "quality": "medium"
  }' | python3 -c "import sys,json,base64; d=json.load(sys.stdin); open('out.png','wb').write(base64.b64decode(d['data'][0]['b64_json']))"

请求字段

字段说明
model必填。
prompt必填。
n生成数量,默认 1。大于 1 时,网关把请求拆成 n 个独立请求并行执行,每个单独计费。部分失败时,只返回成功的图片。
size、quality、background、output_format、moderation、input_fidelity、style图片选项。网关原样转发,可用值由上游模型决定。
output_compression0 到 100 的整数。
stream设为 true 时返回 SSE。要求 n 为 1。

响应

{
  "created": 1791731777,
  "data": [{ "b64_json": "iVBORw0KGgo...", "revised_prompt": "……" }],
  "output_format": "png",
  "quality": "medium",
  "size": "1024x1024",
  "usage": { "input_tokens": 10, "output_tokens": 100, "total_tokens": 110 }
}
  • 图片通常以 Base64 形式放在 b64_json 中。上游只返回链接时,条目中是 url。网关不托管图片。链接会过期,请及时下载。
  • revised_prompt 是上游改写后的提示词。上游没有返回时,没有这个字段。
  • output_format、quality、size、background 是上游报告的实际值。所有图片的值相同时才出现在顶层。

编辑图片

用 multipart/form-data 上传图片:

curl https://api.lynshen.org/v1/images/edits \
  -H "Authorization: Bearer $LYNSHEN_API_KEY" \
  -F model="gpt-image-2" \
  -F prompt="在海面上加一艘红色小船" \
  -F 'image[]=@input.png' \
  -F mask=@mask.png
  • image 或 image[] 可以出现 1 到 16 次。第一张是主图。
  • mask 可选,最多一个,使用 PNG 透明区域标出要编辑的位置。

也可以用 JSON 提交图片引用:

curl https://api.lynshen.org/v1/images/edits \
  -H "Authorization: Bearer $LYNSHEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "在海面上加一艘红色小船",
    "images": [{ "image_url": "https://example.com/input.png" }],
    "mask": { "image_url": "data:image/png;base64,iVBORw0KGgo..." }
  }'

每个 images 条目和 mask 必须恰好包含 image_url 或 file_id 之一。image_url 可以是 HTTPS 地址,也可以是 Base64 数据 URL。

流式返回

图片生成可能需要几十秒。设置 "stream": true 可以让连接保持活动:

curl -N https://api.lynshen.org/v1/images/generations \
  -H "Authorization: Bearer $LYNSHEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-image-2","prompt":"黎明时分的灯塔","stream":true}'
: heartbeat

event: image_generation.completed
data: {"type":"image_generation.completed","b64_json":"iVBORw0KGgo...","created_at":1791730261,"output_format":"png","size":"1024x1024","usage":{...}}

data: [DONE]
  • 网关立即发送一个心跳注释。之后 15 秒内没有数据时,再发送一个心跳。
  • 每张完成的图片对应一个 image_generation.completed 事件。编辑接口的事件名是 image_edit.completed。
  • 网关不发送局部预览图。
  • 失败时发送 event: error,数据为 {"type":"error","error":{...}},然后是 data: [DONE]。

Responses 内置图片工具

import base64, os
from openai import OpenAI

client = OpenAI(base_url="https://api.lynshen.org/v1", api_key=os.environ["LYNSHEN_API_KEY"])

response = client.responses.create(
    model="gpt-5.5",
    input="画一座黎明时分的灯塔,并用一句话描述它。",
    tools=[{"type": "image_generation", "size": "1024x1024", "quality": "low"}],
)
for item in response.output:
    if item.type == "image_generation_call" and item.result:
        with open("lighthouse.png", "wb") as f:
            f.write(base64.b64decode(item.result))
print(response.output_text)

只有支持图片工具的上游模型可以使用这种方式。模型不支持时,网关返回错误。

注意事项

  • 请求体上限为 50 MiB,包括上传的图片。
  • 网关不提供 POST /v1/images/variations。
  • 不同图片模型支持的 size、quality 等取值不同。不支持的取值由上游返回错误。

本页目录