图片生成
POST https://api.mafdet.ai/v1/chat/completions
图片生成走的是 chat 端点,没有单独的 images 端点。你发送一个普通的 chat 请求,生成的 图片随消息一起返回。
模型
| 模型 | 价格(输出) | 每张图约 | 说明 |
|---|---|---|---|
gemini-3-flash-lite-image | $36 / 100 万 token | $0.04 | 最便宜,返回 JPEG |
gemini-3-image | $72 / 100 万 token | $0.08 | 返回 PNG |
gemini-3-pro-image | $144 / 100 万 token | $0.16 | 质量最高,返回 PNG |
别被「每 100 万 token」吓到——图片模型的输出 token 是图片 token, 一张图固定约 1,120 个,所以真正该看的是右边那列。详见计费。
三者同时也接受图片输入(文本 + 图片 → 图片)。
请求
没有特别之处——就是一个用图片模型的 chat 请求:
curl https://api.mafdet.ai/v1/chat/completions \
-H "Authorization: Bearer $MAFDET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3-image",
"messages": [{ "role": "user", "content": "白色背景上的一辆红色自行车" }]
}'
没有 size、quality、n 参数——Gemini 的 chat 接口不接受它们,Mafdet 也不会臆造。
响应
图片不在 message.content 里(它通常是 null),而在
choices[0].message.images[],每项携带一个 data URI:
{
"choices": [
{
"message": {
"role": "assistant",
"content": null,
"images": [
{ "image_url": { "url": "data:image/png;base64,iVBORw0KGgo..." } }
]
},
"finish_reason": "stop"
}
]
}
流式:"stream": true 时整张图在单个 chunk 中以
choices[0].delta.images[].image_url.url 一次到达。只读 delta.content 的客户端会静默丢图
——必须同时读 delta.images。
MIME 类型因模型而异,并由 data URI 自身携带(gemini-3-flash-lite-image → JPEG,
其余两个 → PNG)。
计费
按 输出 token 计费,与普通 chat 一致——没有"每张图"这个计价单位, 只是一张图消耗的 token 数是固定的,所以折算得出来。
一张标准图约 1,120 个 image token(与你设置的 max_tokens 无关):
| 模型 | 换算 | 每张图 |
|---|---|---|
gemini-3-flash-lite-image | 1,120 × $36 ÷ 100 万 | $0.040 |
gemini-3-image | 1,120 × $72 ÷ 100 万 | $0.081 |
gemini-3-pro-image | 1,120 × $144 ÷ 100 万 | $0.161 |
另外两笔小额:你的提示词按输入价计费(通常几十个 token,可忽略);
gemini-3-pro-image 常会随图返回一段文字说明,那部分按输出价计费,
所以它单次调用的实付通常落在 $0.18–0.20。
分辨率不可选。 接口没有 size 参数,分辨率由模型决定,因此上表就是你会遇到的价格,
不存在"选个大尺寸把账单翻几倍"的情况。
和文本模型比是不是很贵
看「每 100 万 token」的话,gemini-3-image 的 $72 是 gemini-3-flash($10.80)的 6.7 倍。
但单次调用的实际消耗完全不同:一次文本回复可能几百到几千 token(带思考的模型更多),
而一张图固定 1,120 个。所以单次调用的成本其实是同一量级。
由于单请求成本上限同样生效,gemini-3-pro-image 的输出上限已调校为「一张图刚好放得下」;
不会出现「只生成半张图却按整张计费」——被截断的生成不会作为成功图片返回。
在 Playground 中
图片模型在模型选择器中带有输出徽标。生成的图片可预览、可下载,但 base64 不随会话持久化: 重新打开已保存的会话会看到"该图片未保存"的占位提示。Playground 调用消耗 Playground 额度, 不动 API 钱包。
错误
内容策略拒绝、余额不足、provider 故障均以普通 chat 错误形式返回,见错误码。