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:


Порада: Поле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):

Спосіб виклику 3: multipart/form-data (сумісно з OpenAI SDK)
Якщо ви вже використовуєте офіційний OpenAI Python SDK, стараmultipart/form-data методика завантаження також підходить, просто змініть model на gpt-image-2:
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.

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

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, а також заповнити відповідні параметри, як показано в наступному коді:
task_id, а поле data містить результати редагування зображення, аналогічні результатам синхронного виклику, за допомогою поля task_id можна пов’язати завдання.
Обробка помилок
При виклику API, якщо виникає помилка, API повертає відповідний код помилки та інформацію. Наприклад:400 token_mismatched: Неправильний запит, можливо, через відсутні або недійсні параметри.400 api_not_implemented: Неправильний запит, можливо, через відсутні або недійсні параметри.401 invalid_token: Неавторизовано, недійсний або відсутній токен авторизації.429 too_many_requests: Занадто багато запитів, ви перевищили ліміт запитів.500 api_error: Внутрішня помилка сервера, щось пішло не так на сервері.

