Перейти к содержимому

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

greenrouter предоставляет модели изображений (gpt-image-2, gemini-3.1-flash-image) через OpenAI-совместимые эндпоинты: /v1/images/generations (текст → изображение) и /v1/images/edits (image-to-image с опорными изображениями). Оба эндпоинта активны и используют ключ sk-ru-…, как и чат.

Эндпоинты

POST https://api.ru-llm.relay2.xyz/v1/images/generations
POST https://api.ru-llm.relay2.xyz/v1/images/edits

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

Окно терминала
curl https://api.ru-llm.relay2.xyz/v1/images/generations \
-H "Authorization: Bearer sk-ru-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A red panda coding at a laptop, soft studio lighting",
"n": 1,
"size": "1024x1024",
"quality": "high"
}'
ПолеТипОбязательноОписание
modelstringДаID модели изображений — gpt-image-2 или gemini-3.1-flash-image.
promptstringДаТекстовое описание изображения для генерации.
nintegerНетЧисло изображений. По умолчанию: 1.
sizestringНетРазрешение. gpt-image-2 принимает 1024x1024, 1536x1024, 1024x1536 и auto.
qualitystringНетКачество для gpt-image-2: low, medium, high или auto.

Ответ

Ответ следует формату изображений OpenAI. gpt-image-2 всегда возвращает данные изображения в base64 (b64_json); шлюз передаёт полезную нагрузку без изменений.

{
"created": 1710000000,
"data": [
{"b64_json": "iVBORw0KGgoAAAANSUhEUgAA..."}
],
"usage": { "input_tokens": 42, "output_tokens": 1568 }
}

Декодируйте первое изображение в файл PNG:

Окно терминала
curl ... | python3 -c "import sys,json,base64; \
open('out.png','wb').write(base64.b64decode(json.load(sys.stdin)['data'][0]['b64_json']))"

Image-to-image (редактирование)

Чтобы преобразовать или дополнить существующее изображение, отправьте запрос multipart/form-data на /v1/images/edits с одним или несколькими опорными изображениями и промптом. Это поверхность для image-to-image и инпейнтинга.

Окно терминала
curl https://api.ru-llm.relay2.xyz/v1/images/edits \
-H "Authorization: Bearer sk-ru-YOUR_KEY" \
-F model="gpt-image-2" \
-F prompt="Put the panda on a snowy mountain at dawn" \
-F image[]="@panda.png" \
-F size="1024x1024"
Поле формыОбязательноОписание
modelДаID модели изображений (gpt-image-2).
promptДаЧто изменить или сгенерировать на основе опорного изображения.
image[]ДаОдно или несколько опорных изображений (исходник для редактирования).
maskНетНеобязательная PNG-маска редактируемой области (инпейнтинг).
n, size, qualityНетТот же смысл, что и при генерации.

Ответ — тот же формат изображений OpenAI (base64 b64_json), что и при генерации.

Тарификация

Основа тарификации зависит от модели — см. страницу Модели и цены и страницу цен в консоли для актуальных тарифов.

  • gpt-image-2 тарифицируется потокенно, по input_tokens / output_tokens из блока usage ответа. Эти счётчики растут с size и quality, поэтому потокенная тарификация естественно учитывает разрешение и качество.
  • gemini-3.1-flash-image тарифицируется за каждое сгенерированное изображение (тариф per_image), списание — за каждое изображение в массиве data.

Списание идёт против заблокированных средств по принципу fail-closed, поэтому счёт с нулевым балансом отклоняется с кодом 402 ещё до обращения к провайдеру.

Устранение неполадок

СимптомПричинаРешение
401 UnauthorizedКлюч отсутствует или неверенПередайте корректный ключ sk-ru-….
402 Payment RequiredНулевой балансПополните в консоли → Billing.
400 не модель изображенийID — это чат- или embedding-модельИспользуйте gpt-image-2 или gemini-3.1-flash-image.
400 неизвестная модельID отсутствует в каталогеПроверьте GET /v1/models.
400 ожидался multipart/v1/images/edits отправлен как JSONОтправляйте edits как multipart/form-data (используйте -F, а не -d).