Skip to main content
OpenAI сервіс редагування зображень дозволяє передавати зображення та команди, виводячи змінене зображення. Моделі серії GPT Image можуть одночасно приймати до 16 референсних зображень. Наразі інтерфейс підтримує gpt-image-1, останню gpt-image-2, а також серії моделей nano-banana / nano-banana-2-lite / nano-banana-2 / nano-banana-pro, які підключаються через той же інтерфейс. Цей документ в основному описує процес використання OpenAI Images Edits API, завдяки якому ми можемо легко користуватися офіційними функціями редагування зображень OpenAI.

Процес заявки

Щоб використовувати OpenAI Images Edits API, спочатку перейдіть до консолі Ace Data Cloud для отримання вашого API Token, залиште його на випадок потреби. Якщо ви ще не увійшли в систему або не зареєстровані, вас автоматично перенаправлять на сторінку входу, запрошуючи вас зареєструватися та увійти, після чого ви будете автоматично повернені на цю сторінку. Один API Token дозволяє викликати всі послуги платформи, не потрібно окремо подавати заявку на кожну послугу. Перший запит надає безкоштовний ліміт, щоб ви могли безкоштовно спробувати; якщо ліміт вичерпано, ви можете поповнити загальний баланс в консолі.
📘 Повна документація: OpenAI Images Edits API →

Модель GPT-Image-2

gpt-image-2 має значні покращення в сценаріях редагування зображень у порівнянні з gpt-image-1:
  • Структура залишається більш стабільною: при зміні шкіри, кольору, фону майже не порушується оригінальна компоновка та композиція зображення.
  • Текст зберігається більш точно: інформаційні графіки, плакати, меню та інші зображення з текстом залишаються чіткими та читабельними після редагування.
  • Підтримка прямих URL: окрім традиційного завантаження файлів multipart/form-data, gpt-image-2 також додатково підтримує передачу URL зображення у форматі JSON, без необхідності спочатку завантажувати зображення на локальний комп’ютер, що дуже підходить для інтеграції на сервері.
  • Підтримка прямої передачі base64: відповідно до офіційних стандартів, поле image також може безпосередньо приймати base64 (data:image/png;base64,... або чистий base64), локальні зображення не потрібно спочатку завантажувати на хостинг для редагування.
  • Підтримка високої роздільної здатності: можна передати оригінал 1K, запитуючи 2K / 4K вихід через параметр size, модель під час редагування одночасно виконає масштабування.

Варіанти маршруту (:official / :reverse)

gpt-image-2 за замовчуванням використовує стандартний маршрут. Через суфікс імені моделі можна явно вибрати маршрут:
  • gpt-image-2:official: офіційний канал, стабільний та відповідний. Вартість визначається токенами текстового вводу, токенами зображення під час редагування та токенами виходу зображення, остаточний розрахунок проводиться за фактичним використанням, вказаним у відповіді; ціна якості/розміру, що відображається на сторінці, використовується лише для оцінки; за максимальним пакетом Usage ціна для клієнтів становить приблизно 80% від офіційної ціни OpenAI. Сервіс автоматично обирає доступні канали, можливості та витрати визначаються за фактичними результатами.
  • gpt-image-2:reverse: повністю еквівалентно за замовчуванням gpt-image-2, з кращим співвідношенням ціни та якості, ціна залишається незмінною.
:official формула розрахунку Остаточна вартість = токен текстового вводу + токен зображення (тільки редагування) + токен виходу зображення. Ціна, що відображається на сторінці quality × size, є оцінкою перед запитом, фактичні витрати визначаються за успішною відповіддю usage. Наприклад, low, 1024x1024 зазвичай становить близько 0.0505 кредитів за вихід зображення, плюс невелика кількість токенів вводу; при використанні auto модель може вибрати вищу якість, попередньо авторизований ліміт буде перевірятися за більш високими ставками.

Підтримувані значення size

Перевірка формату size для інтерфейсу редагування відповідає інтерфейсу генерації — gpt-image-2 вимагає, щоб size був auto, порожнім або відповідав формату WIDTHxHEIGHT, будь-яка інша форма поверне 400. За замовчуванням gpt-image-2 та :reverse стягують плату за кожне зображення однаково; :official одночасно розраховує токени текстового вводу, токени референсних зображень та токени виходу зображення, оригінал, розмір та якість можуть вплинути на остаточну вартість. Обмеження розміру: користувацькі розміри повинні відповідати кратності 16 для ширини та висоти, довга сторона ≤ 3840, загальна кількість пікселів ≤ 8,294,400, перевищення призведе до повернення 4xx.
Наприклад: якщо оригінал має розмір 1024x1024, а size передається як 2048x2048, модель переробить та виведе 2K зображення відповідно до інструкцій редагування; якщо size передається як 3840x2160, буде виведено 4K горизонтальне зображення. За замовчуванням стягнення за три розміри gpt-image-2 та :reverse однакове; :official базується на фактичному використанні токенів. Пропуск поля size та явна передача auto є абсолютно еквівалентними: gpt-image-2 спочатку зчитує чіткі наміри щодо розміру з підказок, включаючи пікселі, співвідношення, орієнтацію, роздільну здатність (наприклад, 4K / high-res) або назву полотна. Якщо виявлено наміри щодо розміру, використовуються конкретні розміри; якщо в підказках немає вимог до розміру або автоматичне визначення недоступне, повертається розмір першого референсного зображення. Остаточний конкретний розмір буде нормалізовано до кратності 16, обмежень для довгої сторони та загальної кількості пікселів перед подачею запиту; для абсолютного контролю, будь ласка, передайте безпосередньо WIDTHxHEIGHT. Після завершення генерації не буде автоматичних повторних спроб через різні вихідні пікселі, щоб уникнути повторних витрат на генерацію. Про параметр n Інтерфейс редагування gpt-image-2 підтримує n > 1: одночасно можна отримати відповідну кількість результатів редагування. За замовчуванням gpt-image-2 та :reverse стягують плату за кількість успішно згенерованих зображень; :official стягує плату за фактичне використання токенів за всю відповідь (значення n від 1 до 10). Це також стосується gpt-image-1 / gpt-image-1.5, а також серій nano-banana / nano-banana-2-lite / nano-banana-2 / nano-banana-pro. Зверніть увагу, що response_format=b64_json підтримує лише n=1, при n>1 використовуйте стандартне повернення URL. Якщо деякі зображення не вдалося згенерувати, буде повернуто та стягнуто плату лише за успішні частини.
Нижче наведено два різних реальних приклади, щоб відчути можливості редагування gpt-image-2.

Спосіб виклику 1: JSON + URL зображення (рекомендується)

Надішліть запит у форматі application/json, заповнивши поле image URL однієї картинки, модель завантажить це зображення та відредагує його відповідно до prompt. Наприклад, нижче наведено оригінальне зображення, яке було згенеровано за допомогою gpt-image-2:

Ми хочемо змінити його на кольорову схему “нічного режиму”. Можна викликати так:
Або за допомогою Python:
Результат буде таким:
Редаговане зображення виглядає так:

Можна побачити, що структура модулів, інформаційні зони, типографіка були строго збережені, лише кольорова схема була перевернута на темну тему.
Порада: Поле image також підтримує передачу масиву, наприклад, "image": ["url1", "url2", "url3"], максимум можна передати 16 зображень для редагування.
Прямий base64: image (та кожен елемент масиву) може бути не лише URL, а й base64 — data:image/png;base64,... або чистий base64, що підходить для локальних зображень, які не хочуть попередньо завантажувати на хостинг. Наприклад:

Спосіб виклику 2: JSON + кілька зображень для посилання

gpt-image-2 підтримує одночасне використання кількох зображень для генерації фінального результату, наприклад, об’єднання кількох фотографій продуктів в один подарунковий кошик:

Приклад сценарію: змінити стиль + зберегти структуру

Ось ще один приклад, де дерев’яна книжкова полиця замінюється на сучасну плаваючу полицю, але строго зберігається кількість і розташування книг на кожному рівні. Оригінальне зображення (згенероване за допомогою gpt-image-2 дерев’яної книжкової полиці):

Виклик:
Результат редагування (task_id: e9544dba-727e-44a2-81e1-223d49869380):

Можна побачити, що стиль і середовище були повністю замінені відповідно до підказки, але кількість книг на кожному рівні (1 / 3 / 7) залишилася строго збереженою, і за вимогою була додана маленька рослина-сукулент.

Спосіб виклику 3: multipart/form-data (сумісно з OpenAI SDK)

Якщо ви вже використовуєте офіційний OpenAI Python SDK, стара multipart/form-data методика завантаження також підходить, просто змініть model на gpt-image-2:
При використанні SDK потрібно спочатку імпортувати дві змінні середовища, OPENAI_BASE_URL встановити на https://api.acedata.cloud/openai, OPENAI_API_KEY встановити на отриманий токен:

Моделі серії Nano Banana

Серія nano-banana також підключена до /openai/images/edits в сценаріях редагування, просто змініть model на будь-який з наведених у таблиці.
Важливо: діапазон підтримуваних параметрів Nano Banana підключається до протоколу OpenAI через адаптаційний шар, підтримує лише такі параметри: model, prompt, image, n.
  • image може бути завантажено через multipart/form-data (локальні файли автоматично перетворюються в base64), також можна передати URL зображення через поля форми.
  • Не підтримуються параметри mask, size, response_format тощо; якщо їх вказати, вони будуть проігноровані. n > 1 підтримується (1–10), буде повернуто та нараховано відповідну кількість результатів редагування.
  • Структура відповіді відповідає формату OpenAI (data[].url), але created завжди дорівнює 0, і не буде повернуто b64_json, revised_prompt завжди дорівнює оригінальному prompt.

Виклик через форму + URL зображення

Повернене значення виглядає так:
Редаговане зображення:

Виклик через форму + локальний файл

Асинхронний зворотний виклик

Механізм асинхронного зворотного виклику callback_url також діє для nano-banana, процес виклику повністю аналогічний іншим моделям, детальніше див. розділ Асинхронний зворотний виклик.

Основне використання

Тепер ви можете використовувати код для виклику, нижче наведено приклад виклику через CURL:
При першому використанні цього інтерфейсу нам потрібно заповнити щонайменше чотири поля: одне з них - authorization, яке можна вибрати безпосередньо зі списку. Інший параметр - model, model - це категорія моделі OpenAI, яку ми вибираємо, тут у нас є 1 модель, деталі можна переглянути в наданих моделях. Ще один параметр - prompt, prompt - це підказка, яку ми вводимо для генерації зображення. Останній параметр - image, цей параметр вимагає шлях до зображення, яке потрібно редагувати, зображення, яке потрібно редагувати, показано нижче:
Підказка: image[] може повторюватися кілька разів для завантаження кількох зображень, наприклад, -F "image[]=@a.png" -F "image[]=@b.png", серія GPT Image підтримує до 16 зображень (кожне не більше 50MB, формати png/webp/jpg). Перевищення кількості призведе до повернення 400.

Приклад коду для виклику з однаковим ефектом на Python:
Для виклику на Python нам потрібно спочатку імпортувати дві змінні середовища, одну OPENAI_BASE_URL, яку можна встановити на https://api.acedata.cloud/openai, і ще одну змінну для облікових даних OPENAI_API_KEY, це значення отримується з authorization, в Mac OS можна встановити змінні середовища за допомогою наступних команд:
Після виклику ми виявимо, що в поточному каталозі з’явиться зображення gift-basket.png, конкретний результат виглядає так:

Таким чином, ми завершили редагування зображення. Наразі інтерфейс Edits підтримує дві моделі: gpt-image-1 та gpt-image-2, з яких gpt-image-2 є рекомендованою моделлю для використання. Детальніше дивіться в розділі Модель GPT-Image-2.

Асинхронний зворотний виклик

Оскільки редагування зображень за допомогою OpenAI Images Edits API може займати відносно багато часу, якщо API не відповідає протягом тривалого часу, HTTP-запит буде підтримувати з’єднання, що призведе до додаткових витрат системних ресурсів. Тому цей API також підтримує асинхронні зворотні виклики. Загальний процес такий: коли клієнт ініціює запит, він додатково вказує поле callback_url. Після ініціації API-запиту API відразу повертає результат, що містить інформацію про поле task_id, яке представляє ID поточного завдання. Коли завдання завершено, результат редагування зображення буде надіслано на вказаний клієнтом callback_url у форматі POST JSON, де також буде включено поле task_id, що дозволяє пов’язати результати завдання за ID. Далі ми розглянемо приклад, щоб зрозуміти, як саме це працює. По-перше, Webhook зворотний виклик — це сервіс, який може приймати HTTP-запити, розробники повинні замінити його на URL свого HTTP-сервера. Для зручності демонстрації використовується публічний веб-сайт з прикладом Webhook https://webhook.site/, відкривши цей сайт, ви отримаєте URL Webhook, як показано на малюнку: Скопіюйте цей URL, і ви зможете використовувати його як Webhook. Приклад тут: https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab. Далі ми можемо налаштувати поле callback_url на вказаний вище URL Webhook, а також заповнити відповідні параметри, як показано в наступному коді:
Після виклику можна відразу отримати результат, як показано нижче:
Через деякий час ми можемо спостерігати результати редагування зображення на URL Webhook, вміст виглядає так:
Можна побачити, що в результаті є поле task_id, а поле data містить результати редагування зображення, аналогічні результатам синхронного виклику, за допомогою поля task_id можна пов’язати завдання.

Обробка помилок

При виклику API, якщо виникає помилка, API повертає відповідний код помилки та інформацію. Наприклад:
  • 400 token_mismatched: Неправильний запит, можливо, через відсутні або недійсні параметри.
  • 400 api_not_implemented: Неправильний запит, можливо, через відсутні або недійсні параметри.
  • 401 invalid_token: Неавторизовано, недійсний або відсутній токен авторизації.
  • 429 too_many_requests: Занадто багато запитів, ви перевищили ліміт запитів.
  • 500 api_error: Внутрішня помилка сервера, щось пішло не так на сервері.

Приклад відповіді з помилкою

Висновок

Завдяки цьому документу ви дізналися, як легко використовувати функції редагування зображень OpenAI Images Edits API. Сподіваємося, цей документ допоможе вам краще інтегрувати та використовувати цей API. Якщо у вас є будь-які питання, будь ласка, звертайтеся до нашої технічної підтримки.