Документация Генерация изображений

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

Генерация изображений через AI-модели. API совместимо с OpenAI Images API и предоставляет дополнительные возможности для работы с моделями ru-openrouter.ru.

Базовый URL: https://api.ru-openrouter.ru/v1/


Модели для генерации изображений

GET /v1/images/models

Список image-моделей, доступных для генерации.

curl "https://api.ru-openrouter.ru/v1/images/models" \
  -H "Authorization: Bearer sk_ваш_api_ключ"

Ответ:

{
  "object": "list",
  "data": [
    {
      "id": "bytedance-seed/seedream-4.5",
      "object": "model",
      "created": 1692901234,
      "owned_by": "bytedance-seed",
      "capabilities": {
        "can_generate_image": true,
        "can_understand_image": true,
        "input_modalities": ["text"],
        "output_modalities": ["image"]
      },
      "pricing": {
        "prompt": "0.000000000",
        "completion": "0.050000000",
        "pricing_type": "tokens",
        "image": "0.001000000",
        "image_output": "0.050000000",
        "currency": "RUB"
      },
      "context_length": 4096,
      "description": "A text-to-image model.",
      "supported_parameters": {
        "resolution": {"type": "enum", "values": ["1K", "2K", "4K"]},
        "seed": {"type": "boolean"}
      }
    }
  ]
}
Поле Тип Описание
id string ID модели (используется в запросах генерации)
capabilities.can_generate_image boolean Поддержка генерации изображений (всегда true для image-моделей)
capabilities.can_understand_image boolean Может принимать изображение на входе (image-to-image)
capabilities.input_modalities string[] Входные модальности (например, ["text"])
capabilities.output_modalities string[] Форматы вывода (например, ["image"])
pricing.prompt string Цена за входные токены в RUB
pricing.completion string Цена за выходные токены в RUB
pricing.pricing_type string Тип ценообразования: tokens или image
pricing.image string Цена за изображение на входе в RUB
pricing.image_output string Цена за выходное изображение в RUB
pricing.currency string Валюта ценообразования (RUB)
context_length integer Максимальная длина контекста в токенах
supported_parameters object Параметры, которые поддерживает модель

GET /v1/models?filter=image

Альтернативный способ получения списка image-моделей через общий эндпоинт моделей:

curl "https://api.ru-openrouter.ru/v1/models?filter=image" \
  -H "Authorization: Bearer sk_ваш_api_ключ"

Поддерживаемые параметры моделей

Поле supported_parameters описывает, какие параметры доступны для конкретной модели:

Тип Формат Описание
enum {"type": "enum", "values": ["1K", "2K", "4K"]} Список допустимых значений
range {"type": "range", "min": 0, "max": 100} Диапазон целых чисел
boolean {"type": "boolean"} Поддержка boolean-параметра

Если параметр отсутствует в supported_parameters — он не поддерживается моделью.


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

POST /v1/images/generations
POST /v1/images

Оба эндпоинта идентичны по функциональности. POST /v1/images/generations совместим с OpenAI API, POST /v1/images использует native Images API нашего сервиса.

Обязательные параметры

Поле Тип Описание
model string ID модели (например, bytedance-seed/seedream-4.5)
prompt string Текстовое описание желаемого изображения

Опциональные параметры

Поле Тип По умолчанию Описание
n integer 1 Количество изображений (1–10). Не все провайдеры поддерживают n>1
size string Соотношение сторон в формате OpenAI: 1024x1024, 1024x768, 768x1024, 1280x720, 720x1280, 1536x1024, 1024x1536
response_format string url Формат ответа: url (data URL) или b64_json (base64)
output_format string png Формат изображения: png, jpeg, webp
image string URL или data URL референсного изображения для image-to-image (legacy-формат, совместимость с OpenAI)
input_references array Референсные изображения для image-to-image (native-формат)
image_config object Дополнительные настройки изображения (см. ниже)

Параметры image_config

Поле Тип Описание
aspect_ratio string Соотношение сторон: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9
image_size string Размер: 1K, 2K, 4K

Параметры aspect_ratio и image_size также можно передавать на верхнем уровне запроса — они будут переданы провайдеру напрямую.

Провайдер-специфичные параметры

Эти параметры передаются провайдеру напрямую (сквозной проброс). Поддержка зависит от конкретной модели и провайдера:

Поле Тип Описание
quality string Качество: auto, low, medium, high
background string Фон: auto, transparent, opaque. transparent требует png или webp
output_compression integer Сжатие (0–100) для jpeg/webp. Игнорируется для png
seed integer Seed для детерминированной генерации (где поддерживается)
aspect_ratio string Соотношение сторон (на верхнем уровне)
resolution string Разрешение: 512, 1K, 2K, 4K (на верхнем уровне)

Примеры

Базовая генерация:

curl -X POST "https://api.ru-openrouter.ru/v1/images/generations" \
  -H "Authorization: Bearer sk_ваш_api_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "bytedance-seed/seedream-4.5",
    "prompt": "красная панда-космонавт в открытом космосе, студийное освещение"
  }'

Несколько изображений с соотношением сторон:

curl -X POST "https://api.ru-openrouter.ru/v1/images/generations" \
  -H "Authorization: Bearer sk_ваш_api_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "bytedance-seed/seedream-4.5",
    "prompt": "горный пейзаж, закат",
    "n": 2,
    "image_config": {
      "aspect_ratio": "16:9",
      "image_size": "2K"
    }
  }'

Через legacy OpenAI параметр size:

curl -X POST "https://api.ru-openrouter.ru/v1/images/generations" \
  -H "Authorization: Bearer sk_ваш_api_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/dall-e-3",
    "prompt": "кот в космосе, цифровой арт",
    "n": 1,
    "size": "1024x1024"
  }'

Image-to-image (с референсным изображением):

curl -X POST "https://api.ru-openrouter.ru/v1/images/generations" \
  -H "Authorization: Bearer sk_ваш_api_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-image-1",
    "prompt": "сделай эту сцену в стиле акварели",
    "input_references": [
      {
        "type": "image_url",
        "image_url": {
          "url": "https://example.com/photo.jpg"
        }
      }
    ]
  }'

С base64 выводом:

curl -X POST "https://api.ru-openrouter.ru/v1/images/generations" \
  -H "Authorization: Bearer sk_ваш_api_ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "bytedance-seed/seedream-4.5",
    "prompt": "абстрактная картина",
    "response_format": "b64_json"
  }'

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

{
  "id": "gen-xxxxxxxxxxxx",
  "object": "list",
  "created": 1748372400,
  "model": "bytedance-seed/seedream-4.5",
  "data": [
    {
      "url": "data:image/png;base64,",
      "revised_prompt": "A red panda astronaut floating in space, studio lighting"
    }
  ],
  "usage": {
    "prompt_tokens": 16,
    "completion_tokens": 4175,
    "total_tokens": 4191,
    "cost": 0.05
  },
  "provider": "Bytedance"
}
Поле Описание
id Уникальный ID генерации
created Unix-timestamp создания
model Модель, которая сгенерировала изображение
data[].url Data URL изображения в base64 (при response_format: url)
data[].b64_json Base64-строка изображения (при response_format: b64_json)
data[].revised_prompt Уточнённый промпт (если модель модифицировала запрос)
usage.prompt_tokens Количество входных токенов
usage.completion_tokens Количество выходных токенов
usage.total_tokens Общее количество токенов
usage.cost Стоимость в RUB
provider Провайдер, сгенерировавший изображение (если доступно)
system_fingerprint Отпечаток системы (если доступно)
x_cache_status Статус кэширования: HIT или MISS (если доступно)

Формат изображения в ответе

При response_format: url (по умолчанию) возвращается data URL с MIME-типом, соответствующим output_format:

output_format MIME-тип
png image/png
jpeg image/jpeg
webp image/webp

При response_format: b64_json возвращается raw base64-строка в поле b64_json.


Роутинг провайдеров

Если модель доступна через нескольких провайдеров, можно управлять выбором через параметр provider:

{
  "model": "google/gemini-2.5-flash-image",
  "prompt": "красная панда-космонавт в космосе",
  "provider": {
    "only": ["google-ai-studio"],
    "allow_fallbacks": false
  }
}
Поле Тип Описание
provider.only string[] Разрешить только указанных провайдеров
provider.order string[] Попробовать провайдеров в указанном порядке
provider.ignore string[] Исключить указанных провайдеров
provider.sort string Сортировка: price, throughput, latency
provider.allow_fallbacks boolean Разрешить fallback на другого провайдера при ошибке

Параметры передаются провайдеру напрямую. Поддержка специфических опций зависит от модели.


Ограничения

  • Streaming не поддерживается для генерации изображений. Параметр stream: true вернёт ошибку 400 Bad Request.
  • Максимальный размер тела запроса: 10 MB
  • Максимальное количество изображений за один запрос: 10 (n: 1–10)
  • Все запросы требуют аутентификации через заголовок Authorization: Bearer sk_ваш_api_ключ

Ошибки

HTTP-код Код ошибки Описание
400 missing_model Не указан параметр model
400 missing_prompt Не указан параметр prompt
400 model_not_found Модель не найдена или неактивна
400 model_not_supported Модель не поддерживает генерацию изображений
400 streaming_not_supported Streaming не поддерживается для изображений
402 insufficient_balance Недостаточно средств на балансе
413 request_too_large Тело запроса превышает 10 MB
429 rate_limit_exceeded Превышен лимит запросов
429 limit_exceeded Превышен лимит API-ключа
500 provider_error Ошибка провайдера