Изображения
Два эндпоинта: POST /v1/images/generations для генерации по тексту и POST /v1/images/edits для работы по картинке-образцу.
Генерация
Заголовок раздела «Генерация»import base64
img = client.images.generate( model="flux-2-pro", prompt="Портрет рыжего кота в скафандре, студийный свет", # aspect_ratio/resolution — расширения Mixen: OpenAI SDK такие kwargs # не принимает, поэтому их передают через extra_body extra_body={"aspect_ratio": "2:3", "resolution": "2k"},)with open("cat.png", "wb") as f: f.write(base64.b64decode(img.data[0].b64_json))const img = await client.images.generate({ model: 'flux-2-pro', prompt: 'Портрет рыжего кота в скафандре, студийный свет', aspect_ratio: '2:3', resolution: '2k',})await Bun.write('cat.png', Buffer.from(img.data[0].b64_json, 'base64'))curl https://api.mixen.ai/v1/images/generations \ -H "Authorization: Bearer $MIXEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "flux-2-pro", "prompt": "Портрет рыжего кота в скафандре, студийный свет", "aspect_ratio": "2:3", "resolution": "2k" }'| Поле | Описание |
|---|---|
model |
Идентификатор картиночной модели или псевдонимы dall-e-3 / gpt-image-1 |
prompt |
Описание изображения |
n |
Сколько картинок, от 1 до 4 |
size |
Явный размер WxH |
aspect_ratio |
Соотношение сторон, например 16:9; по умолчанию 1:1 |
resolution |
1k, 2k или 4k; по умолчанию 1k |
quality |
low или medium — только у моделей с такой ручкой |
background |
transparent | opaque | auto — только GPT Image 2.5; transparent требует output_format: png или webp |
output_format |
png | jpeg | webp — только GPT Image 2.5; по умолчанию png |
response_format |
Принят для совместимости и игнорируется: ответ всегда содержит b64_json, url не отдаётся |
size и пара aspect_ratio + resolution — два способа сказать одно и то же. Указывайте что-то одно.
Допустимые значения у каждой модели свои и приходят в каталоге полями sizes, aspect_ratios, resolutions. Значение вне списка вернёт 400.
Допустимые значения у каждой модели свои и приходят в каталоге полями sizes, aspect_ratios, resolutions. Значение вне списка вернёт 400.
Потолок промпта
Заголовок раздела «Потолок промпта»Длина промпта ограничена, лимит у каждой модели свой и приходит в каталоге полем prompt_max_chars. Превышение вернёт 400 до списания:
| Модель | Максимум |
|---|---|
| GPT Image 2.5 (Flare/Sunburst) | 20 000 символов |
| GPT Image 2 | 32 000 символов |
| MAI-Image 2.5 / 2.6 (все тиры) | 20 000 символов |
| Grok Imagine Image 2.0 | 8 000 символов |
| Qwen Image 3, Flux 2 | жёсткого отказа нет — длинный текст тихо усекается вендором |
| Nano Banana, Seedream | лимит не публикуется |
Лимиты получены живыми отказами апстрима на заведомо огромном промпте (сверка 2026-09-10) и официальными доками; актуальное значение всегда смотрите в prompt_max_chars каталога.
GPT Image 2.5: прозрачный фон и до 16 образцов
Заголовок раздела «GPT Image 2.5: прозрачный фон и до 16 образцов»Серия gpt-image-2.5-flare (быстрый тир) и gpt-image-2.5-sunburst (тир точности) добавляет:
- Прозрачный фон —
background: "transparent"вырезает объект без подложки; формат должен бытьpngилиwebp(JPEG не держит альфу).autoотдаёт решение модели по промпту,opaqueпринудительно заливает фон. - До 16 картинок-образцов в
/v1/images/edits— собирайте коллажи из товаров, референсов стиля и персонажей. - Промпт до 20 000 символов (
prompt_max_charsв каталоге) — загружайте брифы целиком. - Форматы кадра от 1:3 до 3:1 — включая ультра-широкие
3:1и вертикальные1:3, до 4K.
curl https://api.mixen.ai/v1/images/generations \ -H "Authorization: Bearer $MIXEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-image-2.5-flare", "prompt": "Логотип Mixen AI, неоновая молния, монохром", "aspect_ratio": "1:1", "background": "transparent", "output_format": "png" }'В каталоге ручка объявлена полями background и output_formats; чужой модели эти параметры вернут 400.
Редактирование по образцу
Заголовок раздела «Редактирование по образцу»POST /v1/images/edits принимает multipart/form-data: одну или несколько картинок в поле image, плюс те же параметры, что у генерации.
curl https://api.mixen.ai/v1/images/edits \ -H "Authorization: Bearer $MIXEN_API_KEY" \ -F model=gpt-image-2.5-sunburst \ -F image=@cat.png \ -F image=@space-suit.png \ -F prompt="Переодень кота в костюм космонавта, фон оставь"Принимает ли модель картинки-образцы на вход — boolean-флаг references в каталоге.
Тарификация образцов: у моделей, которые апстрим тарифицирует по SKU «изображение» (например Qwen Image 3 и Grok Imagine), каждая входная картинка добавляется в чек — база за генерацию + ставка за образец (колонка «Вход / изображение» в таблице провайдеров на витрине). У моделей без такой ставки чек остаётся плоским.
Практическая деталь: при переносе стиля модель наследует от образца не только композицию, но и цветовую гамму. Если нужен другой колорит, описывайте его в промпте явно.
Асинхронности здесь нет
Заголовок раздела «Асинхронности здесь нет»Оба эндпоинта отвечают синхронно, готовой картинкой. Генерация занимает от нескольких секунд до полуминуты — ставьте таймаут HTTP-клиента не меньше 120 секунд, иначе оборвёте запрос, за который уже списаны деньги.
Цена до запуска
Заголовок раздела «Цена до запуска»POST /v1/images/price принимает то же тело, что и POST /v1/images/generations, и возвращает сумму, не запуская генерацию и ничего не списывая. Считается той же формулой, что и фактическое списание (разрешение × n), поэтому котировка совпадает с чеком; валидация тоже общая — невалидные параметры дадут те же 400/404, что и запуск.
Исключение — модели с токен-тарифом (microsoft/mai-image-*): апстрим биллит по фактическим токенам, поэтому списание приходит по чеку usage генерации — квота остаётся близкой оценкой (как длительность у Seed Audio).
{ "object": "price", "model": "gpt-image-1", "model_id": "gpt-image-2", "price": {"rub": 12.0069, "usd": 0.13}, "per_unit": {"rub": 4.0023, "unit": "image"}, "quantity": 3, "params": {"aspect_ratio": "16x9", "resolution": "2k", "size": null, "quality": null, "n": 3}}Рублёвая сумма считается по живому курсу — берите котировку непосредственно перед запуском, а не кешируйте.