API d’essayage virtuel : changer la tenue avec GPT Image 2
Une photo et un prompt suffisent à changer la tenue. Voici le code de la requête, trois changements exécutés le 28 octobre 2026 et les endroits où l’édition dérive.
Sur cette page
- Ce qu’une édition peut faire pour un essayage, et ce qu’elle ne peut pas
- Envoyer la photo et le prompt de tenue
- Trois changements de tenue que nous avons exécutés
- Une photo de vêtement comme seconde référence
- Où le résultat a dérivé
- Quand une API d’essayage dédiée convient mieux
- Un modèle de prompt pour changer de tenue
- Questions fréquentes
- Existe-t-il un point de terminaison d’essayage virtuel dédié dans l’API GPT Image 2 ?
- Puis-je envoyer une photo du vêtement ?
- Le visage reste-t-il identique ?
- Combien de temps les liens de résultat durent-ils ?
- Quelle taille demander ?
Oui, avec un prompt texte. Le point de terminaison d’édition de GPT-Image 2 a changé la tenue sur une photo et conservé la pose, le visage et le fond lors de nos trois essais du 28 octobre 2026. Il n’a pas d’entrée dédiée au vêtement, mais une seconde photo du vêtement a changé la longueur de la robe dans notre essai. Vérifiez chaque résultat à l’œil.
La requête est une édition d’image sur l’API média d’OmniaKey : une photo source, un prompt et des images de référence facultatives. Nous avons vérifié la fonction ci-dessous le 28 octobre 2026 avec un autre prompt (un imperméable jaune) sur un JPEG de 1024 pixels du modèle de base, et elle a renvoyé un PNG de 1024x1536.
Ce qu’une édition peut faire pour un essayage, et ce qu’elle ne peut pas
Une édition d’image part d’une photo source et d’un prompt. L’opération est edit, la source est intégrée en Base64 et le prompt nomme la nouvelle tenue ; la documentation de l’API image d’OmniaKey (vérifiée le 28 octobre 2026) autorise aussi plusieurs images de référence dans un tableau images. Le résultat est une nouvelle image : les vêtements changent, la personne reste. Dans nos essais, le visage, la pose, les cheveux et le fond de studio ont tenu.
Deux limites comptent pour un essayage : il n’y a pas de champ séparé pour le vêtement, donc le modèle le dessine d’après votre description ou une seconde photo, et la nouvelle image peut toucher des détails que vous n’avez pas nommés. Une fonction d’essayage doit montrer le résultat pour vérification et laisser l’acheteur juger la ressemblance. La même opération sert aussi à retirer un objet d’une scène ; pour les éditions guidées par instruction, voyez le guide de l’alternative FLUX Kontext.
Envoyer la photo et le prompt de tenue
Envoyez un POST à https://api.omniakey.com/v1/media/tasks avec une clé bearer, un corps JSON et un en-tête Idempotency-Key ; la documentation de l’API image d’OmniaKey (vérifiée le 28 octobre 2026) indique que la création renvoie HTTP 202 et un id de tâche. Interrogez l’URL de la tâche tant que le statut est queued ou processing ; succeeded signifie que les ressources sont prêtes, et une tâche en échec porte error.code et error.message et n’est pas facturée.
Renseignez les champs de la tâche ainsi :
| Champ | Valeur |
|---|---|
model | gpt-image-2 |
type | image |
operation | edit |
input.prompt | l’instruction de tenue |
input.image | la photo source sous forme d’objet data et mime_type |
input.images | photos de référence supplémentaires |
parameters.size | WIDTHxHEIGHT |
parameters.quality | low, medium, high ou auto |
parameters.n | 1 |
Gardez la requête sous 1 MiB, car le Base64 en ligne compte dans cette limite. Le nombre d’échantillons doit être 1, et l’API renvoie toujours un PNG opaque : lisez donc les dimensions réelles dans le fichier téléchargé.
Voici la fonction :
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"] # lien signé : valable environ une heure, téléchargez maintenant
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 signée de la ressource dure environ une heure et le fichier est conservé 24 heures, selon la même documentation ; téléchargez-le dès que la tâche réussit. Notre vérification du 28 octobre 2026 a utilisé le prompt de l’imperméable jaune sur un JPEG de 1024 pixels du modèle de base et a renvoyé un PNG de 1024x1536. Le script envoie un en-tête User-Agent : la valeur par défaut de Python a été refusée avec HTTP 403 dans notre essai, et l’ajout de l’en-tête a corrigé le problème.
Trois changements de tenue que nous avons exécutés
Les trois changements partaient de la même photo synthétique : une femme en T-shirt blanc à col rond et jean bleu foncé dans un studio uni gris clair, créée en 1024x1536 et qualité medium lors de nos essais du 28 octobre 2026.
Le premier demandait une robe nuisette en satin rouge à fines bretelles tombant au milieu du mollet. La robe est apparue, et la pose, le visage, les cheveux et le fond sont restés identiques. Les baskets blanches sont devenues des sandales blanches à talons et à lanières sans que nous les demandions.
Le deuxième demandait un blazer en laine vert foncé sur un caraco en soie crème, avec un pantalon droit noir. Les trois pièces sont apparues, et les baskets blanches sont restées.
Le troisième demandait un haut à manches longues à rayures horizontales bleu marine et blanches, avec un petit cœur rouge brodé sur la poitrine gauche. Les rayures et le cœur se sont placés sur la poitrine gauche ; le jean bleu foncé et les baskets blanches sont restés.

Toutes les personnes et scènes sont synthétiques, et nous avons exécuté chaque prompt une fois : chaque image est donc un seul échantillon.
Généré avec GPT-Image 2 via l’API OmniaKey le 28 octobre 2026, taille 1024x1536, qualité medium.
Une photo de vêtement comme seconde référence
Pour un résultat plus fidèle, envoyez le vêtement comme seconde image. Nous avons mis la photo de la personne en premier, une robe nuisette en satin rouge à plat en second, et utilisé input.images avec ce 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."
La robe descend jusqu’au sol, proche de la longueur de la photo à plat. La version du même vêtement décrite uniquement en mots s’arrêtait au milieu du mollet. Dans notre unique échantillon, la photo du vêtement a apporté la longueur que les mots laissaient ouverte.

Où le résultat a dérivé
La dérive est apparue dans les parties que nous avions laissées hors du prompt : le changement en nuisette a modifié les chaussures alors que le prompt ne nommait que la robe. Vérifiez le visage, les mains, l’ourlet, les chaussures et tout motif en taille réelle avant de montrer un résultat à un acheteur. Nous n’avons pas testé un vêtement avec un logo imprimé, le motif exact du tissu d’une photo produit, ni plus de deux images.
Quand une API d’essayage dédiée convient mieux
Une API d’essayage dédiée prend la personne et le vêtement comme entrées séparées. La page Vertex AI de Google « Generate Virtual Try-On Images » (dernière mise à jour le 26 octobre 2026 ; vérifiée le 28 octobre 2026) dit : "You provide an image of a person and an image of a clothing product." La même page liste personImage et productImages comme champs Base64, un sampleCount de 1 à 4 et l’id de modèle virtual-try-on-001. Elle comporte aussi un avis indiquant que la documentation Vertex AI n’est plus mise à jour.
Choisissez ce type de point de terminaison quand la photo du vêtement fait foi et que vous avez besoin de plusieurs échantillons par requête. Choisissez l’édition GPT-Image 2 quand un seul pipeline pour les changements de tenue et les autres éditions compte plus que le nombre d’échantillons par appel.
La page de tarifs d’OpenAI (vérifiée le 28 octobre 2026) indique que gpt-image-2 est facturé au token : la page liste des tarifs par token, sans tableau par image, et renvoie à un calculateur dans le guide de génération d’images. Le tarif actuel d’OmniaKey figure sur la page tarifs.
Un modèle de prompt pour changer de tenue
Reprenez la forme qui a fonctionné dans nos essais : nommez d’abord le vêtement, puis verrouillez la personne et le décor.
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.
- Vêtement : une phrase avec couleur, tissu et longueur. « A red satin slip dress with thin straps that falls to mid-calf » a produit un changement net.
- Verrous : pose, visage, cheveux, corps, fond, éclairage. Énumérez-les explicitement dans le prompt.
- Finition : « Photorealistic, no text, no logos. » Nos prompts utilisaient cette fin.
- Chaussures : nommez-les si elles doivent rester, par exemple « keep the white sneakers ». Notre changement en nuisette les a modifiées quand elles n’étaient pas dans le texte.
Ajoutez une seconde image quand la longueur compte plus que les mots : la personne en premier, le vêtement ensuite, et dans le prompt référez-vous à « the first image » et « the second image », comme nous l’avons fait. Pour l’ordre général du prompt, voyez le guide des prompts GPT Image 2.
Questions fréquentes
Existe-t-il un point de terminaison d’essayage virtuel dédié dans l’API GPT Image 2 ?
Non. La page du modèle chez OmniaKey (vérifiée le 28 octobre 2026) liste le texte en image et l’édition d’image. Dans nos essais, un essayage était une édition avec un prompt texte et une seconde image facultative.
Puis-je envoyer une photo du vêtement ?
Oui, comme seconde image de référence dans input.images. Lors de notre essai du 28 octobre 2026, elle a changé la longueur de la robe pour suivre la photo à plat.
Le visage reste-t-il identique ?
Dans nos trois changements et l’essai à deux références, oui, à l’œil. Vérifiez chaque résultat en taille réelle avant de le montrer.
Combien de temps les liens de résultat durent-ils ?
Environ une heure, selon la documentation de l’API image d’OmniaKey vérifiée le 28 octobre 2026, et le fichier est conservé 24 heures. Téléchargez-le dès que la tâche réussit.
Quelle taille demander ?
Passez size en WIDTHxHEIGHT, par exemple 1024x1536, puis lisez les dimensions réelles dans le PNG téléchargé. Nos essais utilisaient 1024x1536 en qualité medium.
Commencez avec une photo et un prompt de tenue. La page GPT-Image 2 couvre le modèle ; les tarifs actuels sont à part.
Modèles cités dans cet article
Articles similaires
Guide des prompts GPT Image 2 : structure, exemples et vraies images
Huit prompts, neuf vraies images : ce que GPT Image 2 a réussi au détail près, ce qu'il a ajouté et comment corriger.
Alternative à l'API FLUX Kontext : retoucher des images avec GPT Image 2
Retouche par consigne, sans masque : le code de la requête, une chaîne de trois retouches exécutée le 28 octobre 2026 et ce que chaque étape a conservé.
API de suppression d'objets : retirer des objets de vos photos avec GPT Image 2
Une phrase par objet a suffi pour ces trois suppressions. Voici le code de la requête, les résultats en pleine taille et les points auxquels il ne faut pas encore se fier.
Articles récents
- Clapping Cat Meme AI : faites applaudir votre animal avec l'image-vers-vidéo
- Guide des prompts Kling 3.0 : structure, exemples et vrais clips
- Guide des prompts MiniMax H3 : structure, exemples et vrais clips
- Claude Haiku 5.5 vs Sonnet 5.5 : code, coût et vitesse
- Guide des prompts Wan 3.0 : structure, exemples et vrais clips
