kosareva.cloud
RU
РусскийEnglish

API изображений

Картинки в kosareva.cloud создаются через POST /v1/images/generations и правятся через POST /v1/images/edits. Ключ тот же, что у текстовых моделей, формат как у OpenAI, поэтому подходит обычный OpenAI SDK.

Генерация

Запрос на /v1/images/generations. Цена у большинства моделей фиксирована за картинку и не зависит от размера, у GPT Image 2.5 считается по токенам, как у самой модели.

curl https://api.kosareva.cloud/v1/images/generations \
  -H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-image-2","prompt":"Белые кроссовки на светлом фоне","size":"1024x1024"}'
import base64
import urllib.request
from openai import OpenAI

client = OpenAI(api_key="ВАШ_API_КЛЮЧ", base_url="https://api.kosareva.cloud/v1")

result = client.images.generate(
    model="gpt-image-2",
    prompt="Минималистичный постер кофейни, мягкий утренний свет",
    size="1024x1024",
)

image = result.data[0]
if image.b64_json:
    with open("poster.png", "wb") as file:
        file.write(base64.b64decode(image.b64_json))
else:
    urllib.request.urlretrieve(image.url, "poster.png")

Генерация через чат

Модель nano-banana-2-1 вызывается как обычный чат: запрос на /v1/chat/completions, описание картинки в messages. Картинка приходит строкой data:image/…;base64 в поле message.images или в content, поэтому код ниже проверяет оба места.

import base64
import re
from openai import OpenAI

client = OpenAI(api_key="ВАШ_API_КЛЮЧ", base_url="https://api.kosareva.cloud/v1")

response = client.chat.completions.create(
    model="nano-banana-2-1",
    messages=[{"role": "user", "content": "Минималистичный постер кофейни"}],
)

message = response.choices[0].message
images = (message.model_extra or {}).get("images") or []
source = images[0]["image_url"]["url"] if images else message.content
found = re.search(r"data:image/(\w+);base64,([A-Za-z0-9+/=]+)", source)
with open(f"poster.{found.group(1)}", "wb") as file:
    file.write(base64.b64decode(found.group(2)))

Правка по исходнику

Запрос на /v1/images/edits. Файл уходит в multipart/form-data, поле image. У апскейла и удаления фона prompt не нужен. Правка идёт дольше генерации, до 2 минут, поэтому таймаут HTTP-клиента ставьте от 180 секунд: с коротким клиент оборвёт запрос раньше, чем придёт картинка.

curl https://api.kosareva.cloud/v1/images/edits \
  -H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
  -F model="gpt-image-2" \
  -F image="@photo.png" \
  -F prompt="Замени фон на белый"
with open("photo.png", "rb") as source:
    result = client.images.edit(
        model="gpt-image-2",
        image=source,
        prompt="Сохрани композицию, замени фон на ночной город",
    )

Поля запроса

ПолеЧто задаёт
modelИмя модели из таблицы. Обязательно
promptОписание картинки или правки. Обязательно, кроме апскейла и удаления фона
imageИсходный файл, только для /v1/images/edits
sizeУ gpt-image-2 размер результата, например 1024x1024 или 1536x1024. У Seedream 4.5, FLUX.2 Pro и Flex, Wan 2.7 Image, Nano Banana Pro и nano-banana-2 только пропорции кадра, число пикселей через API не меняется. GPT Image 2.5 и FLUX.1-schnell получают поле как есть. Остальные модели поле не читают: запрос пройдёт, но картинка выйдет в их формате по умолчанию
qualityЗапрос не сломает, но на результат и цену не влияет
nРассчитывайте на одну картинку за запрос. Исключение nano-banana-2: от 1 до 4, каждая оплачивается отдельно
response_formatb64_json, если нужен base64 вместо ссылки

Что вернётся

Ответ /v1/images кладёт картинку в одно из двух полей: data[0].b64_json или ссылкой в data[0].url. Какое заполнено, зависит от модели, поэтому код выше проверяет оба.

  • Нужен base64 там, где пришла ссылка: передайте response_format: "b64_json".
  • Сохраняйте файл сразу: ссылка временная, рассчитывайте на сутки.
  • Запрос с ошибкой не списывается, платный только успешный ответ.

Модели и цены

В каталоге 33 модели: 26 на /v1/images/generations, 1 через чат, 13 для правки.

МодельИмя в запросеЦенаГенерацияПравки
Nano Banana 2nano-banana-2от 10,4 ₽да—
Nano Banana 2.1nano-banana-2-1от 9,4 ₽через чат—
Nano Banana Pro (Gemini 3 Pro Image)nano-banana-pro-gemini-3-pro-imageот 16 ₽дада
FLUX.1-schnellflux-1-schnellот 1,4 ₽да—
GPT Image 2gpt-image-2от 4,5 ₽дада
GPT Image 2.5gpt-image-2-5около 6,7 ₽да—
Seedream 4.5seedream-4-5от 4,5 ₽дада
FLUX.2 Flexflux-2-flexот 13 ₽дада
FLUX.2 Proflux-2-proот 3,5 ₽дада
GPT Image 2.5 Sunburstgpt-image-2-5-sunburstоколо 6,7 ₽да—
GPT Image 2.5 Flaregpt-image-2-5-flareоколо 6,7 ₽да—
Imagen 4imagen-4от 9,7 ₽да—
Imagen 4 Fastimagen-4-fastот 4,9 ₽да—
Imagen 4 Ultraimagen-4-ultraот 14,6 ₽да—
FLUX Kontext Proflux-kontext-proот 6,1 ₽да—
FLUX Kontext Maxflux-kontext-maxот 12,2 ₽да—
Seedream 4.0seedream-4-0от 6,1 ₽да—
Seedream 5.0 Liteseedream-5-0-liteот 6,7 ₽да—
Ideogram V3ideogram-v3от 6,5 ₽да—
Qwen Image 3.0qwen-image-3-0от 5,8 ₽да—
Qwen Image 3.0 Proqwen-image-3-0-proот 7,8 ₽да—
Wan 2.7 Imagewan-2-7-imageот 3,3 ₽дада
Wan 2.7 Image Prowan-2-7-image-proот 8,1 ₽дада
Z-Image Basez-image-baseот 1 ₽да—
Gemini 2.5 Flash Imagegemini-2-5-flash-imageот 4,9 ₽да—
Gemini 3.1 Flash-Lite Imagegemini-3-1-flash-lite-imageот 4,9 ₽да—
Grok Imagine Image 2.0grok-imagine-image-2-0от 4,9 ₽да—
GPT Image 1.5gpt-image-1-5от 4,9 ₽—да
Seedream 5.0 Proseedream-5-0-proот 8,5 ₽—да
Qwen Image 2.0qwen-image-2-0от 6,8 ₽—да
Topaz Image Upscaletopaz-image-upscaleот 12,2 ₽—да
Recraft Crisp Upscalerecraft-crisp-upscaleот 0,6 ₽—да
Recraft Remove Backgroundrecraft-remove-backgroundот 1,2 ₽—да

Прочерк значит, что модель этот путь не принимает или мы его не подтвердили, поэтому рассчитывать на него не стоит. Запрос с ошибкой не списывается. Цены за картинку минимальные, у некоторых моделей крупный размер стоит дороже, точные условия на странице модели. Обзор моделей на странице API генерации изображений.