> ## 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 image editing

> Submit an image and instruction to Gemini for editing

Image editing uses `generateContent`. Encode the source image as Base64 and send it beside the text instruction in `contents[].parts[]`.

| Field                                      | Type        | Required | Description                                         |
| ------------------------------------------ | ----------- | -------- | --------------------------------------------------- |
| `model`                                    | path string | Yes      | Image-editing Gemini model ID.                      |
| `contents[].parts[].text`                  | string      | Yes      | Edit instruction.                                   |
| `contents[].parts[].inlineData`            | object      | Yes      | Input image for the JSON REST request.              |
| `inlineData.mimeType`                      | string      | Yes      | Such as `image/png`, `image/jpeg`, or `image/webp`. |
| `inlineData.data`                          | string      | Yes      | Base64 bytes without a data URL prefix.             |
| `generationConfig.imageConfig.aspectRatio` | string      | No       | Output aspect ratio.                                |

<CodeGroup>
  ```bash cURL theme={null}
  IMAGE_BASE64=$(base64 < input.png | tr -d '\n')

  curl "https://api.bianxie.ai/v1beta/models/your-model:generateContent" \
    -H "Authorization: Bearer API_KEY" \
    -H "Content-Type: application/json" \
    --data-binary @- <<JSON
  {
    "contents": [{
      "role": "user",
      "parts": [
        {"text": "Replace the background with a city at night"},
        {"inlineData": {"mimeType": "image/png", "data": "$IMAGE_BASE64"}}
      ]
    }],
    "generationConfig": {
      "imageConfig": {"aspectRatio": "9:16"}
    }
  }
  JSON
  ```

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

  with open("input.png", "rb") as file:
      encoded = base64.b64encode(file.read()).decode("utf-8")
  response = requests.post(
      "https://api.bianxie.ai/v1beta/models/your-model:generateContent",
      headers={"Authorization": "Bearer API_KEY"},
      json={"contents": [{"role": "user", "parts": [
          {"text": "Replace the background with a city at night"},
          {"inlineData": {"mimeType": "image/png", "data": encoded}},
      ]}], "generationConfig": {"imageConfig": {"aspectRatio": "9:16"}}},
      timeout=120,
  )
  response.raise_for_status()
  for candidate in response.json().get("candidates", []):
      for index, part in enumerate(candidate.get("content", {}).get("parts", [])):
          image = part.get("inlineData")
          if image and image.get("data"):
              open(f"edited-{index}.png", "wb").write(base64.b64decode(image["data"]))
  ```

  ```javascript Node.js theme={null}
  import { readFile, writeFile } from "node:fs/promises";
  const input = (await readFile("input.png")).toString("base64");
  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: "Replace the background with a city at night" },
        { inlineData: { mimeType: "image/png", data: input } }
      ] }],
      generationConfig: { imageConfig: { aspectRatio: "9:16" } }
    })
  });
  const data = await response.json();
  const image = data.candidates?.[0]?.content?.parts?.find((part) => part.inlineData)?.inlineData;
  if (image?.data) await writeFile("edited.png", Buffer.from(image.data, "base64"));
  ```
</CodeGroup>

JSON REST requests use camelCase fields such as `inlineData` and `mimeType`. SDK objects may display `inline_data` and `mime_type`; do not copy SDK naming into JSON. Select the output extension from the returned `mimeType` rather than assuming PNG.
