API редактирования изображений OpenAI изменяет существующее изображение на основе введенного запроса. Исходный маршрут: POST /v1/images/edits; он принимает изображение, запрос и дополнительные элементы управления редактированием, такие как маска или эталонные изображения. Используйте API «Image» для целенаправленного запроса, а API «Responses» — в тех случаях, когда продукту требуется многоэтапный рабочий процесс с изображениями.
Надежное редактирование представляет собой небольшой рабочий процесс: фиксация исходного файла, определение того, что должно остаться без изменений, определение того, что может быть изменено, проверка возвращаемых байтов и сохранение утвержденного ресурса. Если вы предпочитаете переключаться между моделями изображений и другими медиа-инструментами в одном рабочем пространстве, создание и редактирование изображений с помощью GPT Image 2 в GlobalGPT; его публичный API использует другой контракт асинхронных задач, который в данном руководстве выделен отдельно от собственного конечного пункта OpenAI.
Краткий ответ: сначала определитесь с подходом, а потом уже пишите код
| Нужда | Маршрут | Форма запроса | Результат, с которым нужно работать |
|---|---|---|---|
| Создание или редактирование одного изображения | API изображений OpenAI | POST /v1/images/edits, многостраничная форма | data[0].b64_json; декодировать и сохранить его |
| Несколько циклов с контекстом изображения | API ответов OpenAI | POST /v1/responses с помощью инструмента для генерации изображений | Извлечь элемент вывода, отвечающий за генерацию изображения |
| Несколько медиа-моделей, объединенных в один аккаунт | Открытый API GlobalGPT | POST /tasks, затем выполнить опрос GET /tasks/{id} | output.url; сохраните его до истечения 30-дневного срока |
Названия конечных точек выглядят схожими, но тела запросов и обработка результатов не являются взаимозаменяемыми.
Для чего предназначен API редактирования изображений OpenAI?
Процесс редактирования начинается с имеющегося изображения. Ваш запрос описывает изменения, а исходное изображение предоставляет визуальный контекст, который должен сохраниться после редактирования. Вы можете заменить фон, добавить или удалить элемент, провести более масштабную переработку стиля или передать несколько изображений в качестве эталонов. Модель по-прежнему интерпретирует запрос; API не является редактором пикселей с гарантированными границами выделения.
В документе OpenAI описаны два полезных рабочих процесса. В API для работы с изображениями является оптимальным решением, когда один запрос должен возвращать одно изображение. Этот API ответов лучше подходит в тех случаях, когда пользователь просматривает результат, запрашивает очередное изменение и сохраняет контекст изображения на протяжении всех итераций. Этот выбор влияет как на форму запроса, так и на код, извлекающий результат.
API «Image» и API «Responses»
| Вопрос | API для работы с изображениями | API ответов |
|---|---|---|
| Лучше всего подходит для | Одно действие «создать или отредактировать» | Многоэтапный процесс редактирования |
| Типичные входные данные | Многокомпонентное изображение, подсказка, опциональная маска | Функция ввода текста для разговора плюс инструмент для генерации изображений |
| Обработка выходных данных | data[0].b64_json | Найдите элемент вывода, отвечающий за генерацию изображений |
| Сведения о расходах | При прямом редактировании используются текущие скорости ввода/вывода | Правила ввода данных из кэша могут отличаться; уточняйте актуальные цены |
Выполните первое редактирование с помощью встроенного API OpenAI
Храните ключ API на вашем сервере и загружайте его из переменной среды. В приведенном ниже примере на конечную точку редактирования, описанную в документации, отправляется одно изображение и запрос. изображение[] Поле может повторяться, если выбранная модель поддерживает несколько входных данных. Конвейер оболочки декодирует первое возвращенное изображение в формате Base64 в локальный файл PNG.
Редактирование с помощью Native Curl: сохранение результата в формате b64_json
curl -s \
-X POST "https://api.openai.com/v1/images/edits" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F "model=gpt-image-2.5-sunburst" \
-F "image[]=@source.png" \
-F "prompt=Заменить только фон на тёплый бежевый студийный пейзаж; оставить продукт и этикетку без изменений." \
| jq -r '.data[0].b64_json' \
| base64 --decode > edited.pngИзменение в Python SDK: декодировать возвращенные байты
from openai import OpenAI
import base64
client = OpenAI()
result = client.images.edit(
model="gpt-image-2.5-sunburst",
image=open("source.png", "rb"),
prompt="Заменить только фон на теплую бежевую студийную сцену; оставить продукт и этикетку без изменений.",
)
image_bytes = base64.b64decode(result.data[0].b64_json)
with open("edited.png", "wb") as output:
output.write(image_bytes)Прежде чем считать этот файл готовым к использованию в производстве, проверьте декодированный файл: убедитесь в правильности его MIME-типа, размеров, количества байтов, а также в том, что все важные визуальные детали сохранились. Ответ с кодом 200 лишь означает, что запрос был принят; он не гарантирует, что этикетка, логотип или геометрия продукта сохранились.
Безопасное использование масок и эталонных изображений
Маска указывает модели, какую область вы хотите изменить, однако маскирование изображений в GPT по-прежнему основано на промптах. В руководстве по OpenAI содержится явное предупреждение о том, что модель использует маску в качестве ориентира, а не в качестве абсолютной пиксельной границы. В промпте следует четко указать, какой объект необходимо сохранить, и после генерации просматривать изображение целиком.
Предварительная проверка маски
- Изображение и маска имеют одинаковый формат.
- Изображение и маска имеют одинаковые размеры.
- Размер файла маски не превышает 50 МБ.
- Маска содержит альфа-канал.
- В подсказке указано, что должно остаться без изменений, а что следует заменить.
Проверьте маску перед загрузкой
from PIL import Image
source = Image.open("source.png")
mask = Image.open("mask.png")
assert source.format == mask.format, (source.format, mask.format)
assert source.size == mask.size, (source.size, mask.size)
assert mask.width * mask.height > 0
assert mask.mode in {"RGBA", "LA"}, mask.mode
assert mask.fp is None or True # отдельно проверить размер файла на диске
print("source:", source.size, source.format)
print("маска:", mask.size, mask.mode)Если вы передаете несколько изображений с маской, согласно текущему руководству маска применяется к первому изображению. Это полезное ограничение при разработке эталонного рабочего процесса: сделайте первым входным элементом тот ресурс, область которого вы намереваетесь отредактировать, а остальные изображения рассматривайте как эталоны, а не предполагайте, что маска охватывает все изображения.
Эталонные изображения решают иную задачу. Они могут служить ориентиром для определения идентичности продукта, стиля освещения, цветовой палитры или композиции. Они не обязывают модель точно воспроизводить каждый контур. Если форма упаковки или этикетка должны остаться неизменными, следует использовать этап визуальной проверки или стандартный этап редактирования после вывода модели.
Выберите модель и параметры
В текущем справочнике по изображениям OpenAI перечислены gpt-image-2.5-sunburst, gpt-image-2.5-flare, и gpt-image-2. Рассматривайте названия моделей и поддерживаемые параметры как «живую» документацию: перед интеграцией обязательно проверьте страницу модели, а если важна воспроизводимость результатов, зафиксируйте версию с указанием даты.
Решения по параметрам, позволяющие предотвратить излишние сбои
| Решение | Практическое правило | Почему это важно |
|---|---|---|
| Точность ввода | Пропустить точность ввода для gpt-image-2; входные изображения обрабатываются с высокой точностью. | Отправка неподдерживаемого поля может привести к тому, что действительный запрос на редактирование будет отклонен. |
| Качество | Документация по маршрутам «2.5 Sunburst» и «Flare» низкий, средний, высокий, xhigh, и макс.. | Более высокое значение — это выбор между стоимостью и задержкой, а не гарантия более качественного сохранения. |
| Формат | Запросите формат вывода, который поддерживает текущая конечная точка, а затем просмотрите декодированный файл. | Ваш конвейер хранения должен полагаться на данные в байтах и MIME-тип, а не только на заданный параметр. |
| Общая информация | Укажите желаемый фон в командной строке и, если это поддерживается, воспользуйтесь описанной в документации опцией фона. | Модель по-прежнему интерпретирует сцену; оставьте ограничения на объект явно указанными. |
| Список литературы | Используйте эталонное изображение в качестве ориентира для определения стиля, цветовой гаммы или освещения, а также определите роль каждого элемента. | Неоднозначные роли изображений затрудняют выявление отклонений. |
Сколько стоит API редактирования изображений OpenAI?
OpenAI рассчитывает стоимость использования GPT Image исходя из категорий токенов, а не по единой фиксированной цене за каждое редактирование. На текущей странице с ценами указаны отдельные тарифы для ввода изображений, ввода из кэша и вывода изображений. Прямые операции редактирования через Image API не подпадают под обработку «ввода из кэша», описанную для инструмента генерации изображений в Responses API, поэтому не следует копировать оценку из Responses в прямой /v1/images/edits бюджет.
Опубликованные курсы токенов изображений, проверено 28 сентября 2026 г.
| Модель | Ввод изображения / 1 млн токенов | Ввод изображения из кэша / 1 млн токенов | Вывод изображения / 1 млн токенов |
|---|---|---|---|
| GPT Image 2.5 | $8 | $2* | $30 |
| Образ GPT 2 | $4 | $1* | $15 |
*Столбец «cached-input» отображается для контекста опубликованных цен. В руководстве по ценообразованию указано, что параметр «cached-input» применяется к инструменту генерации изображений в API «Responses», а не к прямым запросам к API «Images», таким как /v1/images/edits. Тарифы могут изменяться; рассчитайте стоимость на основе данных об использовании, полученных в ответ на ваш запрос.
Составьте приблизительную оценку на основе данных об использовании
def estimate_image_cost(image_input_tokens, image_output_tokens,
input_rate, output_rate):
return (image_input_tokens / 1_000_000) * input_rate + \
(image_output_tokens / 1_000_000) * output_rate
# Только для примера: замените на значение, используемое в вашем ответе.
estimate = estimate_image_cost(
image_input_tokens=250_000,
image_output_tokens=120_000,
input_rate=4.00,
output_rate=15.00,
)
print(f"${estimate:.4f}")Данная формула представляет собой пример расчета, а не гарантию фиксированной стоимости за каждое изображение. При составлении собственного бюджета учитывайте повторные запросы, хранение файлов, а также любые отдельные текстовые операции или использование инструментов. Если результат имеет важное значение, храните запрос, ответ, хеш декодированного файла и решение об утверждении вместе.
В GlobalGPT используется другой контракт API для редактирования изображений
Сайт Документация по API GlobalGPT описывает генерацию изображений, видео и аудио как асинхронные медиазадачи. Его общедоступный базовый URL-адрес: https://api2.glbgpt.com/ai-api/open/v1. Отправить JSON на /задачи, опрос /задачи/{id}, и прочитайте output.url после успешного выполнения задачи. В каталоге моделей перечислены gpt-image-2 и gpt-image-2.5 в качестве маршрутов редактирования изображений и справочных маршрутов с количеством входных изображений до четырёх и соотношение сторон.

Документация по публичному API S05: Документация с открытым доступом, содержащая доказательства реализации контракта асинхронных задач; в данной статье он рассматривается отдельно от встроенного конечного пункта OpenAI для многочастного редактирования.

Каталог публичных моделей S06: Общедоступные данные из каталога моделей, касающиеся маршрутов GPT Image и задокументированных ограничений по задачам с изображениями; перед публикацией проверьте динамические указания на источники и поля.
Форма общедоступного задания GlobalGPT
BASE="https://api2.glbgpt.com/ai-api/open/v1"
# Необязательно: получить оценку стоимости без создания задачи или резервирования кредитов.
curl "$BASE/tasks/estimate" \
-H "Authorization: Bearer $GLOBALGPT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5",
"prompt": "Оставьте бутылку и этикетку без изменений. Замените только фон на тёплое бежевое студийное освещение.",
"images": ["https://YOUR_PUBLIC_IMAGE_URL/product.png"],
"aspect_ratio": "3:2"
}'
# Отправляйте только после проверки предварительной оценки.
curl "$BASE/tasks" \
-H "Authorization: Bearer $GLOBALGPT_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: image-edit-example-001" \
-d '{
"model": "gpt-image-2.5",
"prompt": "Оставьте бутылку и этикетку без изменений. Замените только фон на тёплое бежевое студийное освещение.",
"images": ["https://YOUR_PUBLIC_IMAGE_URL/product.png"],
"aspect_ratio": "3:2"
}'
# Опрашивайте возвращённый идентификатор задачи до тех пор, пока не будет получен результат "успех" или "неудача".
curl "$BASE/tasks/TASK_ID" \
-H "Authorization: Bearer $GLOBALGPT_API_KEY"Не вставляйте многочастное сообщение OpenAI маска, точность ввода, размер, или качество поля в этот JSON и предполагаем, что они работают. В текущей общедоступной документации по GlobalGPT эти поля для данного маршрута образа не указаны. Неподдерживаемые поля могут быть исключены и отображены в игнорируемые_параметры, поэтому проверьте этот ответ, прежде чем делать вывод о том, что настройка вступила в силу.
Согласно официальной документации, GlobalGPT резервирует кредиты при отправке медиа-задачи, освобождает их в случае сбоя задачи и сохраняет успешные медиа-файлы в течение 30 дней. Если URL-адрес должен сохраняться дольше, сохраните возвращенный ресурс в хранилище, которое вы контролируете. Используйте конечную точку оценки перед запуском пакетной обработки, ключ идемпотентности при повторной отправке сетевого запроса и исходный ID задачи, если опрос просто выполняется медленно.
Что показали испытания модели GlobalGPT
Чтобы наглядно продемонстрировать это различие, 28 сентября 2026 года я провёл тестирование API модели GlobalGPT с ограниченным набором данных, используя два вымышленных входных запроса без упоминания брендов и два запроса на редактирование. В каждой задаче использовался GPT Image 2, запрос в соотношении 3:2 и первый допустимый результат. Приведённые ниже изображения являются результатами тестирования модели, а не сессией в рабочей области браузера, тестом производительности или гарантией того, что при каждом редактировании будут сохранены все контуры.

Входные данные P00: Исходное изображение: вымышленная бутылка без логотипа с короткой белой крышкой и небольшой этикеткой.

Ссылка P01: Замороженное эталонное изображение: используется исключительно для определения освещения и цветовой гаммы, а не в качестве второго идентификатора продукта.
T01: редактирование фона на одном изображении
Показать полный текст запроса
Сохраните без изменений керамическую бутылку, короткую белую крышку, вымышленный текст на этикетке "NORTH" и "250 мл", цвета, ракурс съемки и пропорции исходного изображения. Замените только чисто белый фон на теплый бежевый фон студийного интерьера, вдохновленный мягким светом, проникающим через окно, и нежными тенями. Не добавляйте никаких новых объектов, логотипов, слов, водяных знаков, людей или этикеток. Сохраните бутылку в качестве единственного объекта в горизонтальной композиции со соотношением сторон 3:2.
Из этого следует: Бутылка остаётся узнаваемой, на ней видна этикетка NORTH / 250 мл, а белый фон сменяется изображением интерьера в тёплых бежевых тонах с мягкими тенями, напоминающими оконные.
Ограничение: Это один из первых корректных результатов. Он не доказывает точного сохранения пикселей или общей точности меток.
T02: эталонные данные по освещению и цвету на основе двух изображений
Показать полный текст запроса
Используйте исходное изображение 1 в качестве точного образа продукта, а исходное изображение 2 — только в качестве ориентира для передачи теплого бежевого освещения, цветовой температуры и мягких теней в помещении. Сохраните без изменений форму керамической бутылки, короткую белую крышку, вымышленный текст на этикетке "NORTH" и "250 мл", цвета, ракурс съемки и пропорции, как на исходном изображении 1. Замените белый фон на спокойную интерьерную студийную сцену в теплых бежевых тонах. Не копируйте никаких лишних объектов, текста, логотипов, водяных знаков, людей или этикеток со второго исходного изображения. Оставьте бутылку единственным объектом съемки в горизонтальной композиции со соотношением сторон 3:2.
Из этого следует: Продукт и этикетка NORTH / 250 мл остаются узнаваемыми, а в оформлении сцены использованы теплые бежевые оттенки комнаты, столешницы и света, проникающего через окно, характерные для модели P01.
Ограничение: Пропорции крышки бутылки, очертания бутылки и расположение заметно изменились. Не следует называть это идеальным или точным сохранением идентичности; если размеры товара должны совпадать, следует проводить сравнение вручную.
Как использовать эти данные: В результате получается воспроизводимый механизм проверки. Зафиксируйте входной URL, укажите название защищаемого объекта, опишите эталонную роль, проанализируйте возвращаемые байты и перед публикацией сравните утвержденный результат с исходником. Перенос стиля может пройти успешно, даже если геометрия по-прежнему смещается.
Обработка ошибок и задержек при ответе
Симптом → проверка → действие
| Симптом | Сначала проверьте | Безопасный следующий шаг |
|---|---|---|
| 401 / ошибка аутентификации | Ключ на стороне сервера, права доступа к учетной записи, хост конечной точки | Остановите процесс и исправьте ошибку аутентификации; не оценивайте качество изображения. |
| 400 / 422 Неверный запрос | Идентификатор модели, имена полей в многокомпонентных полях, тип файла, неподдерживаемые параметры | Измените только поле, указанное в сообщении об ошибке, а исходный запрос, по которому произошла ошибка, оставьте без изменений. |
| 429 / 5xx / вместимость | Был ли создан идентификатор задачи | Если идентификатор задачи отсутствует, повторите попытку один раз в соответствии с вашей политикой; если задача существует, выполните опрос по этому идентификатору. |
| Задача остается в очереди или находится в процессе обработки | Статус, время последнего опроса, оценка провайдера | Выполняйте опрос с заданным интервалом; не создавайте дубликат, пока статус неизвестен. |
| Результат представляет собой объект JSON, сохраненный в виде изображения | Тип содержимого, первые байты, формат после декодирования | Проанализировать ответ, декодировать b64_json или скачать output.url, а затем проверьте правильность ввода. |
| Похоже, этот параметр не оказывает никакого влияния | GlobalGPT игнорируемые_параметры и карточка модели | Удалите неподдерживаемые поля и используйте контракт, специфичный для данной модели. |
Разграничивайте данные о передаче данных и данные о качестве. Таймаут, сбой DNS или ответ о недостаточной пропускной способности провайдера означают, что у вас нет достоверного изображения для оценки. И наоборот, достоверное изображение с измененной рамкой или меткой является визуальным результатом, который следует отразить в отчете в том виде, в каком он есть, даже если композиция выглядит привлекательно.
Контрольный список для редактирования изображений, обеспечивающий безопасность в производственной среде
- Заморозить исходный код: сохранить входной файл, размеры, формат и хеш.
- Назначить роли изображений: определить изображение-оригинал, а также любые ориентиры, касающиеся освещения, цветовой гаммы или композиции.
- Сигналы с защитой от записи: перечислите этикетку, силуэт, цвета и пропорции, которые требуют пересмотра.
- Выберите договор: Используйте многокомпонентный формат OpenAI для конечной точки редактирования собственных данных или задачи JSON в формате GlobalGPT для публичного медиа-API.
- Рассчитать и отправить: использовать текущие тарифы OpenAI или GlobalGPT
/задачи/оценка; добавить ключ идемпотентности для отправки запросов, безопасных при повторных попытках. - Опрос и декодирование: сохранить идентификатор задачи, проверить возвращенный файл и сохранить байты или URL-адрес в утвержденном хранилище.
- Визуальное утверждение: Сравнивайте конечный результат с исходным текстом, прежде чем он попадёт в каталог продукции, рекламное объявление или на страницу, предназначенную для клиентов.
Если вы хотите запустить тот же процесс, не объединяя отдельные информационные панели моделей, попробуйте Изображение GPT 2 в GlobalGPT. Описание версии рабочего процесса, предназначенной для использования в браузере, см. редактировать изображения в рабочей области GlobalGPT; более подробную информацию о настройках и ценах см. в Настройка и тарифы API GPT Image.
Часто задаваемые вопросы
Что такое API редактирования изображений OpenAI?
Это маршрут для редактирования изображений по адресу POST /v1/images/edits. Вы отправляете исходное изображение и запрос, при желании с маской или эталонными изображениями, а затем декодируете возвращенные данные изображения. Используйте Image API для однократного редактирования и Responses API, если продукту требуется многоходовой диалог с изображениями.
Возвращает ли API редактирования изображений OpenAI общедоступный URL-адрес изображения?
В приведенных примерах использования Image API возвращается b64_json. Декодируйте эти байты, проверьте файл и сохраните его в хранилище, которое вы контролируете. Не следует полагать, что успешный ответ представляет собой URL-адрес, размещенный на CDN.
Обеспечивает ли маска изображения OpenAI точный выбор пикселей?
Нет. Маска определяет границы редактирования на основе введенного запроса. Модель может изменять пиксели вокруг указанной области, поэтому следует проверять метки, сведения о продукте, знаки безопасности и другие элементы, которые должны остаться без изменений.
Сколько исходных изображений может использовать программа для редактирования изображений?
Текущее руководство по работе с изображениями поддерживает использование нескольких входных изображений в рабочих процессах, основанных на эталонных изображениях. Точные ограничения и особенности поведения конкретной модели см. в документации к данной модели; указанное максимальное количество изображений не гарантирует их идеального сохранения в каждой композиции.
Можно ли отправить запрос OpenAI /v1/images/edits на сервер GlobalGPT, изменив значение параметра base_url?
В публичном медиа-контракте № GlobalGPT используется запрос JSON POST /tasks, а затем GET /tasks/{id} с изображениями и параметром aspect_ratio, если выбранная модель их поддерживает. В открытой документации не указаны маска multipart, параметры input_fidelity, size и quality для данного маршрута OpenAI.
Как правильно оценить задачу по обработке изображений перед отправкой?
Для GlobalGPT сначала отправьте тот же JSON-тело запроса на /tasks/estimate. При этом задача не создается и кредиты не резервируются. Для OpenAI произведите расчет по текущим тарифам за миллион токенов, а затем проверьте фактическое использование в ответе или в записи о выставлении счета.









