Генерация изображений
Генерация изображений через 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 |
Ошибка провайдера |