Images API
Два эндпоинта: генерация (текст → изображение) и редактирование (изображение + текст → изображение). Ответ в обоих случаях имеет стандартную структуру OpenAI — data[0].b64_json.
Seedream и Qwen-Image не поддерживают /v1/images/edits: режим «изображение → изображение» работает через эндпоинт generations, но поля для референсных изображений у них разные — Seedream использует image, Qwen — input_images; не перепутайте их. Если для Gemini нужно управлять разрешением (от 512 до 4K), используйте нативный протокол Gemini. Различия в параметрах описаны на странице каждого семейства.
Быстрый старт
Минимальный рабочий запрос: сгенерировать одно изображение 1024×1024, декодировать его и сохранить как output.png.
https://api.ofox.io/v1https://api.ofox.io/v1/images/generationshttps://api.ofox.io/v1/images/editsopenai/gpt-image-2.5-flarePython
import base64
from openai import OpenAI
client = OpenAI(
api_key="YOUR_OFOX_API_KEY",
base_url="https://api.ofox.io/v1",
timeout=600, # Images API отвечает синхронно и может работать долго
)
resp = client.images.generate(
model="openai/gpt-image-2.5-flare",
prompt="Красное яблоко на белом столе",
size="1024x1024",
quality="low",
)
with open("output.png", "wb") as f:
f.write(base64.b64decode(resp.data[0].b64_json))API отвечает синхронно — установите таймаут клиента на 600 секунд. Запросы с высоким качеством, большим размером и запросы на редактирование могут выполняться несколько минут; см. замеры задержки.
Все семейства вызываются одинаково — меняется только model. Допустимые значения и параметры, специфичные для семейства, различаются; см. описание каждого параметра ниже.
Генерация изображений
POST https://api.ofox.io/v1/images/generationsПараметры запроса
Значения и значения по умолчанию ниже относятся к семейству GPT Image (gpt-image-2.5-flare, gpt-image-2.5-sunburst, gpt-image-2). Отличия других семейств указаны отдельно. Подробности замеров: семейство GPT Image.
ID модели; регистр учитывается — при ошибке в ID возвращается 404 model_not_found.
▸ Подробнее
Поддерживаемые модели перечислены в таблице в начале страницы. Указывайте полный ID с префиксом поставщика, например openai/gpt-image-2.5-flare.
Описание изображения, которое нужно сгенерировать.
Размер результата. Можно задать произвольные ширину и высоту, но они должны соответствовать четырём правилам, иначе возвращается 400 Invalid size.
▸ Подробнее
Четыре правила:
- Ширина и высота делятся на 16
- Длинная сторона ≤ 3840
- Соотношение сторон от 1:3 до 3:1
- Общее число пикселей ≥ 655,360 (
768x768недопустимо,1024x768допустимо)
Если параметр не указан или равен auto, размер выбирает модель — по нашим замерам, 1254×1254. Если нужен фиксированный размер, укажите его явно. У других семейств правила размеров другие — см. страницу соответствующего семейства. Подробнее: GPT Image · размер.
Уровень качества; напрямую определяет цену. У gpt-image-2 нет xhigh / max.
▸ Подробнее
- У
gpt-image-2нетxhigh/max— они возвращают 400. - Значения эпохи DALL·E
standard/hdне принимаются — они возвращают 400. - Отсутствие параметра не равнозначно
medium: уровень выбирает модель (по нашим замерам —low). Для стабильного качества и стоимости задавайте его явно.
У большинства других семейств уровней качества нет — см. страницу соответствующего семейства. Подробнее: GPT Image · качество.
Количество изображений; каждое оплачивается отдельно. Модели Gemini не поддерживают этот параметр — не передавайте его.
Формат выходного файла.
▶Дополнительные · 7output_compression · background · moderation · stream · partial_images · input_images · extra_body.provider.typeExpand
Уровень сжатия; только для jpeg / webp.
Фон. Для transparent нужен формат с альфа-каналом (png / webp).
Строгость модерации контента.
Потоковая передача ответа. Вместе с partial_images позволяет получать промежуточные изображения в процессе генерации.
Количество промежуточных изображений в потоке; требует stream: true. Согласно документации OpenAI, каждое промежуточное изображение добавляет 100 выходных токенов.
Массив референсных изображений (URL или base64), только для семейства Qwen, от 1 до 3 штук.
▸ Подробнее
Другие семейства принимают его без ошибки, но он не действует; у Seedream поле для референсных изображений называется image.
Выбор провайдера. Необязателен и обычно не нужен — шлюз маршрутизирует запросы автоматически. Имеет смысл, если у вас есть требования к модерации контента; после выбора провайдера запросы не переключаются на другого провайдера, если выбранный недоступен.
▸ Подробнее
Эквивалентен заголовку X-OfoxAI-Provider-Type. См. Дополнительно: закрепление провайдера.
Ответ
{
"created": 1777385517,
"data": [
{ "b64_json": "iVBORw0KGgoAAAANSUhEUgAA…", "index": 0 }
],
"model": "openai/gpt-image-2.5-flare",
"size": "1024x1024",
"quality": "low",
"usage": {
"input_tokens": 13,
"input_tokens_details": { "text_tokens": 13 },
"output_tokens": 196,
"output_tokens_details": { "image_tokens": 196 },
"total_tokens": 209
}
}Изображение в base64, без префикса data:image/png;base64,.
▸ Подробнее
Декодируйте и запишите в файл; для отображения в браузере добавьте префикс самостоятельно. Поля url в ответе нет.
Индекс изображения; различает изображения при n > 1.
Фактический размер результата. Если size не был указан или был равен auto, фактический размер можно узнать здесь.
Фактически использованный уровень качества. Если quality не был указан, здесь видно, какой уровень применён.
Фактически использованные фон и формат. Возвращаются не всегда — не полагайтесь на эти два поля.
Расход для тарификации. output_tokens — токены выходного изображения; input_tokens_details.text_tokens — токены промпта.
▸ Подробнее
По этим значениям рассчитывается стоимость вызова.
Редактирование изображений
POST https://api.ofox.io/v1/images/editsЭтот эндпоинт поддерживает GPT Image, Nano Banana (Gemini) и MAI Image. Для Seedream и Qwen-Image он возвращает 400 endpoint_not_supported — используйте поле референсных изображений эндпоинта генерации; см. Seedream и Qwen-Image.
Параметры запроса
Передаются как поля формы multipart/form-data вместе с загружаемым файлом изображения. Значения и значения по умолчанию также относятся к семейству GPT Image.
ID модели; правила те же, что для генерации. Поддерживаемые модели перечислены в таблице в начале страницы.
Референсное изображение в виде локального файла (в cURL — с префиксом @), а не URL.
▸ Подробнее
Для нескольких изображений повторите поле как image[]. Не более 15 МБ на файл и не более 50 МБ на тело запроса; шлюз не ограничивает количество изображений, рекомендуется не более 16.
Инструкция для редактирования.
Маска для инпейнтинга: PNG с альфа-каналом того же размера, что и image; прозрачная область — то, что перерисовывается.
▸ Подробнее
Действует только на этом эндпоинте — при генерации молча игнорируется. Как подготовить маску и результаты замеров: GPT Image · инпейнтинг по маске.
Размер результата; правила те же, что для генерации.
▸ Подробнее
Если параметр не указан или равен auto, размер выбирает модель — совпадение с исходным не гарантируется. Чтобы сохранить исходный размер, укажите его явно.
Уровень качества; правила те же, что для генерации — у gpt-image-2 нет xhigh / max.
Количество изображений; каждое оплачивается отдельно.
▶Дополнительные · 1X-OfoxAI-Provider-TypeExpand
Выбор провайдера. Необязателен и обычно не нужен — шлюз маршрутизирует запросы автоматически. Имеет смысл, если у вас есть требования к модерации контента; после выбора провайдера запросы не переключаются на другого провайдера, если выбранный недоступен.
▸ Подробнее
Этот эндпоинт принимает multipart-загрузку, поэтому закрепить провайдера можно только заголовком — поле формы extra_body молча игнорируется. См. Дополнительно: закрепление провайдера.
Ответ
Структура та же, что при генерации; в usage добавляются входные токены референсных изображений:
{
"created": 1777385669,
"data": [
{ "b64_json": "iVBORw0KGgoAAAANSUhEUgAA…", "index": 0 }
],
"model": "openai/gpt-image-2",
"size": "auto",
"quality": "low",
"usage": {
"input_tokens": 1041,
"input_tokens_details": { "image_tokens": 1024, "text_tokens": 17 },
"num_input_images": 1,
"output_tokens": 358,
"total_tokens": 1399
}
}Входные токены, начисленные за референсные изображения. По нашим замерам, одно референсное изображение 1024×1024 даёт 1,024 токена. Именно из-за этого редактирование стоит дороже, чем генерация изображения того же размера по тексту.
Количество референсных изображений. Позволяет убедиться, что модель действительно их прочитала.
Остальные поля такие же, как в ответе генерации.
Поддерживаемые модели и цены см. в Каталоге моделей .
Вызов
Python
import base64
from openai import OpenAI
client = OpenAI(api_key="YOUR_OFOX_API_KEY", base_url="https://api.ofox.io/v1", timeout=600)
with open("apple.png", "rb") as f:
resp = client.images.edit(
model="openai/gpt-image-2",
image=f,
prompt="Сделай яблоко зелёным, остальное оставь без изменений",
size="auto",
quality="low",
)
with open("apple_edited.png", "wb") as out:
out.write(base64.b64decode(resp.data[0].b64_json))В поле image передавайте локальный путь к файлу (в cURL — с префиксом @), а не URL.
Сравнение по замерам:
Ошибки
При ошибке возвращается HTTP-статус ошибки и следующее тело (по замерам):
{
"error": {
"code": null,
"message": "The model 'gpt-image-2' does not support quality 'xhigh'.",
"param": null,
"request_id": "fbe4f24c-779d-41a0-8b3a-c62886cdd1ae",
"type": "image_generation_user_error"
}
}code может быть null. Ориентируйтесь на HTTP-статус и message.
Обращаясь в поддержку, приложите request_id и сведения об ошибке (HTTP-статус и error.message) из ответа. Рекомендуем записывать их в свои логи.
Дополнительно: закрепление провайдера
Необязательно и обычно не нужно. Все три модели GPT Image (gpt-image-2.5-flare, gpt-image-2.5-sunburst, gpt-image-2) обслуживаются провайдерами azure_foundry и openai — как для генерации, так и для редактирования. Без закрепления шлюз маршрутизирует запросы автоматически.
Выбирайте провайдера, если у вас есть требования к модерации контента. В этом случае запросы отправляются только этому провайдеру; если он недоступен, автоматического переключения на другого провайдера не происходит.
Указание провайдера, который не обслуживает модель, возвращает 400 provider_type_unavailable.
Два провайдера openai/gpt-image-2 модерируют по разным стандартам. Если промпт раз за разом отклоняется, можно явно указать openai. Без указания провайдера запросы распределяются по весам и могут попасть в azure_foundry.
Текст в изображение — /v1/images/generations
Тело запроса в формате JSON, поэтому работают оба способа: поле тела extra_body.provider.type и заголовок X-OfoxAI-Provider-Type.
Python
resp = client.images.generate(
model="openai/gpt-image-2",
prompt="A simple red apple on a white table",
size="1024x1024",
extra_body={"extra_body": {"provider": {"type": "openai"}}},
)В официальных SDK OpenAI extra_body должен присутствовать в теле запроса как буквальный ключ. В TypeScript SDK достаточно записать extra_body прямо в объекте параметров. Аргумент extra_body= в Python SDK сливает своё содержимое с верхним уровнем тела, поэтому вложите ключ на уровень глубже либо используйте заголовок.
Изображение в изображение — /v1/images/edits
У multipart-загрузки нет JSON-тела, в которое можно вложить extra_body, поэтому здесь работает только заголовок.
curl https://api.ofox.io/v1/images/edits \
-H "Authorization: Bearer $OFOX_API_KEY" \
-H "X-OfoxAI-Provider-Type: openai" \
-F "model=openai/gpt-image-2" \
-F "prompt=..." \
-F "image=@input.png"В SDK: в Python передайте extra_headers={"X-OfoxAI-Provider-Type": "openai"}; в TypeScript передайте { headers: { 'X-OfoxAI-Provider-Type': 'openai' } } вторым аргументом.
В /v1/images/edits переданный полем формы extra_body молча игнорируется: изображение создаётся как обычно, но ограничение не действует. Используйте X-OfoxAI-Provider-Type.
Полный справочник: API · Маршрутизация провайдеров.
Официальная документация и дополнительные материалы
Официальная документация описывает поведение при прямом обращении к OpenAI. Если она расходится с замерами OfoxAI, приоритет имеют замеры на этом сайте.
Официальная документация OpenAI
- Руководство по генерации изображений · Генерация изображений
- Руководство по генерации изображений · Редактирование изображений
- Руководство по генерации изображений · Редактирование изображения с маской
- Руководство по генерации изображений · Параметры размера и качества
- Руководство по генерации изображений · Расчёт стоимости
- Справочник Images API
Страницы семейств OfoxAI
- Обзор семейства GPT Image: выбор модели, размер, качество, задержка, ошибки
- Текст в изображение
- Редактирование и объединение изображений
- Инпейнтинг
- Семейство Nano Banana (Gemini Image) и устранение ошибок
- Семейство Seedream
- Семейство Qwen-Image
- Семейство MAI Image

