> ## Documentation Index
> Fetch the complete documentation index at: https://bianxieai.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Gemini 生成图片

> 使用 Gemini 原生 generateContent 格式根据提示词生成图片

该接口与 Gemini 文本生成共用 `generateContent` 路径。将支持图片输出的 Gemini 模型填入 `{model}`，模型 ID 以[实时模型页](https://api.bianxie.ai/pricing)为准。

## 请求字段

| 字段                                         | 类型          | 必填 | 说明                            |
| ------------------------------------------ | ----------- | -- | ----------------------------- |
| `model`                                    | path string | 是  | 支持图片生成的 Gemini 模型 ID。         |
| `contents`                                 | array       | 是  | 输入内容；生图请求通常包含一个文本 part。       |
| `contents[].role`                          | string      | 否  | 通常为 `user`。                   |
| `contents[].parts[].text`                  | string      | 是  | 图片提示词。                        |
| `generationConfig.imageConfig`             | object      | 否  | 图片输出配置。                       |
| `generationConfig.imageConfig.aspectRatio` | string      | 否  | 宽高比，例如 `1:1`、`9:16` 或 `16:9`。 |

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.bianxie.ai/v1beta/models/your-model:generateContent" \
    -H "Authorization: Bearer API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "contents": [{
        "role": "user",
        "parts": [{"text": "一只戴宇航头盔的橘猫，电影级灯光"}]
      }],
      "generationConfig": {
        "imageConfig": {"aspectRatio": "1:1"}
      }
    }'
  ```

  ```python Python theme={null}
  import base64
  import requests

  url = "https://api.bianxie.ai/v1beta/models/your-model:generateContent"
  response = requests.post(
      url,
      headers={"Authorization": "Bearer API_KEY"},
      json={
          "contents": [{"role": "user", "parts": [{"text": "一只戴宇航头盔的橘猫"}]}],
          "generationConfig": {"imageConfig": {"aspectRatio": "1:1"}},
      },
      timeout=120,
  )
  response.raise_for_status()
  for candidate in response.json().get("candidates", []):
      for part in candidate.get("content", {}).get("parts", []):
          image = part.get("inlineData")
          if image and image.get("data"):
              with open("output.png", "wb") as file:
                  file.write(base64.b64decode(image["data"]))
  ```

  ```javascript Node.js theme={null}
  import { writeFile } from "node:fs/promises";

  const response = await fetch("https://api.bianxie.ai/v1beta/models/your-model:generateContent", {
    method: "POST",
    headers: { Authorization: "Bearer API_KEY", "Content-Type": "application/json" },
    body: JSON.stringify({
      contents: [{ role: "user", parts: [{ text: "An orange cat in a space helmet" }] }],
      generationConfig: { imageConfig: { aspectRatio: "1:1" } }
    })
  });
  const data = await response.json();
  const image = data.candidates?.[0]?.content?.parts?.find((part) => part.inlineData)?.inlineData;
  if (image?.data) await writeFile("output.png", Buffer.from(image.data, "base64"));
  ```
</CodeGroup>

## 返回图片

优先读取 `candidates[].content.parts[].inlineData`：`mimeType` 表示图片格式，`data` 是 Base64 内容。部分兼容响应可能把 Markdown data URL 放在 text part 中，客户端可将其作为兼容兜底，但不应优先依赖该形式。

此请求可能耗时较长，建议客户端超时不少于 120 秒。HTTP 成功并不保证存在图片；还应检查候选项、结束原因和安全反馈。
