Альтернатива API FLUX Kontext: правка изображений с GPT Image 2
Правки по инструкции без маски: код запроса, цепочка из трёх правок, выполненных 28 октября 2026 года, и то, что сохранил каждый шаг.
На этой странице
- Что такое правка по инструкции
- Запрос
- Цепочка из трёх правок
- Одна правка от оригинала
- Что сохранилось, а что нет
- Инструкции, которые сработали
- Что выбрать
- Частые вопросы
- Что делает API FLUX Kontext?
- FLUX Kontext ещё актуален?
- Можно править фото через API, используя только текст?
- Можно делать правки цепочкой?
- Сколько живут ссылки на результат?
API FLUX Kontext правит фото по одному промпту и одной картинке на запрос. Страница BFL называет FLUX.1 Kontext моделью предыдущего поколения и советует FLUX.2 для новых проектов (проверено 28 октября 2026 года). GPT-Image 2 принимает те же два входа. Три правки подряд 28 октября 2026 года сохранили столик в кафе, чашку, растение и окно, а вместе с ними каждое предыдущее изменение.
Что такое правка по инструкции
Вы отправляете фото и фразу вроде «замените красный велосипед на матовый чёрный». Модель возвращает новое фото: названное изменение сделано, остальное в кадре не тронуто. BFL описывает Kontext как правку изображений простыми текстовыми промптами, без сложных процессов и дообучения (docs.bfl.ai/kontext/kontext_image_editing, проверено 28 октября 2026 года).
Три числа BFL определяют, как писать код: вход до 20 MB или 20 мегапикселей, результат около 1 MP и подписанные ссылки на результат, живущие 10 минут. Скачивайте результат сразу.
В инструкции две части: само изменение и список того, что остаётся.
GPT-Image 2 в OmniaKey берёт задачу на правку с теми же двумя составляющими, а страница модели перечисляет текст в изображение и правку изображения в качестве low, medium и high (omniakey.com/gpt-image-2, проверено 28 октября 2026 года). Модели FLUX мы не запускали, поэтому дальше идут только наши четыре правки и код.
Запрос
Одна правка — это POST на https://api.omniakey.com/v1/media/tasks с model равным gpt-image-2, type image, operation edit, фразой в input.prompt и исходным фото в input.image в виде Base64 с mime-типом (docs.omniakey.com/en/media/image, проверено 2026-10-28). Ответ — HTTP 202 с id задачи. Опрашивайте GET /v1/media/tasks/{task_id}, пока статус queued или processing, затем возьмите assets[0].url из завершённой задачи.
Две мелочи стоили нам одной повторной попытки. POST с User-Agent по умолчанию из Python возвращал HTTP 403, пока мы не задали свой (28 октября 2026 года), а Base64 внутри тела входит в лимит запроса 1 MiB, так что уменьшите фото до кодирования.
Результат — непрозрачный PNG за подписанной ссылкой, которая истекает примерно через час; сам файл хранится 24 часа. Скачайте его и прочитайте настоящие ширину и высоту вместо того, чтобы верить запрошенному размеру.
import base64
import json
import os
import time
import urllib.request
import uuid
API = "https://api.omniakey.com/v1/media/tasks"
KEY = os.environ["OMNIAKEY_API_KEY"]
def request(method, url, body=None, extra_headers=None):
headers = {"Authorization": f"Bearer {KEY}", "User-Agent": "omniakey-example/1"}
data = None
if body is not None:
headers["Content-Type"] = "application/json"
data = json.dumps(body).encode()
headers.update(extra_headers or {})
req = urllib.request.Request(url, data=data, headers=headers, method=method)
with urllib.request.urlopen(req, timeout=120) as resp:
return json.load(resp)
def edit_image(source_path, prompt, out_path, size="1024x1536", quality="medium"):
with open(source_path, "rb") as f:
image = base64.b64encode(f.read()).decode()
body = {
"model": "gpt-image-2",
"type": "image",
"operation": "edit",
"input": {"prompt": prompt, "image": {"data": image, "mime_type": "image/jpeg"}},
"parameters": {"size": size, "quality": quality},
}
task = request("POST", API, body, {"Idempotency-Key": str(uuid.uuid4())})["id"]
for _ in range(150):
time.sleep(4)
state = request("GET", f"{API}/{task}")
if state["status"] not in ("queued", "processing"):
break
if state["status"] != "succeeded":
raise RuntimeError(state.get("error") or state["status"])
asset_url = state["assets"][0]["url"] # signed link: valid for about an hour, so download now
req = urllib.request.Request(asset_url, headers={"User-Agent": "omniakey-example/1"})
with urllib.request.urlopen(req, timeout=120) as resp, open(out_path, "wb") as f:
f.write(resp.read())
return task
if __name__ == "__main__":
task = edit_image(
"cafe-base.jpg",
"Change the red bicycle to a matte black bicycle with a brown wicker basket on the front. Keep everything else exactly the same: the wooden table, the coffee cup, the plant, the window frame and the bright daylight. Photorealistic, no text, no logos.",
"cafe-step1.png",
size="1536x1024",
)
print("task", task)
В наших запусках были size 1536x1024 и quality medium. Документация говорит, что n для GPT Image должен быть 1; функция просто не передаёт это поле. Пример вызова в конце файла — первый шаг цепочки.
Цепочка из трёх правок
Каждый шаг получает результат предыдущего как вход, поэтому цепочка — это три задачи и три скачивания. Исходное фото — столик у окна: белая чашка кофе на блюдце, красный велосипед на тротуаре, растение в горшке на подоконнике, 1536x1024, качество medium.
- Шаг 1: «Change the red bicycle to a matte black bicycle with a brown wicker basket on the front. Keep everything else exactly the same: the wooden table, the coffee cup, the plant, the window frame and the bright daylight. Photorealistic, no text, no logos.» Результат: матовый чёрный велосипед с плетёной корзиной спереди; столик, чашка, растение и окно без изменений.
- Шаг 2, от шага 1: «Make it evening outside: the sky is dark blue and the street lamps are on. The cafe interior lights are warm yellow. Keep the table, the cup, the plant, the black bicycle and the window frame exactly the same. Photorealistic, no text, no logos.» Результат: вечернее небо, включённые фонари, тёплый свет в помещении, чёрный велосипед с корзиной на месте.
- Шаг 3, от шага 2: «Replace the coffee in the white cup with a clear glass of iced tea with a lemon slice on the rim. Keep everything else exactly the same. Photorealistic, no text, no logos.» Результат: холодный чай с ломтиком лимона там, где был кофе; вечерняя сцена сохранилась.

Все четыре кадра — синтетические сцены, сделанные gpt-image-2. Generated with GPT-Image 2 via the OmniaKey API on October 28, 2026, size 1536x1024, quality medium.
Одна правка от оригинала
Цепочка нужна не каждой правке. Эта начинается с исходного фото и меняет один предмет на подоконнике: «Remove the potted plant from the windowsill and place a stack of three old hardcover books there. Keep everything else exactly the same: the table, the cup, the red bicycle and the daylight. Photorealistic, no text, no logos.»
На подоконнике встали три старые книги в твёрдых переплётах, растение исчезло, а красный велосипед остался красным. Одна фраза сделала два изменения, и оба появились в кадре.

Что сохранилось, а что нет
Столик, чашка, растение и оконная рама прошли все три шага, чёрный велосипед и его корзина пережили вечерний свет, и каждая предыдущая правка оставалась в следующем кадре. Свет менялся один раз, на шаге 2, где об этом просила фраза.
Ломтик лимона лежал на краю стакана, как и просила фраза, а холодный чай остался на блюдце. Каждая инструкция выполнялась один раз, поэтому каждый кадр — один образец.
Инструкции, которые сработали
Четыре инструкции дали четыре пригодные правки с общей схемой.
- Одно изменение на фразу, затем список того, что сохраняется. Шаг 1 менял велосипед и называл столик, чашку, растение и окно неизменными.
- Повторяйте список сохранения каждый раз, включая прошлое изменение: шаг 2 пишет «the black bicycle», а шаг 3 удерживает вечер.
- Говорите, куда встанет новое, в той же фразе, что и про старое: «place a stack of three old hardcover books there».
- Берите конкретные материалы и цвета: «matte black», «brown wicker basket», «warm yellow», «clear glass».
- Закрывайте фразой «Photorealistic, no text, no logos». Каждая инструкция в нашей цепочке так и заканчивалась.
О порядке фраз и формулировках для правки рассказывает наше руководство по промптам GPT Image 2. Руководство по виртуальной примерке разбирает замену одежды, а руководство по удалению объектов — удаление предметов.
Что выбрать
| FLUX.1 Kontext | Правка в GPT-Image 2 | |
|---|---|---|
| Вход на запрос | Один промпт, одно изображение | Один промпт, одно изображение |
| Предел исходника | 20 MB или 20 мегапикселей | Запрос 1 MiB, вместе с Base64 |
| Размер результата | Около 1 MP | Тот размер, который вы указали, в PNG |
| Ссылка на результат | 10 минут | Около часа |
| Состояние модели | Предыдущее поколение, по данным BFL | Доступна в OmniaKey |
Выбирайте Kontext, если FLUX-процесс уже работает в продакшене и вам пока нужна именно такая форма вызова. Выбирайте GPT-Image 2, если хотите задавать размер сами и иметь час на скачивание по ссылке. BFL направляет новые задачи на FLUX.2, так что новый проект — хороший повод посмотреть ещё раз.
По цене страница тарифов OpenAI (проверено 2026-10-28) считает gpt-image-2 за миллион токенов: $8.00 за вход изображения, $30.00 за выход изображения, $2.00 за кэшированный вход изображения, а пакетный режим идёт по половине стандартного тарифа. Строки за одно изображение там нет; в руководстве по генерации изображений есть калькулятор для одного изображения.
Частые вопросы
Что делает API FLUX Kontext?
Правит фото по текстовой инструкции: один промпт и одно входное изображение на запрос (BFL, проверено 2026-10-28). На странице BFL сказано, что он «edits images using simple text prompts».
FLUX Kontext ещё актуален?
BFL называет FLUX.1 Kontext моделью предыдущего поколения и советует FLUX.2 для новых проектов (проверено 2026-10-28).
Можно править фото через API, используя только текст?
Да. Отправьте одно фото и одну инструкцию на эндпоинт правки GPT-Image 2, и вернётся новое фото. Так мы сделали четыре правки 28 октября 2026 года.
Можно делать правки цепочкой?
Да, по одной задаче на шаг: каждый результат становится исходным фото для следующего шага. Наша цепочка из трёх шагов сохранила прошлые изменения и при вечернем свете, и при замене напитка.
Сколько живут ссылки на результат?
Около часа в OmniaKey, а файл хранится 24 часа (docs.omniakey.com, проверено 2026-10-28). Скачайте PNG сразу после успеха задачи и прочитайте его настоящие размеры.
OmniaKey отдаёт правки GPT-Image 2 через описанный выше поток задач; актуальные цены — на странице тарифов.
Модели в этой статье
Похожие статьи
Промпты для GPT Image 2: структура, примеры и реальные изображения
Восемь промптов и девять реальных изображений: где GPT Image 2 попал точно, что добавил и как это исправить.
API виртуальной примерки: меняем одежду на модели через GPT Image 2
Одна фотография и один промпт меняют образ. Дальше — код запроса, три замены, которые мы прогнали 28 октября 2026 года, и то, где правка уходит в сторону.
API удаления объектов: уберите лишнее с фото через GPT Image 2
Одной инструкции на объект хватило для всех трёх удалений. Ниже код запроса, результаты в полном размере и места, где правке пока нельзя доверять.
Недавние статьи
- Clapping Cat Meme AI: как заставить питомца хлопать через image-to-video
- Промпты для Kling 3.0: структура, примеры и реальные ролики
- Промпты для MiniMax H3: структура, примеры и реальные ролики
- Claude Haiku 5.5 vs Sonnet 5.5: код, стоимость и скорость
- Промпты для Wan 3.0: структура, примеры и реальные ролики
