API de probador virtual: cambia la ropa con GPT Image 2
Una foto y un prompt bastan para cambiar la ropa. Aquí están el código de la petición, tres cambios que ejecutamos el 28 de octubre de 2026 y dónde se desvía la edición.
En esta página
- Qué puede y qué no puede hacer una edición para un probador virtual
- Envía la foto y el prompt de la ropa
- Tres cambios de ropa que ejecutamos
- Una foto de la prenda como segunda referencia
- Dónde se desvió
- Cuándo encaja mejor una API de probador virtual dedicada
- Una plantilla de prompt para cambiar de ropa
- Preguntas frecuentes
- ¿Hay un endpoint dedicado de probador virtual en la API de GPT Image 2?
- ¿Puedo enviar una foto de la prenda?
- ¿La cara se mantiene igual?
- ¿Cuánto duran los enlaces de resultado?
- ¿Qué tamaño debería pedir?
Sí, con un prompt de texto. El endpoint de edición de GPT-Image 2 cambió la ropa de una foto y mantuvo la pose, la cara y el fondo en los tres cambios que ejecutamos el 28 de octubre de 2026. No tiene una entrada dedicada para la prenda, pero en nuestra prueba una segunda foto de la prenda cambió el largo del vestido. Revisa cada resultado a ojo.
La petición es una edición de imagen en la API de medios de OmniaKey: una foto de origen, un prompt y fotos de referencia opcionales. Comprobamos la función de abajo el 28 de octubre de 2026 con otro prompt (un impermeable amarillo) sobre un JPEG de 1024 píxeles del modelo base, y devolvió un PNG de 1024x1536.
Qué puede y qué no puede hacer una edición para un probador virtual
Una edición de imagen parte de una foto de origen y un prompt. La operación es edit, el origen se envía en línea como Base64 y el prompt nombra la ropa nueva; la documentación de la API de imágenes de OmniaKey (consultada el 28 de octubre de 2026) también permite varias imágenes de referencia en un array images. El resultado es una imagen nueva, así que la ropa cambia mientras la persona se queda: en nuestras pruebas se mantuvieron la cara, la pose, el pelo y el fondo de estudio.
Dos límites importan en un probador virtual: no hay un campo separado para la prenda, así que el modelo dibuja la ropa a partir de tu descripción o de una segunda foto, y la imagen nueva puede tocar detalles que no nombraste. Una función de probador virtual debería mostrar el resultado para revisarlo y dejar que el comprador juzgue si encaja. La misma operación también sirve para quitar un objeto de una escena; para ediciones guiadas por instrucciones, consulta la guía de la alternativa FLUX Kontext.
Envía la foto y el prompt de la ropa
Envía un POST a https://api.omniakey.com/v1/media/tasks con una clave bearer, un cuerpo JSON y una cabecera Idempotency-Key; la documentación de la API de imágenes de OmniaKey (consultada el 28 de octubre de 2026) indica que la creación devuelve HTTP 202 y un id de tarea. Consulta la URL de la tarea mientras el estado sea queued o processing; succeeded significa que los recursos están listos, y una tarea fallida lleva error.code y error.message y no se cobra.
Configura los campos de la tarea así:
| Campo | Valor |
|---|---|
model | gpt-image-2 |
type | image |
operation | edit |
input.prompt | la instrucción de la ropa |
input.image | la foto de origen como objeto data y mime_type |
input.images | fotos de referencia adicionales |
parameters.size | WIDTHxHEIGHT |
parameters.quality | low, medium, high o auto |
parameters.n | 1 |
Mantén la petición por debajo de 1 MiB, porque el Base64 en línea cuenta para ese límite. El número de muestras debe ser 1, y la API siempre devuelve un PNG opaco, así que lee las dimensiones reales del archivo descargado.
La función es esta:
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"] # enlace firmado: válido una hora aproximadamente, descárgalo ahora
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)
La URL firmada del recurso dura alrededor de una hora y el archivo se conserva 24 horas, según la misma documentación, así que descárgalo en cuanto la tarea termine bien. Nuestra comprobación del 28 de octubre de 2026 usó el prompt del impermeable amarillo sobre un JPEG de 1024 píxeles del modelo base y devolvió un PNG de 1024x1536. El script envía una cabecera User-Agent: el valor por defecto de Python fue rechazado con HTTP 403 en nuestra prueba, y añadir la cabecera lo resolvió.
Tres cambios de ropa que ejecutamos
Los tres cambios partieron de la misma foto sintética: una mujer con camiseta blanca de cuello redondo y vaqueros azul oscuro ante un fondo de estudio liso de color gris claro, creada en 1024x1536 y calidad medium en nuestras pruebas del 28 de octubre de 2026.
El primer cambio pidió un vestido lencero de satén rojo con tirantes finos que llega a media pantorrilla. El vestido salió, y la pose, la cara, el pelo y el fondo siguieron igual. Las zapatillas blancas se convirtieron en tacones blancos con tiras sin que los pidiéramos.
El segundo pidió una chaqueta de lana verde oscuro sobre un top lencero de seda color crema, con pantalones rectos negros. Aparecieron las tres piezas, y las zapatillas blancas se quedaron.
El tercero pidió un top de manga larga de rayas horizontales azul marino y blancas, con un pequeño corazón rojo bordado en el pecho izquierdo. Las rayas y el corazón quedaron en el pecho izquierdo; los vaqueros azul oscuro y las zapatillas blancas se quedaron.

Todas las personas y escenas son sintéticas, y ejecutamos cada prompt una vez, así que cada imagen es una sola muestra.
Generado con GPT-Image 2 a través de la API de OmniaKey el 28 de octubre de 2026, tamaño 1024x1536, calidad medium.
Una foto de la prenda como segunda referencia
Para acercarte más, envía la prenda como segunda imagen. Pusimos primero la foto de la persona, segundo un vestido lencero de satén rojo colocado en plano, y usamos input.images con este prompt: "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."
El vestido llegó al suelo, cerca del largo de la foto en plano. La versión del mismo vestido solo con texto se detuvo a media pantorrilla. En nuestra única muestra, la foto de la prenda aportó el largo que las palabras dejaban abierto.

Dónde se desvió
La desviación apareció en las partes que dejamos fuera del prompt: el cambio del vestido lencero alteró el calzado aunque el prompt solo nombraba el vestido. Revisa la cara, las manos, el bajo, el calzado y cualquier estampado a tamaño completo antes de mostrar un resultado a un comprador. No probamos una prenda con logo impreso, el estampado exacto de la tela en una foto de producto ni más de dos imágenes.
Cuándo encaja mejor una API de probador virtual dedicada
Una API de probador virtual dedicada toma a la persona y la prenda como entradas separadas. La página de Vertex AI de Google "Generate Virtual Try-On Images" (última actualización, 26 de octubre de 2026; consultada el 28 de octubre de 2026) dice: "You provide an image of a person and an image of a clothing product." La misma página enumera personImage y productImages como campos Base64, un sampleCount de 1 a 4 y el id de modelo virtual-try-on-001. También incluye un aviso de que la documentación de Vertex AI ya no se actualiza.
Elige ese tipo de endpoint cuando la foto de la prenda sea la fuente de verdad y necesites varias muestras por petición. Elige la edición de GPT-Image 2 cuando un solo flujo para cambios de ropa y otras ediciones importe más que las muestras por llamada.
La página de precios de OpenAI (consultada el 28 de octubre de 2026) dice que gpt-image-2 se factura por tokens: la página enumera tarifas por token y ninguna tabla por imagen, y remite a una calculadora en la guía de generación de imágenes. La tarifa actual de OmniaKey está en precios.
Una plantilla de prompt para cambiar de ropa
Usa la forma que funcionó en nuestras pruebas: nombra la prenda primero y luego fija a la persona y el set.
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.
- Prenda: una frase con color, tejido y largo. "A red satin slip dress with thin straps that falls to mid-calf" dio un cambio claro.
- Elementos que se mantienen: pose, cara, pelo, cuerpo, fondo, iluminación. Enuméralos de forma explícita en el prompt.
- Acabado: "Photorealistic, no text, no logos." Nuestros prompts usaron ese final.
- Calzado: nómbralo si debe quedarse, por ejemplo "keep the white sneakers". Nuestro cambio del vestido lo alteró cuando no había calzado en el texto.
Añade una segunda imagen cuando el largo importe más que las palabras: pon a la persona primero, la prenda después y refiérete a "the first image" y "the second image" en el prompt, como hicimos. Para el orden general del prompt, consulta la guía de prompts de GPT Image 2.
Preguntas frecuentes
¿Hay un endpoint dedicado de probador virtual en la API de GPT Image 2?
No. La página del modelo de OmniaKey (consultada el 28 de octubre de 2026) enumera texto a imagen y edición de imagen. En nuestras pruebas, un probador virtual fue una edición con un prompt de texto y una segunda imagen opcional.
¿Puedo enviar una foto de la prenda?
Sí, como segunda imagen de referencia en input.images. En nuestra prueba del 28 de octubre de 2026, cambió el largo del vestido para igualar la foto en plano.
¿La cara se mantiene igual?
En nuestros tres cambios y en la prueba con dos referencias sí, a ojo. Revisa cada resultado a tamaño completo antes de mostrarlo.
¿Cuánto duran los enlaces de resultado?
Alrededor de una hora, según la documentación de la API de imágenes de OmniaKey consultada el 28 de octubre de 2026, y el archivo se conserva 24 horas. Descárgalo en cuanto la tarea termine bien.
¿Qué tamaño debería pedir?
Pasa size como WIDTHxHEIGHT, por ejemplo 1024x1536, y luego lee las dimensiones reales del PNG descargado. Nuestras pruebas usaron 1024x1536 con calidad medium.
Empieza con una foto y un prompt de ropa. La página de GPT-Image 2 cubre el modelo; las tarifas actuales van aparte.
Modelos de este artículo
Artículos relacionados
Guía de prompts de GPT Image 2: estructura, ejemplos e imágenes reales
Ocho prompts y nueve imágenes reales: qué acertó GPT Image 2 al detalle, qué añadió y cómo corregirlo.
Alternativa a la API de FLUX Kontext: editar fotos con GPT Image 2
Edición por instrucción sin máscara: el código de la petición, una cadena de tres ediciones que ejecutamos el 28 de octubre de 2026 y lo que conservó cada paso.
API de eliminación de objetos: quita objetos de tus fotos con GPT Image 2
Una frase por objeto bastó para estas tres eliminaciones. Aquí están el código de la petición, los resultados a tamaño completo y los puntos donde todavía no conviene fiarse.
Artículos recientes
- Clapping Cat Meme AI: haz que tu mascota aplauda con imagen a vídeo
- Guía de prompts de Kling 3.0: estructura, ejemplos y clips reales
- Guía de prompts de MiniMax H3: estructura, ejemplos y clips reales
- Claude Haiku 5.5 vs Sonnet 5.5: programación, precio y velocidad
- Guía de prompts de Wan 3.0: estructura, ejemplos y clips reales
