Сервис редактирования изображений OpenAI позволяет передавать любое количество изображений и инструкций, возвращая изменённые изображения. В настоящее время интерфейс поддерживает моделиDocumentation Index
Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
Use this file to discover all available pages before exploring further.
dall-e-2, gpt-image-1, новейшую gpt-image-2, а также серию моделей nano-banana / nano-banana-2 / nano-banana-pro, подключённых через тот же интерфейс.
В этом документе описан процесс использования OpenAI Images Edits API, с помощью которого можно легко использовать официальные функции редактирования изображений OpenAI.
Процесс подачи заявки
Чтобы использовать OpenAI Images Edits API, сначала перейдите на страницу OpenAI Images Edits API и нажмите кнопку «Acquire» для получения необходимых учётных данных:
Если вы ещё не вошли в систему или не зарегистрированы, произойдёт автоматический переход на страницу входа, где вы сможете зарегистрироваться и войти. После входа вы автоматически вернётесь на текущую страницу.
При первом запросе предоставляется бесплатный лимит для использования API.
Модель GPT-Image-2
В сценариях редактирования изображенийgpt-image-2 значительно превосходит gpt-image-1 по следующим параметрам:
- Более стабильное сохранение структуры: при смене скина, цветовой схемы или фона почти не нарушается компоновка и структура исходного изображения.
- Точное сохранение текста: текст на инфографике, плакатах, меню и других изображениях остаётся чётким и читаемым после редактирования.
- Поддержка передачи URL напрямую: кроме традиционной загрузки файлов через
multipart/form-data,gpt-image-2поддерживает передачу URL изображения в формате JSON, что избавляет от необходимости скачивать изображения локально — удобно для серверных пайплайнов. - Поддержка редактирования с увеличением разрешения: можно передать исходное изображение с разрешением 1K и запросить вывод в 2K или 4K через параметр
size, модель одновременно выполнит редактирование и масштабирование.
Поддерживаемые значения size и тарифные уровни
Ограничения параметра size в интерфейсе редактирования совпадают с интерфейсом генерации — gpt-image-2 принимает size равным auto, пустому значению или формату WIDTHxHEIGHT. Любые другие значения вызовут ошибку 400. Тарифы делятся на два уровня, не зависящих от разрешения исходного изображения, а только от запрошенного size:
- 1K стандартный тариф: любое рекомендованное 1K разрешение из таблицы ниже или распространённые 1K алиасы (
1254x1254,1672x941,941x1672). - Другие уровни (1.5×): рекомендованные 2K / 4K разрешения из таблицы или любые пользовательские значения
WIDTHxHEIGHT.
| Соотношение сторон | 1K (стандарт) | 2K рекомендовано (×1.5) | 4K рекомендовано (×1.5) |
|---|---|---|---|
| 1:1 | 1024x1024 | 2048x2048 | 2880x2880 |
| 4:3 | 1536x1024 | 2048x1536 | 3264x2448 |
| 3:4 | 1024x1536 | 1536x2048 | 2448x3264 |
| 16:9 | 1792x1024 | 2048x1152 | 3840x2160 |
| 9:16 | 1024x1792 | 1152x2048 | 2160x3840 |
Например: если исходное изображение1024x1024, аsizeзадано как2048x2048, модель отрисует 2K изображение согласно инструкции и будет тарифицироваться по уровню «другие»; приsize3840x2160будет выведено 4K горизонтальное изображение с тарифом «другие»; приautoили отсутствии параметра — тариф 1K.
О параметреНиже приведены два реальных примера, демонстрирующих возможности редактированияnВ интерфейсе редактированияgpt-image-2не поддерживаетсяn > 1: параметр игнорируется, и независимо от значенияnвозвращается только одно изображение, тарифицируемое как одно. Если нужно получить несколько вариантов, следует самостоятельно параллельно отправлять несколько запросов. Это ограничение также действует дляgpt-image-1/gpt-image-1.5и серииnano-banana. Модельdall-e-2— единственная, которая нативно поддерживаетn > 1.
gpt-image-2.
Способ вызова 1: JSON + URL изображения (рекомендуется)
Отправьте запрос с заголовкомapplication/json, в поле image укажите URL изображения, модель загрузит его и отредактирует согласно prompt.
Например, исходное изображение — научно-популярная инфографика, созданная с помощью gpt-image-2:


Совет: полеimageподдерживает передачу массива URL, например"image": ["url1", "url2", "url3"], максимум 16 изображений, чтобы модель могла учитывать несколько референсов при редактировании.
Способ вызова 2: JSON + несколько изображений
gpt-image-2 позволяет одновременно использовать несколько изображений для создания итогового результата, например, объединить несколько фото продуктов в одну подарочную корзину:
Пример сценария: смена стиля с сохранением структуры
Другой пример — заменить деревянную книжную полку на современную подвесную, строго сохранив количество и расположение книг на полках. Исходное изображение (сгенерированоgpt-image-2):

task_id: e9544dba-727e-44a2-81e1-223d49869380):

Способ вызова 3: multipart/form-data (совместимо с OpenAI SDK)
Если вы используете официальный OpenAI Python SDK, традиционный способ загрузки черезmultipart/form-data также работает, достаточно указать model как gpt-image-2:
OPENAI_BASE_URL в значение https://api.xhuoapi.ai/v1/openai и OPENAI_API_KEY — полученный токен:
Серия моделей Nano Banana
Серияnano-banana также подключена к /openai/images/edits. Достаточно указать в параметре model любое из значений из таблицы ниже.
| Модель | Стоимость (кредиты за запрос) | Сценарии использования |
|---|---|---|
nano-banana | 0.14 | Обычное редактирование изображений, самая высокая скорость и низкая стоимость |
nano-banana-2 | 0.28 | Значительно улучшенное качество и детализация |
nano-banana-pro | 0.35 | Флагман серии, лучшее сохранение структуры, текста и стиля |
Важно: поддерживаемые параметры Nano Banana подключается через адаптер OpenAI протокола и поддерживает только параметры:model,prompt,image.
imageможно передавать как файл черезmultipart/form-data(внутри worker преобразует вdata:<mime>;base64,...для апстрима), либо как URL в виде строки.- Параметры
mask,n,size,response_formatне поддерживаются и игнорируются.- Ответ соответствует формату OpenAI (
data[].url), но полеcreatedвсегда равно0,b64_jsonне возвращается, аrevised_promptвсегда совпадает с исходнымprompt.
Вызов через форму + URL изображения

Вызов через форму + локальный файл
Асинхронный callback
Механизм асинхронного callback черезcallback_url также работает с nano-banana, процесс вызова идентичен другим моделям, подробнее в разделе Асинхронный callback.
Основное использование
Далее пример вызова через CURL:authorization (выбирается из выпадающего списка), model (выбор модели OpenAI, подробности выше), prompt (текст запроса для генерации изображения) и image (путь к редактируемому изображению). Пример исходного изображения:

OPENAI_BASE_URL в https://api.xhuoapi.ai/v1/openai и OPENAI_API_KEY — полученный токен. В macOS это можно сделать так:
gift-basket.png с результатом:

dall-e-2, gpt-image-1 и gpt-image-2. Рекомендуется использовать gpt-image-2, подробнее в разделе Модель GPT-Image-2.
Асинхронный callback
Поскольку время редактирования изображения может быть значительным, при длительном отсутствии ответа API HTTP-соединение остаётся открытым, что приводит к дополнительным затратам ресурсов. Поэтому API поддерживает асинхронные callback. Общий процесс: клиент при запросе дополнительно указывает полеcallback_url. API сразу возвращает ответ с полем task_id — идентификатором задачи. После завершения обработки результат редактирования отправляется POST-запросом в формате JSON на указанный callback_url, включая task_id для связи с задачей.
Рассмотрим пример.
Webhook callback — это HTTP-сервис, который должен принимать запросы. Разработчик должен заменить URL на свой сервер. Для демонстрации можно использовать публичный сервис https://webhook.site/, где можно получить URL webhook, например:
Скопируйте URL, например https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab, и укажите его в поле callback_url вместе с остальными параметрами:
task_id и поле data с результатом редактирования, аналогичным синхронному вызову. По task_id можно связать задачу и результат.
Обработка ошибок
При ошибках API возвращает соответствующий код и сообщение, например:400 token_mismatched: неверный запрос, возможно, отсутствуют или некорректны параметры.400 api_not_implemented: неверный запрос, возможно, отсутствуют или некорректны параметры.401 invalid_token: неавторизован, неверный или отсутствующий токен.429 too_many_requests: превышен лимит запросов.500 api_error: внутренняя ошибка сервера.

