Skip to main content
RuAPI 提供两个系列的图像生成模型:Gemini Image(也就是俗称的 Nano Banana)和 GPT Image。它们的调用方式完全不同,这是动手之前必须先搞清楚的一点。USDT 计费,无需外币卡。
Gemini 图像模型不走 /v1/images/generations。 请求要发到 https://www.ruapi.ai/v1/chat/completions——和普通对话是同一个地址,生成的图片直接夹在回复正文里。详见「方式一」。

可用模型

准确的价格见主站 价格页面。Gemini 系列按次计费(一张图一口价),gpt-image-2 按 token 计费(图越大、质量越高越贵)。

接口地址与鉴权

  • Gemini 图像模型:POST https://www.ruapi.ai/v1/chat/completions
  • GPT Image:POST https://www.ruapi.ai/v1/images/generations(生成),POST https://www.ruapi.ai/v1/images/edits(改图)
  • Base URL:https://www.ruapi.ai/v1。用 SDK 时只填这一项,上面的完整地址由 SDK 自己拼出来
  • 鉴权:请求头带 Authorization: Bearer sk-你的KEY(在控制台「令牌管理」页创建)
下面的 curl 示例会把图片直接存成当前目录下的文件,换上你自己的 KEY 就能用。适用于 macOS、Linux,以及 Windows 上的 Git Bash 或 WSL;如果用的是 Windows 自带的 cmd 或 PowerShell,请用 Python 示例。如果回复里没有图片,命令会把接口的完整返回打印出来,里面会写明原因。

方式一:Gemini Image —— 走 /v1/chat/completions

Gemini 图像模型的请求发到 https://www.ruapi.ai/v1/chat/completions,写法和跟文本模型对话完全一样,只是回复里带的是图片。
图片是以 Markdown data URI 的形式内联在 choices[0].message.content 里的 —— 没有单独的图片字段。响应长这样:
base64 要从正文里取出来。下面的示例会自动取出并存成图片文件。

文生图

模型偶尔只回一句话、不出图,这样的调用和出图一样计费。为了避免这种情况,提示词里请明确写**「生成一张图片:……」**;如果还是没有图,换个说法再试。
一次响应里可能有多张图,所以 Python 示例里用的是 findall 而不是 search;curl 命令只保存第一张。模型几乎总会在图片旁边附一句简短的文字说明。

图生图(编辑)

要改一张已有的图,按 vision 模型的格式传进去即可:content 用数组,里面放 text 和 image_url 两部分。url 既可以是公网链接,也可以是 data URI。下面的示例可以直接运行;要改你自己的图,把 url 里的链接换掉。
输入图的宽高比会被保留,结果不会被裁成正方形。

多轮连续修图

模型的回复可以原样塞回 messages 里当作 assistant 消息 —— 其中的 Markdown data URI 会被识别,图片将作为下一轮的输入。这样就能做「改成黑白」→「再加个白边」这种连续编辑。
每一轮都是一次独立的付费调用。另外,带 base64 图片的历史会让请求体迅速膨胀,别把超过两三张的历史图都塞进上下文。

支持的输入图片格式

image/png、image/jpeg、image/webp、image/heic、image/heif。其他格式会被拒绝,报 mime type is not supported by Gemini。

Google 原生格式

如果你本来就在用 Google GenAI SDK,同一个密钥也能按 Google 自己的格式调用,地址是 https://www.ruapi.ai/v1beta/models/模型ID:generateContent:
这条路径下图片是结构化返回的 —— 在 candidates[0].content.parts[].inlineData.data(base64),不用解析 Markdown。如果你不需要兼容 OpenAI SDK,这个方式更省事。

方式二:GPT Image —— 走 /v1/images/generations

gpt-image-2 用的是 OpenAI 标准的图片生成格式,请求发到 https://www.ruapi.ai/v1/images/generations。请求里没有 messages,只有 prompt。

参数

响应

图片只在 b64_json 里返回,它就是 base64 编码的 PNG 文件本身。响应里没有图片链接,我们也不保存生成的图片:请立刻存好,之后无法再次获取。
usage.output_tokens 是图片 token,价格就按它算。把 quality 降到 low 能让它成倍减少,适合出草稿和做测试。

常见问题

因为按 OpenAI 的口径它不是「图像生成模型」,而是一个能吐图片的多模态聊天模型。请把请求发到 https://www.ruapi.ai/v1/chat/completions,见「方式一」。如果仍然发到 /v1/images/generations,会返回 400,报错里会写明正确的地址。
你的客户端在请求里附带了工具(tools)——开了 MCP 或插件的聊天客户端、各种 Agent 都会这样。图片模型不支持工具。在这个对话里关掉工具和 MCP(或者单独建一个不带工具的助手),再试一次。这类失败的请求不扣费。
那就是图片。通过 /v1/chat/completions 返回时,图片被拼成 ![image](data:image/png;base64,...) 塞进正文。上面的示例会自动把它取出来存成文件;也可以改用 Google 原生格式(见上文「Google 原生格式」),那里图片是单独的字段。
gemini-2.5-flash-image 性价比最高。要极致细节就用 gemini-3-pro-image-preview。gpt-image-2 也能改图,但请求要发到另一个地址 https://www.ruapi.ai/v1/images/edits。
完全不保存。我们不存储生成的图片:图片只在这次请求的响应里返回一次,请立刻存好,之后无法再次获取。
不会。Gemini 图像模型按次计费,每次调用一口价。usage 只是参考信息,不参与扣费。只有 gpt-image-2 是按 token 计费的。模型只回了文字、没出图的调用也会计费,所以请在提示词里明确要求生成图片。
这是 OpenAI 的内容审核:它认为这次 gpt-image-2 请求违反了内容政策。审核偶尔会误判,比如描述幼儿或名人时。换个说法再试即可。被拒绝的请求不扣费。