API di virtual try-on: cambiare outfit al modello con GPT Image 2
Una foto e un prompt cambiano l'outfit. Qui ci sono il codice della richiesta, tre cambi che abbiamo eseguito il 28 ottobre 2026 e dove la modifica sbanda.
In questa pagina
- Cosa può e cosa non può fare una modifica per il try-on
- Invia la foto e il prompt dell'outfit
- Tre cambi di outfit che abbiamo eseguito
- Una foto del capo come secondo riferimento
- Dove sbanda
- Quando conviene un'API try-on dedicata
- Un template di prompt per cambiare outfit
- Domande frequenti
- Esiste un endpoint try-on dedicato nell'API di GPT Image 2?
- Posso inviare una foto del capo?
- Il volto resta lo stesso?
- Quanto durano i link al risultato?
- Che dimensione devo chiedere?
Sì, con un prompt testuale. L'endpoint di modifica di GPT-Image 2 ha cambiato l'outfit su una sola foto e ha mantenuto posa, volto e sfondo nei nostri tre test del 28 ottobre 2026. Non esiste un campo dedicato al capo, ma una seconda foto del capo ha cambiato la lunghezza del vestito nella nostra esecuzione. Controlla ogni risultato a occhio.
La richiesta è una modifica di immagine sull'API media di OmniaKey: una foto sorgente, un prompt e immagini di riferimento opzionali. Abbiamo verificato la funzione qui sotto il 28 ottobre 2026 con un prompt diverso (un impermeabile giallo) su un JPEG da 1024 pixel del modello base, e ha restituito un PNG 1024x1536.
Cosa può e cosa non può fare una modifica per il try-on
Una modifica di immagine parte da una foto sorgente e da un prompt. L'operazione è edit, la sorgente viaggia inline in Base64 e il prompt nomina il nuovo outfit; la documentazione dell'API immagini di OmniaKey (verificata il 28 ottobre 2026) ammette anche più immagini di riferimento in un array images. Il risultato è un fotogramma nuovo, quindi il capo cambia e la persona resta ferma: nelle nostre esecuzioni volto, posa, capelli e sfondo da studio sono rimasti uguali.
Due limiti contano per un try-on: non c'è un campo separato per il capo, quindi il modello disegna l'indumento dalla tua descrizione o da una seconda foto, e il fotogramma nuovo può toccare dettagli che non hai nominato. Una funzione di try-on dovrebbe mostrare il risultato per la revisione e lasciare che chi compra giudichi la somiglianza. La stessa operazione serve anche a rimuovere un oggetto da una scena; per le modifiche guidate da istruzioni, vedi la guida all'alternativa a FLUX Kontext.
Invia la foto e il prompt dell'outfit
Invia un POST a https://api.omniakey.com/v1/media/tasks con una chiave bearer, un corpo JSON e l'header Idempotency-Key; la documentazione dell'API immagini di OmniaKey (verificata il 28 ottobre 2026) dice che la creazione restituisce HTTP 202 e un id del task. Interroga l'URL del task finché lo stato è queued o processing; succeeded significa che gli asset sono pronti, mentre un task failed porta error.code e error.message e non viene addebitato.
Compila i campi del task così:
| Campo | Valore |
|---|---|
model | gpt-image-2 |
type | image |
operation | edit |
input.prompt | l'istruzione sull'outfit |
input.image | la foto sorgente come oggetto data e mime_type |
input.images | foto di riferimento aggiuntive |
parameters.size | WIDTHxHEIGHT |
parameters.quality | low, medium, high o auto |
parameters.n | 1 |
Tieni la richiesta sotto 1 MiB, perché il Base64 inline rientra in quel limite. Il numero di campioni deve essere 1 e l'API restituisce sempre un PNG opaco, quindi leggi le dimensioni reali dal file scaricato.
Ecco la funzione:
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"] # link firmato: vale circa un'ora, scarica subito
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)
L'URL firmato dell'asset vale circa un'ora e il file resta disponibile per 24 ore, secondo la stessa documentazione, quindi scaricalo appena il task riesce. La nostra verifica del 28 ottobre 2026 ha usato il prompt dell'impermeabile giallo su un JPEG da 1024 pixel del modello base e ha restituito un PNG 1024x1536. Lo script invia un header User-Agent: quello predefinito di Python è stato rifiutato con HTTP 403 nella nostra esecuzione, e aggiungendo l'header ha funzionato.
Tre cambi di outfit che abbiamo eseguito
Tutti e tre i cambi sono partiti dalla stessa foto sintetica: una donna con una T-shirt bianca girocollo e jeans blu scuro su uno sfondo da studio grigio chiaro uniforme, creata a 1024x1536 e qualità medium nelle nostre esecuzioni del 28 ottobre 2026.
Il cambio 1 chiedeva uno slip dress in raso rosso con spalline sottili, lungo fino a metà polpaccio. Il vestito è uscito, e posa, volto, capelli e sfondo sono rimasti uguali. Le sneakers bianche sono diventate sandali con cinturini bianchi senza che fosse chiesto.
Il cambio 2 chiedeva un blazer in lana verde scuro sopra una camisole di seta color crema, con pantaloni neri a gamba dritta. Tutti e tre i capi sono comparsi e le sneakers bianche sono rimaste.
Il cambio 3 chiedeva una maglia a manica lunga a righe orizzontali blu navy e bianche, con un piccolo cuore rosso ricamato sul petto a sinistra. Le righe e il cuore sono finiti sul petto a sinistra; i jeans blu scuro e le sneakers bianche sono rimasti.

Ogni persona e ogni scena qui è sintetica, e abbiamo eseguito ogni prompt una volta sola, quindi ogni immagine è un campione.
Generated with GPT-Image 2 via the OmniaKey API on October 28, 2026, size 1024x1536, quality medium.
Una foto del capo come secondo riferimento
Per avvicinarti di più, invia il capo come seconda immagine. Abbiamo messo la foto della persona per prima, lo slip dress in raso rosso steso in piano per seconda e usato input.images con questo 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."
Il vestito arrivava a terra, vicino alla lunghezza della foto stesa in piano. La versione solo testuale dello stesso vestito si fermava a metà polpaccio. Nel nostro unico campione, la foto del capo ha portato la lunghezza che le parole avevano lasciato aperta.

Dove sbanda
Le deviazioni sono comparse nelle parti lasciate fuori dal prompt: il cambio con lo slip dress ha cambiato le scarpe, mentre il prompt nominava solo il vestito. Controlla volto, mani, orlo, scarpe e qualsiasi fantasia a dimensione piena prima di mostrare un risultato a chi compra. Non abbiamo testato un capo con logo stampato, la fantasia esatta del tessuto di una foto prodotto o più di due immagini.
Quando conviene un'API try-on dedicata
Un'API try-on dedicata riceve la persona e il capo come due input separati. La pagina di Google Vertex AI "Generate Virtual Try-On Images" (ultimo aggiornamento 26 ottobre 2026; verificata il 28 ottobre 2026) dice: "You provide an image of a person and an image of a clothing product." La stessa pagina elenca personImage e productImages come campi Base64, un sampleCount da 1 a 4 e l'ID modello virtual-try-on-001. Riporta anche un avviso che la documentazione di Vertex AI non viene più aggiornata.
Scegli quel tipo di endpoint quando la foto del capo è la fonte di verità e ti servono più campioni per richiesta. Scegli la modifica di GPT-Image 2 quando un'unica pipeline per cambi di outfit e altre modifiche conta più dei campioni per chiamata.
La pagina dei prezzi di OpenAI (verificata il 28 ottobre 2026) dice che gpt-image-2 si fattura a token: la pagina elenca le tariffe per token e nessuna tabella per immagine, e rimanda a un calcolatore nella guida alla generazione di immagini. La tariffa attuale di OmniaKey è nella pagina prezzi.
Un template di prompt per cambiare outfit
Usa la forma che ha funzionato nelle nostre esecuzioni: nomina prima il capo, poi blocca la persona e il 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.
- Capo: una frase con colore, tessuto e lunghezza. "A red satin slip dress with thin straps that falls to mid-calf" ha dato un cambio netto.
- Blocchi: posa, volto, capelli, corpo, sfondo, luce. Elencali esplicitamente nel prompt.
- Chiusura: "Photorealistic, no text, no logos." I nostri prompt finivano così.
- Scarpe: nominale se devono restare, per esempio "keep the white sneakers". Nel cambio con lo slip dress sono cambiate quando non erano nel testo.
Aggiungi una seconda immagine quando la lunghezza conta più delle parole: persona per prima, capo per secondo, e nel prompt richiama "the first image" e "the second image", come abbiamo fatto noi. Per l'ordine generale del prompt, vedi la guida ai prompt di GPT Image 2.
Domande frequenti
Esiste un endpoint try-on dedicato nell'API di GPT Image 2?
No. La pagina del modello su OmniaKey (verificata il 28 ottobre 2026) elenca testo in immagine e modifica di immagine. Nelle nostre esecuzioni un try-on è stato una modifica con un prompt testuale e una seconda immagine opzionale.
Posso inviare una foto del capo?
Sì, come seconda immagine di riferimento in input.images. Nella nostra esecuzione del 28 ottobre 2026 la lunghezza del vestito si è adeguata alla foto stesa in piano.
Il volto resta lo stesso?
Nei tre cambi e nell'esecuzione con due riferimenti sì, a occhio. Controlla ogni risultato a dimensione piena prima di mostrarlo.
Quanto durano i link al risultato?
Circa un'ora, secondo la documentazione dell'API immagini di OmniaKey verificata il 28 ottobre 2026, e il file resta 24 ore. Scaricalo appena il task riesce.
Che dimensione devo chiedere?
Passa size come WIDTHxHEIGHT, per esempio 1024x1536, poi leggi le dimensioni reali dal PNG scaricato. Le nostre esecuzioni usavano 1024x1536 a qualità medium.
Parti da una foto e da un prompt per l'outfit. La pagina di GPT-Image 2 copre il modello; le tariffe attuali sono a parte.
Modelli citati in questo articolo
Articoli correlati
GPT Image 2: guida ai prompt, struttura, esempi e immagini reali
Otto prompt e nove immagini reali: dove GPT Image 2 ha preso tutto alla lettera, cosa ha aggiunto e come correggerlo.
Alternativa all'API FLUX Kontext: modificare le foto con GPT Image 2
Modifiche guidate da un'istruzione, senza maschera: il codice della richiesta, una catena di tre modifiche eseguite il 28 ottobre 2026 e cosa ha conservato ogni passo.
API per rimuovere oggetti: togli un oggetto dalla foto con GPT Image 2
Un'istruzione per oggetto è bastata per tutte e tre le rimozioni. Qui trovi il codice della richiesta, i risultati a piena risoluzione e i punti in cui la modifica non è ancora affidabile.
Articoli recenti
- Clapping Cat Meme AI: fai battere le mani al tuo animale con l'image-to-video
- Guida ai prompt di Kling 3.0: struttura, esempi e clip reali
- Guida ai prompt di MiniMax H3: struttura, esempi e clip reali
- Claude Haiku 5.5 vs Sonnet 5.5: codice, costo e velocità
- Guida ai prompt di Wan 3.0: struttura, esempi e clip reali
