GPT-6 Sol и Claude Opus 5.5 уже доступныGPT-6 Sol вдвое дешевле 5.6 Sol

API виртуальной примерки: меняем одежду на модели через GPT Image 2

Одна фотография и один промпт меняют образ. Дальше — код запроса, три замены, которые мы прогнали 28 октября 2026 года, и то, где правка уходит в сторону.

Kiki, OmniaKey COO7 мин чтения
На этой странице

Да, с текстовым промптом. Эндпоинт редактирования GPT-Image 2 поменял одежду на одной фотографии и сохранил позу, лицо и фон в трёх наших прогонах 28 октября 2026 года. Отдельного поля для вещи у него нет, но вторая фотография вещи изменила длину платья в нашем прогоне. Каждый результат проверяйте глазами.

Запрос — это правка изображения в media API OmniaKey: исходное фото, промпт и необязательные референсные изображения. Функцию ниже мы проверили 28 октября 2026 года с другим промптом (жёлтый дождевик) на JPEG в 1024 пикселя базовой модели, и она вернула PNG 1024x1536.

Что правка умеет и чего не умеет для примерки

Правка изображения начинается с исходного фото и промпта. Операция — edit, исходник уходит инлайном в Base64, а промпт называет новый образ; документация image API OmniaKey (проверена 28 октября 2026 года) разрешает ещё несколько референсных изображений в массиве images. Результат — новый кадр, поэтому одежда меняется, а человек остаётся на месте: в наших прогонах лицо, поза, волосы и студийный фон сохранились.

Для примерки важны два ограничения: отдельного поля для вещи нет, поэтому модель рисует одежду по вашему описанию или по второй фотографии, а новый кадр может задеть детали, которые вы не называли. Функция примерки должна показывать результат на проверку и давать покупателю самому судить о совпадении. Та же операция умеет убирать объект из кадра; про правки по инструкции читайте гайд по альтернативе FLUX Kontext.

Отправьте фото и промпт с образом

Отправьте POST на https://api.omniakey.com/v1/media/tasks с bearer-ключом, JSON-телом и заголовком Idempotency-Key; документация image API OmniaKey (проверена 28 октября 2026 года) говорит, что создание возвращает HTTP 202 и id задачи. Опрашивайте URL задачи, пока статус queued или processing; succeeded значит, что файлы готовы, а у неудачной задачи есть error.code и error.message, и она не тарифицируется.

Поля задачи заполняются так:

ПолеЗначение
modelgpt-image-2
typeimage
operationedit
input.promptинструкция по образу
input.imageисходное фото как объект data и mime_type
input.imagesдополнительные референсные фото
parameters.sizeWIDTHxHEIGHT
parameters.qualitylow, medium, high или auto
parameters.n1

Держите запрос меньше 1 MiB, потому что инлайн Base64 входит в этот лимит. Число сэмплов должно быть 1, и API всегда возвращает непрозрачный PNG, поэтому реальные размеры читайте из скачанного файла.

Вот функция:

python
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"]  # подписанная ссылка: действует около часа, скачивайте сразу
    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(
        "vto-base.jpg",
        "Change the outfit: she now wears a red satin slip dress with thin straps that falls to mid-calf. Keep the same pose, face, hair, body, the plain light-gray studio background and the lighting exactly as they are. Photorealistic, no text, no logos.",
        "vto-slip.png",
        size="1024x1536",
    )
    print("task", task)

Подписанная ссылка на файл действует около часа, а файл хранится 24 часа — по той же документации, поэтому скачивайте его сразу после успеха задачи. Наша проверка 28 октября 2026 года шла с промптом про жёлтый дождевик на JPEG в 1024 пикселя базовой модели и вернула PNG 1024x1536. Скрипт отправляет заголовок User-Agent: стандартный от Python в нашем прогоне отклонили с HTTP 403, и с заголовком всё заработало.

Три замены образа, которые мы прогнали

Все три замены начались с одного синтетического фото: женщина в белой футболке с круглым вырезом и тёмно-синих джинсах на фоне однотонного светло-серого студия, сгенерировано в 1024x1536 и качестве medium в наших прогонах 28 октября 2026 года.

Замена 1 просила красное атласное платье-комбинацию на тонких бретелях до середины икры. Платье получилось, а поза, лицо, волосы и фон остались прежними. Белые кроссовки стали белыми босоножками на ремешках, хотя об этом не просили.

Замена 2 просила тёмно-зелёный шерстяной блейзер поверх кремовой шёлковой майки-комбинации и чёрные прямые брюки. Все три вещи появились, белые кроссовки остались.

Замена 3 просила лонгслив в тёмно-синюю и белую горизонтальную полоску с маленьким вышитым красным сердцем на левой стороне груди. Полоски и сердце оказались на левой стороне груди; тёмно-синие джинсы и белые кроссовки остались.

Четыре студийных портрета: исходные белая футболка и джинсы, красное атласное платье-комбинация, тёмно-зелёный блейзер и полосатый лонгслив
Исходник и три замены образа только текстом. Поза, лицо и студийный фон одинаковые.

Все люди и сцены здесь синтетические, и каждый промпт мы прогнали один раз, поэтому каждое изображение — один сэмпл.

Generated with GPT-Image 2 via the OmniaKey API on October 28, 2026, size 1024x1536, quality medium.

Фото вещи как вторая референция

Чтобы попасть ближе, отправьте вещь второй картинкой. Мы поставили фото человека первым, раскладку красного атласного платья-комбинации вторым и использовали input.images с таким промптом: "Dress the woman in the first image in the red satin slip dress shown in the second image. Keep her pose, face, hair, body, the plain light-gray studio background and the lighting exactly as they are. Photorealistic, no text, no logos."

Платье дошло до пола, почти как на фото раскладки. Версия того же платья только по тексту останавливалась на середине икры. В нашем единственном сэмпле фотография вещи дала ту длину, которую слова оставили свободной.

Три панели: раскладка красного платья-комбинации, то же платье на модели до пола и версия только по тексту до середины икры
Слева: фото вещи, которое мы отправили. В центре: с двумя изображениями платье повторяет длину с фото. Справа: то же платье, описанное словами.

Где результат уходит в сторону

Отклонения появились в том, чего не было в промпте: замена на платье-комбинацию поменяла обувь, а в промпте было только платье. Проверяйте лицо, руки, подол, обувь и любой узор в полном размере, прежде чем показывать результат покупателю. Мы не тестировали вещь с печатным логотипом, точный принт ткани с товарного фото и больше двух изображений.

Когда лучше подходит отдельный API примерки

Отдельный API примерки принимает человека и вещь как два разных входа. Страница Google Vertex AI "Generate Virtual Try-On Images" (обновлена 26 октября 2026 года; проверена 28 октября 2026 года) говорит: "You provide an image of a person and an image of a clothing product." Там же перечислены поля personImage и productImages в Base64, sampleCount от 1 до 4 и id модели virtual-try-on-001. На странице также есть уведомление, что документация Vertex AI больше не обновляется.

Выбирайте такой эндпоинт, когда фото вещи — источник истины и на один запрос нужно несколько сэмплов. Выбирайте правку в GPT-Image 2, когда единый процесс для смены образа и других правок важнее, чем сэмплы за вызов.

Страница цен OpenAI (проверена 28 октября 2026 года) говорит, что gpt-image-2 тарифицируется по токенам: на странице есть ставки за токены и нет таблицы за изображение, и она ведёт к калькулятору в гайде по генерации изображений. Текущая ставка OmniaKey — на странице цен.

Шаблон промпта для смены образа

Используйте схему, которая сработала в наших прогонах: сначала назовите вещь, потом зафиксируйте человека и сцену.

Change the outfit: she now wears [garment, colour, fabric, length]. Keep the same pose, face, hair, body, the plain light-gray studio background and the lighting exactly as they are. Photorealistic, no text, no logos.

  • Вещь: одно предложение с цветом, тканью и длиной. "A red satin slip dress with thin straps that falls to mid-calf" дало понятную замену.
  • Фиксаторы: поза, лицо, волосы, тело, фон, свет. Перечислите их в промпте явно.
  • Финал: "Photorealistic, no text, no logos." Наши промпты заканчивались так.
  • Обувь: называйте её, если она должна остаться, например "keep the white sneakers". В замене с платьем-комбинацией обувь поменялась, когда её не было в тексте.

Добавьте второе изображение, когда длина важнее слов: человек первым, вещь второй, а в промпте ссылайтесь на "the first image" и "the second image", как делали мы. Общий порядок промпта — в гайде по промптам GPT Image 2.

Частые вопросы

Есть ли в API GPT Image 2 отдельный эндпоинт виртуальной примерки?

Нет. Страница модели на OmniaKey (проверена 28 октября 2026 года) перечисляет текст в изображение и редактирование изображения. В наших прогонах примерка была правкой с текстовым промптом и необязательным вторым изображением.

Можно ли отправить фото вещи?

Да, как второе референсное изображение в input.images. В нашем прогоне 28 октября 2026 года длина платья подстроилась под фото раскладки.

Лицо остаётся тем же?

В трёх заменах и в прогоне с двумя референсами — да, на глаз. Проверяйте каждый результат в полном размере, прежде чем показывать.

Сколько живут ссылки на результат?

Около часа, по документации image API OmniaKey, проверенной 28 октября 2026 года, а файл хранится 24 часа. Скачивайте сразу после успеха задачи.

Какой размер запрашивать?

Передавайте size как WIDTHxHEIGHT, например 1024x1536, а реальные размеры читайте в скачанном PNG. Наши прогоны шли в 1024x1536 с качеством medium.

Начните с одного фото и одного промпта с образом. Страница GPT-Image 2 рассказывает о модели; текущие цены — отдельно.

Модели в этой статье

API виртуальной примеркиGPT Image 2редактирование изображенийсмена образаAPI

Похожие статьи

Недавние статьи