← К документации

Генерация изображений

Отдельный эндпоинт для создания и редактирования изображений. Совместим с OpenAI SDK — работает метод client.images.generate(). Изображение возвращается в base64.

POST /api/v1/images/generations

Генерация изображения по текстовому описанию; редактирование — передайте исходные изображения в параметре image

Изображения можно получить и через обычный /chat/completions, но там нельзя задать соотношение сторон и разрешение. Для полного контроля используйте этот эндпоинт.

Что поддерживает каждая модель

Таблица построена по измеренным данным: заявленная поддержка параметров у провайдеров часто не совпадает с реальностью, поэтому здесь только то, что проверено живыми запросами.

Рекомендуемая модель aspect_ratio image_size seed Цена
google/gemini-3.1-flash-lite-image 1K 3–4 ₽
google/gemini-2.5-flash-image 3–4 ₽
openai/gpt-5-image-mini 4–5 ₽
google/gemini-3.1-flash-image 1K, 2K 6–11 ₽
openai/gpt-5.4-image-2 12–23 ₽
google/gemini-3-pro-image 15–18 ₽

Если передать параметр модели, которая его не поддерживает, запрос вернёт ошибку 400 со списком допустимых значений — деньги не спишутся.

Допустимые значения

Рекомендуемая модель aspect_ratio image_size
google/gemini-3.1-flash-lite-image 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 1K
google/gemini-2.5-flash-image 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 не поддерживается
openai/gpt-5-image-mini не поддерживается не поддерживается
google/gemini-3.1-flash-image 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 1K, 2K
openai/gpt-5.4-image-2 1:1, 2:3, 3:2, 9:16, 16:9 не поддерживается
google/gemini-3-pro-image 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 не поддерживается

Простая генерация

Минимальный запрос: модель и текстовое описание.

import base64
from openai import OpenAI

client = OpenAI(
    base_url="https://rus-gpt.com/api/v1",
    api_key="rusgpt-YOUR_API_KEY",
)

img = client.images.generate(
    model="google/gemini-3.1-flash-lite-image",
    prompt="Уютный домик в зимнем лесу на рассвете",
)

entry = img.data[0]
# output_format tells you what you actually got — models differ (PNG vs JPEG).
with open(f"out.{entry.output_format}", "wb") as f:
    f.write(base64.b64decode(entry.b64_json))
curl https://rus-gpt.com/api/v1/images/generations \
  -H "Authorization: Bearer rusgpt-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemini-3.1-flash-lite-image",
    "prompt": "Уютный домик в зимнем лесу на рассвете"
  }' | jq -r '.data[0].b64_json' | base64 -d > out.jpg
# lite-модель возвращает JPEG; фактический формат — в полях mime_type / output_format ответа.
import base64, requests

resp = requests.post(
    "https://rus-gpt.com/api/v1/images/generations",
    headers={"Authorization": "Bearer rusgpt-YOUR_API_KEY"},
    json={
        "model": "google/gemini-3.1-flash-lite-image",
        "prompt": "Уютный домик в зимнем лесу на рассвете",
    },
    timeout=300,
)
resp.raise_for_status()
entry = resp.json()["data"][0]

# mime_type / output_format tell you what you actually got: models differ
# (lite-image returns JPEG, 3.1-flash-image returns PNG).
ext = entry["output_format"]
open(f"out.{ext}", "wb").write(base64.b64decode(entry["b64_json"]))

Модели Google (Gemini / Nano Banana)

Поддерживают соотношение сторон и параметр seed, а часть моделей — и выбор разрешения.

import base64
from openai import OpenAI

client = OpenAI(base_url="https://rus-gpt.com/api/v1", api_key="rusgpt-YOUR_API_KEY")

img = client.images.generate(
    model="google/gemini-3.1-flash-image",
    prompt="Уютный домик в зимнем лесу на рассвете",
    # Non-OpenAI params go through extra_body with the OpenAI SDK.
    extra_body={
        "aspect_ratio": "16:9",   # 1376x768
        "image_size": "2K",       # 2048px on the long side
        "seed": 42,               # forwarded upstream; reproducibility NOT guaranteed
    },
)

open("wide.png", "wb").write(base64.b64decode(img.data[0].b64_json))
curl https://rus-gpt.com/api/v1/images/generations \
  -H "Authorization: Bearer rusgpt-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemini-3.1-flash-image",
    "prompt": "Уютный домик в зимнем лесу на рассвете",
    "aspect_ratio": "16:9",
    "image_size": "2K",
    "seed": 42
  }'
Параметр seed передаётся провайдеру, но воспроизводимость не гарантируется: одинаковые prompt и seed могут дать разные изображения (проверено 11-08-2026).

Модели OpenAI (GPT Image)

Принимают описание и референсы для редактирования; набор параметров у них уже, чем у Gemini.

import base64
from openai import OpenAI

client = OpenAI(base_url="https://rus-gpt.com/api/v1", api_key="rusgpt-YOUR_API_KEY")

img = client.images.generate(
    model="openai/gpt-5.4-image-2",
    prompt="Уютный домик в зимнем лесу на рассвете",
    extra_body={"aspect_ratio": "16:9"},   # image_size / seed are NOT supported here
)

open("out.png", "wb").write(base64.b64decode(img.data[0].b64_json))
curl https://rus-gpt.com/api/v1/images/generations \
  -H "Authorization: Bearer rusgpt-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-5.4-image-2",
    "prompt": "Уютный домик в зимнем лесу на рассвете",
    "aspect_ratio": "16:9"
  }'
Внимание: image_size и seed моделями OpenAI не поддерживаются, а gpt-5-image-mini не поддерживает и aspect_ratio. Запрос с неподдерживаемым параметром вернёт ошибку 400 unsupported_parameter с именем параметра — деньги не спишутся. Эти модели также заметно медленнее — генерация может занимать до двух минут.

Редактирование изображений

Передайте одно или несколько исходных изображений в параметре image — как data URI в base64 или как публичную https-ссылку. Описание задаёт, что именно изменить.

import base64, requests

ref = base64.b64encode(open("photo.jpg", "rb").read()).decode()

resp = requests.post(
    "https://rus-gpt.com/api/v1/images/generations",
    headers={"Authorization": "Bearer rusgpt-YOUR_API_KEY"},
    json={
        "model": "google/gemini-3.1-flash-image",
        "prompt": "Замени фон на закатное небо",
        "image": [f"data:image/jpeg;base64,{ref}"],   # up to 14 references
    },
    timeout=300,
)

entry = resp.json()["data"][0]
open("edited." + entry["output_format"], "wb").write(base64.b64decode(entry["b64_json"]))
# A reference image is passed as a data URI (or a public http(s) URL).
REF=$(base64 -w0 photo.jpg)

curl https://rus-gpt.com/api/v1/images/generations \
  -H "Authorization: Bearer rusgpt-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"model\": \"google/gemini-3.1-flash-image\",
    \"prompt\": \"Замени фон на закатное небо\",
    \"image\": [\"data:image/jpeg;base64,$REF\"]
  }"

Параметры запроса

Параметр Описание
modelID модели — список: GET /api/v1/images/models
promptТекстовое описание изображения (обязательный)
aspect_ratioСоотношение сторон: 1:1, 16:9, 9:16, 21:9, 4:3 и др. Поддержка зависит от модели
image_sizeРазрешение: 1K или 2K (только модели с поддержкой — см. capabilities в списке моделей)
sizeOpenAI-совместимая альтернатива aspect_ratio: 1024x1024, 1536x1024, 1024x1536
imageСписок исходных изображений для редактирования (data URI base64 или https-ссылки)
seedДля воспроизводимых результатов (модели Gemini)
nКоличество изображений. Сейчас все модели поддерживают только 1.
Параметры OpenAI quality, style, background, output_format, output_compression, moderation и partial_images не поддерживаются и возвращают ошибку 400. Мы намеренно отклоняем их, а не игнорируем молча — иначе вы заплатили бы за картинку, сделанную не по вашему запросу.

Формат ответа

Ответ повторяет формат OpenAI Images и дополнен полями с реальным форматом файла и точной суммой списания:

{
  "created": 1786000000,
  "data": [
    {
      "b64_json": "iVBORw0KGgoAAAANSUhEUg...",
      "mime_type": "image/png",
      "output_format": "png",
      "revised_prompt": "..."
    }
  ],
  "usage": {
    "input_tokens": 7,
    "output_tokens": 1120,
    "total_tokens": 1127,
    "cost": 6.72
  }
}
Формат файла зависит от модели: часть моделей возвращает PNG, часть — JPEG. Ориентируйтесь на поля mime_type и output_format, а не на расширение по умолчанию. Поле usage.cost — это ровно та сумма в рублях, которая списана с баланса.

Список моделей и их возможностей

Актуальный список с полем capabilities для каждой модели — без авторизации:

curl https://rus-gpt.com/api/v1/images/models

Ошибки

Код Описание
400 unsupported_parameterПараметр не поддерживается этой моделью. В тексте ошибки перечислены доступные варианты.
400 invalid_valueНедопустимое значение параметра (например, соотношение сторон вне списка поддерживаемых).
402Недостаточно средств на балансе
429Превышен лимит: 20 запросов в минуту и до 5 одновременных генераций.
502 no_image_generatedМодель не вернула изображение. Списания не происходит — повторите запрос.

Стоимость

Оплата токенами по ценам модели; колонка «Цена» в таблице выше — измеренная стоимость одного изображения (диапазон, если она зависит от размера или соотношения сторон). У моделей Google изображение 1K — 1120 выходных токенов, 2K — 1680; модели OpenAI тратят заметно больше токенов на изображение, включая входные. Референсные изображения тарифицируются дополнительно как входные токены. Отклонённые запросы (ошибки 400 и 429) не тарифицируются.

Полный список моделей с актуальными ценами: Страница моделей