OpenAI 兼容
图片生成(Images)
用 OpenAI Images 格式生成图片:地址、参数、响应和示例;以及 Gemini 图片模型该用哪个接口。
与 OpenAI 的 Create image 接口兼容。
POST https://noviahub.com/v1/images/generations适用于端点标签里有图片的模型,例如 gpt-image-2(在模型&价格页面查看)。
| 请求头 | 必填 | 说明 |
|---|---|---|
Authorization |
是 | Bearer <你的 API 密钥> |
Content-Type |
是 | application/json |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model |
string | 是 | 模型 ID,例如 gpt-image-2。不传时网关会按 dall-e 处理,NoviaHub 没有这个模型,于是返回 503。 |
prompt |
string | 是 | 图片描述。网关本身不检查,但模型需要它。 |
n |
integer | 否 | 生成几张,1 到 128;不传或传 0 按 1 张处理,超过 128 返回错误。 |
size |
string | 否 | 尺寸,如 1024x1024。中间要用英文字母 x,不能用乘号 ×,否则返回错误。 |
quality |
string | 否 | 画质,取值由模型决定。 |
response_format |
string | 否 | 返回形式,如 b64_json 或 url,取决于模型是否支持。 |
background、output_format、output_compression、moderation、style、partial_images、input_fidelity |
— | 否 | 按 OpenAI 规范原样转发,是否支持取决于模型。 |
stream |
boolean | 否 | 流式返回(模型支持时)。 |
user |
— | 否 | 用户标识,原样转发。 |
不在上表中的字段不会转发给上游。
curl https://noviahub.com/v1/images/generations \ -H "Authorization: Bearer $NOVIAHUB_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-image-2", "prompt": "一只在窗台上晒太阳的橘猫,水彩风格", "size": "1024x1024", "n": 1 }'import base64import os
from openai import OpenAI
client = OpenAI( base_url="https://noviahub.com/v1", api_key=os.environ["NOVIAHUB_API_KEY"],)
result = client.images.generate( model="gpt-image-2", prompt="一只在窗台上晒太阳的橘猫,水彩风格", size="1024x1024", n=1,)
image = result.data[0]if image.b64_json: with open("cat.png", "wb") as f: f.write(base64.b64decode(image.b64_json))else: print(image.url)import { writeFile } from 'node:fs/promises'
import OpenAI from 'openai'
const client = new OpenAI({ baseURL: 'https://noviahub.com/v1', apiKey: process.env.NOVIAHUB_API_KEY,})
const result = await client.images.generate({ model: 'gpt-image-2', prompt: '一只在窗台上晒太阳的橘猫,水彩风格', size: '1024x1024', n: 1,})
const image = result.data?.[0]if (image?.b64_json) { await writeFile('cat.png', Buffer.from(image.b64_json, 'base64'))} else { console.log(image?.url)}| 字段 | 说明 |
|---|---|
created |
创建时间(Unix 秒)。 |
data[] |
生成的图片,每张一项。图片内容在 b64_json(Base64 编码)或 url 字段,取决于模型。 |
usage |
用量(模型提供时)。 |
{ "created": 1790609867, "data": [{ "b64_json": "iVBORw0KGgo=" }], "usage": { "input_tokens": 10, "output_tokens": 1056, "total_tokens": 1066 }}b64_json 是 Base64 编码的图片文件,解码后保存即可,如上面示例代码所示。
计费方式(按 token 还是按张)和单价,以模型&价格页面上该模型的标注为准。
Gemini 图片模型
Section titled “Gemini 图片模型”gemini-3.1-flash-image 这类 Gemini 图片模型,有两种调用方式:
- Gemini 原生接口(推荐):
POST /v1beta/models/gemini-3.1-flash-image:generateContent,用法见 generateContent。生成的图片在响应的candidates[].content.parts[].inlineData里(mimeType和 Base64 编码的data)。 - Chat Completions 接口:
POST /v1/chat/completions,model填这个图片模型即可,网关会自动请求模型同时输出文字和图片。返回的图片以 Markdown 图片的形式写在choices[0].message.content里,格式为。- 可以用
extra_body.google.image_config设置宽高比和尺寸,字段名是aspect_ratio、image_size(必须用下划线写法,驼峰写法会被拒绝)。
- 可以用
| HTTP 状态码 | 原因 |
|---|---|
| 400 | n 超过 128(n must be an integer between 1 and 128)、size 里用了乘号 ×,或请求体不是合法 JSON。 |
| 401 | 密钥无效、已禁用、已过期或额度已用完。 |
| 403 | 密钥不允许使用这个模型、IP 不在白名单,或账户余额不足。 |
| 500 | 用本接口调用了 Gemini 图片模型(convert_request_failed)。 |
| 503 | 模型 ID 写错或没传,或该模型当前没有可用线路。 |
完整说明见错误码与排查。