Документация API

Gemini Images

Генерация картинок через модели Gemini для картинок и чат.

Скачать инструкцию для агента .md

Модели Gemini для картинок работают как чат-модели, которые умеют возвращать картинки. Для генерации и редактирования используйте /v1/chat/completions, а не /v1/images/generations и не /v1/images/edits. Поддерживаются google/gemini-3.1-flash-image-preview и google/gemini-3-pro-image; используйте точный id модели из каталога или /v1/models.

Запрос

Gemini image request
curl https://api.aigate.shop/v1/chat/completions \  -H "Authorization: Bearer sk-your-api-key" \  -H "Content-Type: application/json" \  -d '{    "model": "google/gemini-3.1-flash-image-preview",    "messages": [      {        "role": "user",        "content": "Generate an image of a small yellow banana-shaped robot on a white desk, studio lighting"      }    ],    "modalities": ["image", "text"]  }'

Настройки картинки

Для соотношения сторон и размера передавайте image_config на верхнем уровне запроса. aspect_ratio задает соотношение сторон, image_size задает размер/качество, например 1K, 2K или 4K, если выбранная модель это поддерживает.

Тело JSON для Thunder Client
{  "model": "google/gemini-3-pro-image",  "messages": [    {      "role": "user",      "content": "Generate a sharp futuristic product render of a matte black AI gateway device on a white desk, studio lighting"    }  ],  "modalities": ["image", "text"],  "image_config": {    "aspect_ratio": "16:9",    "image_size": "2K"  }}

Ответ

Gemini image response
{  "id": "gate-1779703910",  "object": "chat.completion",  "created": 1779703910,  "model": "google/gemini-3.1-flash-image-preview",  "choices": [    {      "index": 0,      "message": {        "role": "assistant",        "content": null,        "images": [          {            "type": "image_url",            "image_url": {              "url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."            }          }        ]      },      "finish_reason": "stop"    }  ]}

Редактирование картинки

Для редактирования передайте исходную картинку как image_url внутри messages. Текст в том же сообщении должен описывать, что изменить. Модель возвращает новую картинку в base64 внутри data URL.

Gemini image edit request
curl https://api.aigate.shop/v1/chat/completions \  -H "Authorization: Bearer sk-your-api-key" \  -H "Content-Type: application/json" \  -d '{    "model": "google/gemini-3.1-flash-image-preview",    "messages": [      {        "role": "user",        "content": [          {            "type": "text",            "text": "Edit this image: add a small orange cat sitting on the table. Keep the original lighting and style. Return the edited image."          },          {            "type": "image_url",            "image_url": {              "url": "https://picsum.photos/seed/aigate-edit-test/800/600"            }          }        ]      }    ],    "modalities": ["image", "text"]  }'
Gemini image edit response
{  "id": "gate-1779703910",  "object": "chat.completion",  "created": 1779703910,  "model": "google/gemini-3.1-flash-image-preview",  "choices": [    {      "index": 0,      "message": {        "role": "assistant",        "content": null,        "images": [          {            "type": "image_url",            "image_url": {              "url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."            }          }        ]      },      "finish_reason": "stop"    }  ]}

Где брать картинку

txt
choices[0].message.images[0].image_url.url
Ответ это base64 data URLЗначение image_url.url обычно выглядит как data:image/png;base64,... . Чтобы сохранить файл, возьмите часть после запятой и декодируйте base64. content может быть null - это нормально для ответа с картинкой.

Поля запроса

ПолеОбяз.Что значит
modelyesТочный id модели из каталога.
messagesyesПромпт лежит в сообщении пользователя.
messages.content[].image_urledits/input imageИсходная картинка для редактирования или картинка на входе.
modalitiesyes["image", "text"]
image_confignoНастройки картинки для Gemini: aspect_ratio (например 1:1 или 16:9) и image_size (например 1K, 2K или 4K, если поддерживается моделью).

Сохранить data URL

ts
import { writeFileSync } from "node:fs";const url = response.choices[0].message.images[0].image_url.url;if (url.startsWith("data:image/")) {  const [, base64] = url.split(",");  writeFileSync("gemini-image.png", Buffer.from(base64, "base64"));}

SillyImages

Для расширения SillyImages в SillyTavern выберите тип API Gemini. В поле endpoint укажите базовый адрес без /v1: https://api.aigate.shop. Расширение само отправляет генерацию на /v1beta/models/{model}:generateContent и список моделей на /v1/models.

Настройки SillyImages
API type: Gemini-compatibleEndpoint URL: https://api.aigate.shopAPI key: sk-your-api-keyModel: google/gemini-3-pro-imageAspect ratio: 16:9Image size: 2K

Совместимый маршрут принимает Google-формат contents/generationConfig и возвращает candidates/content/parts/inlineData, чтобы расширение сразу увидело картинку.

Google-совместимый запрос
curl https://api.aigate.shop/v1beta/models/google/gemini-3-pro-image:generateContent \  -H "Authorization: Bearer sk-your-api-key" \  -H "Content-Type: application/json" \  -d '{    "contents": [      {        "role": "user",        "parts": [          {            "text": "Generate a cinematic 16:9 image of a tiny banana-shaped robot in a rainy neon street"          }        ]      }    ],    "generationConfig": {      "responseModalities": ["TEXT", "IMAGE"],      "imageConfig": {        "aspectRatio": "16:9",        "imageSize": "2K"      }    }  }'
Google-совместимый ответ
{  "candidates": [    {      "content": {        "role": "model",        "parts": [          {            "inlineData": {              "mimeType": "image/png",              "data": "iVBORw0KGgoAAAANSUhEUgAA..."            }          }        ]      },      "finishReason": "STOP",      "index": 0    }  ],  "usageMetadata": {    "promptTokenCount": 18,    "candidatesTokenCount": 1290,    "totalTokenCount": 1308  }}

Частые ошибки

  • Не отправляйте модели Gemini для картинок в /v1/images/generations или /v1/images/edits.
  • Не забывайте modalities: ["image", "text"].
  • Для размера и соотношения сторон используйте image_config на верхнем уровне запроса.
  • Не читайте только message.content.
  • Проверяйте точный id модели в /v1/models или каталоге.