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

# Gemini-2.5-Flash-Image-Hd - Image Edit - openai

> Pro-level gemini 2.5 flash image edit hd. Fast and reliable high-definition photo editing and AI-powered visual enhancements.

## Authentication

1. Sign up for a GPTProto account at [https://gptproto.com](https://gptproto.com)
2. Navigate to the API Keys section in your dashboard
3. Generate a new API key (sk-xxxxx)
4. Copy and securely store your API key
   For authentication details, please refer to the [Authentication](https://docs.gptproto.com/authentication) section.

## Initiate Request

<CodeGroup>
  ```bash cURL theme={null}
  curl --location 'https://gptproto.com/v1/images/edits' \
  --header 'Authorization: GPTPROTO_API_KEY' \
  --form 'model="gemini-2.5-flash-image-hd"' \
  --form 'image[]=@"/path/to/file"' \
  --form 'prompt="Put a hat on the cat"'

  ```

  ```javascript JavaScript theme={null}
  const axios = require('axios');
  const FormData = require('form-data');
  const fs = require('fs');
  let data = new FormData();
  data.append('model', 'gemini-2.5-flash-image-hd');
  data.append('image[]', fs.createReadStream('/path/to/file'));
  data.append('prompt', 'Put a hat on the cat');

  let config = {
    method: 'post',
    maxBodyLength: Infinity,
    url: 'https://gptproto.com/v1/images/edits',
    headers: { 
      'Authorization': 'GPTPROTO_API_KEY', 
      ...data.getHeaders()
    },
    data : data
  };

  axios.request(config)
  .then((response) => {
    console.log(JSON.stringify(response.data));
  })
  .catch((error) => {
    console.log(error);
  });


  ```

  ```python Python theme={null}
  import http.client
  import mimetypes
  from codecs import encode

  conn = http.client.HTTPSConnection("gptproto.com")
  dataList = []
  boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T'
  dataList.append(encode('--' + boundary))
  dataList.append(encode('Content-Disposition: form-data; name=model;'))

  dataList.append(encode('Content-Type: {}'.format('text/plain')))
  dataList.append(encode(''))

  dataList.append(encode("gemini-2.5-flash-image-hd"))
  dataList.append(encode('--' + boundary))
  dataList.append(encode('Content-Disposition: form-data; name=image[]; filename={0}'.format('file')))

  fileType = mimetypes.guess_type('/path/to/file')[0] or 'application/octet-stream'
  dataList.append(encode('Content-Type: {}'.format(fileType)))
  dataList.append(encode(''))

  with open('/path/to/file', 'rb') as f:
    dataList.append(f.read())
  dataList.append(encode('--' + boundary))
  dataList.append(encode('Content-Disposition: form-data; name=prompt;'))

  dataList.append(encode('Content-Type: {}'.format('text/plain')))
  dataList.append(encode(''))

  dataList.append(encode("Put a hat on the cat"))
  dataList.append(encode('--'+boundary+'--'))
  dataList.append(encode(''))
  body = b'\r\n'.join(dataList)
  payload = body
  headers = {
    'Authorization': 'GPTPROTO_API_KEY',
    'Content-type': 'multipart/form-data; boundary={}'.format(boundary)
  }
  conn.request("POST", "/v1/images/edits", payload, headers)
  res = conn.getresponse()
  data = res.read()
  print(data.decode("utf-8"))

  ```

  ```go Go theme={null}
  package main

  import (
    "fmt"
    "bytes"
    "mime/multipart"
    "os"
    "path/filepath"
    "net/http"
    "io"
  )

  func main() {

    url := "https://gptproto.com/v1/images/edits"
    method := "POST"

    payload := &bytes.Buffer{}
    writer := multipart.NewWriter(payload)
    _ = writer.WriteField("model", "gemini-2.5-flash-image-hd")
    file, errFile2 := os.Open("/path/to/file")
    defer file.Close()
    part2,
           errFile2 := writer.CreateFormFile("image[]",filepath.Base("/path/to/file"))
    _, errFile2 = io.Copy(part2, file)
    if errFile2 != nil {
      fmt.Println(errFile2)
      return
    }
    _ = writer.WriteField("prompt", "Put a hat on the cat")
    err := writer.Close()
    if err != nil {
      fmt.Println(err)
      return
    }


    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
      fmt.Println(err)
      return
    }
    req.Header.Add("Authorization", "GPTPROTO_API_KEY")

    req.Header.Set("Content-Type", writer.FormDataContentType())
    res, err := client.Do(req)
    if err != nil {
      fmt.Println(err)
      return
    }
    defer res.Body.Close()

    body, err := io.ReadAll(res.Body)
    if err != nil {
      fmt.Println(err)
      return
    }
    fmt.Println(string(body))
  }

  ```
</CodeGroup>

<Accordion title="Response Example">
  ```json theme={null}
  {
      "created": 1768469705199,
      "data": [
          {
              "b64_json": "BASE64_ENCODED_IMAGE_DATA"
          }
      ],
      "output_format": "jpeg",
      "quality": "high",
      "size": "16:9",
      "usage": {
          "input_tokens": 3,
          "input_tokens_details": {
              "image_tokens": 0,
              "text_tokens": 3
          },
          "output_tokens": 1204,
          "total_tokens": 1330
      }
  }
  ```
</Accordion>

## Parameters

### Core Parameters

| Parameter | Type           | Required | Default                      | Range                                                                                                                             | Description                                                                                                                                                                                                |
| --------- | -------------- | -------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `model`   | string         | ✅ Yes    | `gemini-3-pro-image-preview` | -                                                                                                                                 | The model to use for image editing. Defaults to gemini-3-pro-image-preview.                                                                                                                                |
| `prompt`  | string         | ✅ Yes    | -                            | -                                                                                                                                 | A text description of the desired image(s).                                                                                                                                                                |
| `image`   | string or file | ❌ No     | -                            | -                                                                                                                                 | You can provide up to 14 images.                                                                                                                                                                           |
| `size`    | string         | ❌ No     | `auto`                       | `1:1`<br />`2:3`<br />`3:2`<br />`3:4`<br />`4:3`<br />`9:16`<br />`16:9`<br />`21:9`<br />`1:4`<br />`4:1`<br />`1:8`<br />`8:1` | Equivalent to the `aspect_ratio` field in Google's official format, used to control the aspect ratio of the output image. `1:4`, `4:1`, `1:8`, `8:1` are only supported by Gemini 3.1 Flash Image Preview. |

### Model Comparison

| Feature                       | Gemini 2.5 Flash Image | Gemini 3.1 Flash Image Preview | Gemini 3 Pro Image Preview    |
| ----------------------------- | ---------------------- | ------------------------------ | ----------------------------- |
| Use case                      | Speed & efficiency     | Speed & high-volume            | Professional asset production |
| Supported sizes               | 1K                     | 0.5K, 1K, 2K, 4K               | 1K, 2K, 4K                    |
| Max reference images          | 3                      | 14                             | 14                            |
| Max object images             | —                      | 10                             | 6                             |
| Max portrait images           | —                      | 4                              | 5                             |
| Extra aspect ratios           | —                      | 1:4, 4:1, 1:8, 8:1             | —                             |
| Google Image Search Grounding | —                      | ✅                              | —                             |

**Note:**

* **Gemini 3.1 Flash Image Preview**: Optimized for speed and high-volume use cases. Supports 0.5K resolution and extra ultra-wide/tall aspect ratios (1:4, 4:1, 1:8, 8:1). Also supports Google Image Search Grounding.
* **Gemini 3 Pro Image Preview**: Optimized for professional asset production with advanced reasoning for complex creation tasks.
* **Gemini 2.5 Flash Image**: Supports a maximum of 3 reference images and 1K resolution only.

### Aspect Ratio & Image Size

By default, the model keeps the output image the same size as the input image; otherwise it produces a 1:1 square.
You can control the aspect ratio of the generated image with the `aspect_ratio` field under `image_config` in your request, as shown below:

**Gemini 2.5 Flash Image**

| Aspect ratio | Resolution | Tokens |
| ------------ | ---------- | ------ |
| 1:1          | 1024x1024  | 1290   |
| 2:3          | 832x1248   | 1290   |
| 3:2          | 1248x832   | 1290   |
| 3:4          | 864x1184   | 1290   |
| 4:3          | 1184x864   | 1290   |
| 4:5          | 896x1152   | 1290   |
| 5:4          | 1152x896   | 1290   |
| 9:16         | 768x1344   | 1290   |
| 16:9         | 1344x768   | 1290   |
| 21:9         | 1536x672   | 1290   |

**Gemini 3.1 Flash Image Preview**

| Aspect ratio | 512px resolution | 0.5K tokens | 1K resolution | 1K tokens | 2K resolution | 2K tokens | 4K resolution | 4K tokens |
| ------------ | ---------------- | ----------- | ------------- | --------- | ------------- | --------- | ------------- | --------- |
| 1:1          | 512x512          | 747         | 1024x1024     | 1120      | 2048x2048     | 1120      | 4096x4096     | 2000      |
| 1:4          | 256x1024         | 747         | 512x2048      | 1120      | 1024x4096     | 1120      | 2048x8192     | 2000      |
| 1:8          | 192x1536         | 747         | 384x3072      | 1120      | 768x6144      | 1120      | 1536x12288    | 2000      |
| 2:3          | 424x632          | 747         | 848x1264      | 1120      | 1696x2528     | 1120      | 3392x5056     | 2000      |
| 3:2          | 632x424          | 747         | 1264x848      | 1120      | 2528x1696     | 1120      | 5056x3392     | 2000      |
| 3:4          | 448x600          | 747         | 896x1200      | 1120      | 1792x2400     | 1120      | 3584x4800     | 2000      |
| 4:1          | 1024x256         | 747         | 2048x512      | 1120      | 4096x1024     | 1120      | 8192x2048     | 2000      |
| 4:3          | 600x448          | 747         | 1200x896      | 1120      | 2400x1792     | 1120      | 4800x3584     | 2000      |
| 4:5          | 464x576          | 747         | 928x1152      | 1120      | 1856x2304     | 1120      | 3712x4608     | 2000      |
| 5:4          | 576x464          | 747         | 1152x928      | 1120      | 2304x1856     | 1120      | 4608x3712     | 2000      |
| 8:1          | 1536x192         | 747         | 3072x384      | 1120      | 6144x768      | 1120      | 12288x1536    | 2000      |
| 9:16         | 384x688          | 747         | 768x1376      | 1120      | 1536x2752     | 1120      | 3072x5504     | 2000      |
| 16:9         | 688x384          | 747         | 1376x768      | 1120      | 2752x1536     | 1120      | 5504x3072     | 2000      |
| 21:9         | 792x336          | 747         | 1584x672      | 1120      | 3168x1344     | 1120      | 6336x2688     | 2000      |

**Gemini 3 Pro Image Preview**

| Aspect ratio | 1K resolution | 1K tokens | 2K resolution | 2K tokens | 4K resolution | 4K tokens |
| ------------ | ------------- | --------- | ------------- | --------- | ------------- | --------- |
| 1:1          | 1024x1024     | 1120      | 2048x2048     | 1120      | 4096x4096     | 2000      |
| 2:3          | 848x1264      | 1120      | 1696x2528     | 1120      | 3392x5056     | 2000      |
| 3:2          | 1264x848      | 1120      | 2528x1696     | 1120      | 5056x3392     | 2000      |
| 3:4          | 896x1200      | 1120      | 1792x2400     | 1120      | 3584x4800     | 2000      |
| 4:3          | 1200x896      | 1120      | 2400x1792     | 1120      | 4800x3584     | 2000      |
| 4:5          | 928x1152      | 1120      | 1856x2304     | 1120      | 3712x4608     | 2000      |
| 5:4          | 1152x928      | 1120      | 2304x1856     | 1120      | 4608x3712     | 2000      |
| 9:16         | 768x1376      | 1120      | 1536x2752     | 1120      | 3072x5504     | 2000      |
| 16:9         | 1376x768      | 1120      | 2752x1536     | 1120      | 5504x3072     | 2000      |
| 21:9         | 1584x672      | 1120      | 3168x1344     | 1120      | 6336x2688     | 2000      |

## Error Codes

### Common Error Codes

| Error Code | Error Name               | Description                                                                                                       |
| ---------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------- |
| 401        | Unauthorized             | API key is missing or invalid                                                                                     |
| 403        | Forbidden                | Your API key doesn't have permission to access this resource, or insufficient balance for the requested operation |
| 429        | Too Many Requests        | You've exceeded your rate limit                                                                                   |
| 500        | Internal server error    | An internal server error occurred                                                                                 |
| 503        | Content policy violation | Content blocked due to safety concerns (actual status code is 400)                                                |
