Tutoriel
API de home staging virtuel : transformez des photos de pièces vides en annonces immobilières meublées avec l'IA
Un workflow image-vers-image reproductible, avec de vrais avant/après générés, des prompts exacts, un script de traitement par lots et une tarification vérifiée
Une photo de logement vide parle moins à un acheteur qu'une photo meublée. Le home staging physique résout ce problème, mais chaque unité représente une dépense réelle et la prise de rendez-vous prend plusieurs jours. Une API image-vers-image peut accomplir le même travail avec une seule photo de pièce vide : conserver la pièce réelle — ses murs, son sol, ses fenêtres et l'angle de prise de vue — et ajouter du mobilier autour.
Ce guide parcourt l'ensemble du workflow avec l'ID de modèle canonique gpt-image-2/image-to-image, appelé via POST https://api.hiapi.ai/v1/tasks. Il contient deux ensembles réels d'avant/après générés pour ce guide (un salon et une chambre), leurs prompts exacts, un script de traitement par lots réutilisable et une tarification vérifiée.
Comment l'image-vers-image préserve la réalité d'une pièce
La génération texte-vers-image crée des pièces de toutes pièces à partir d'une description. Ce n'est pas adapté au home staging, car le résultat doit correspondre à l'unité réelle dans laquelle l'acheteur entrera. La génération image-vers-image utilise une photo de pièce vide comme référence et la modifie, de sorte que la géométrie réelle de la pièce est conservée.
La requête comporte deux parties : un prompt qui décrit uniquement ce qui doit changer (le mobilier et la décoration à ajouter), et un tableau input_urls contenant la photo de référence — la photo de la pièce vide hébergée sur une URL publique. Le modèle lit l'image de référence, conserve l'angle de prise de vue, les murs, le sol et les fenêtres, et rend le mobilier dans la scène comme s'il était disposé dans cette pièce exacte.
POST https://api.hiapi.ai/v1/tasks
{
"model": "gpt-image-2/image-to-image",
"input": {
"prompt": "<furniture and decor to add, plus an instruction to keep the room unchanged>",
"input_urls": ["<public URL of the empty-room photo>"],
"aspect_ratio": "16:9",
"resolution": "1K"
}
}
Ce choix de conception unique — entrer une référence, produire une édition — est précisément ce qui distingue le home staging virtuel de la génération générique de pièces. Les deux exemples ci-dessous le montrent sur une vraie photo d'un salon vide non meublé et une photo d'une chambre vide.
Avant/après : le salon

A professionally lit real estate photograph of a completely empty living room in
a modern apartment: light oak hardwood floors, plain white walls, one large
window with soft daylight, closed white door on the right wall, ceiling with a
single flush-mount light fixture, no furniture, no people, no text or
watermarks, wide-angle real estate listing photography style, sharp focus,
natural color grading.
La première image est la photo de référence, générée avec gpt-image-2/text-to-image pour remplacer la photo d'annonce d'une unité vide réelle (rapport d'aspect 16:9, résolution 1K, coût enregistré 0,03 $, générée le 2026-09-23). Dans un workflow de production, il s'agirait en réalité de la photo téléversée par l'agent lui-même — quelle que soit l'origine de la photo de pièce vide, l'étape de mise en scène ci-dessous fonctionne de la même manière.

Using the empty room in the reference photo, keep the exact room geometry,
floor, walls, window, and door unchanged, and add tasteful modern furniture to
stage it as a livable listing photo: a light gray fabric sofa with two throw
pillows, a round wooden coffee table, a neutral area rug, a floor lamp in the
corner, and a piece of abstract wall art above the sofa. Keep the camera angle
and lighting identical to the reference photo. No people, no text or
watermarks, real estate listing photography style.
Preuve : modèle gpt-image-2/image-to-image, input_urls défini sur la photo de la pièce vide ci-dessus, aspect_ratio: 16:9, resolution: 1K, coût enregistré 0,03 $, générée le 2026-09-23. La position de la fenêtre, la porte du mur de droite, le sol et les tonalités des murs sont repris de la photo de référence — seuls les meubles ont été ajoutés.
Avant/après : la chambre

A professionally lit real estate photograph of a completely empty bedroom in a
modern apartment: light oak hardwood floors, plain white walls, one window with
sheer curtains letting in soft daylight, a closet with sliding white doors on
one wall, ceiling with a single flush-mount light fixture, no furniture, no
people, no text or watermarks, wide-angle real estate listing photography
style, sharp focus, natural color grading.

Using the empty room in the reference photo, keep the exact room geometry,
floor, walls, window, and closet doors unchanged, and add tasteful modern
furniture to stage it as a livable listing photo: a queen-size bed with a light
gray upholstered headboard and neutral bedding, two matching nightstands with
small lamps, a folded throw blanket at the foot of the bed, and a framed piece
of wall art above the headboard. Keep the camera angle and lighting identical to
the reference photo. No people, no text or watermarks, real estate listing
photography style.
Preuve : modèle gpt-image-2/image-to-image, input_urls défini sur la photo de la chambre vide ci-dessus, aspect_ratio: 16:9, resolution: 1K, coût enregistré 0,03 $, générée le 2026-09-23. Les portes coulissantes de la penderie et la position de la fenêtre sont inchangées ; le lit, les tables de chevet et le tableau sont les seuls ajouts.
Les deux résultats de mise en scène proviennent d'une structure de prompt en trois parties chaque fois : une instruction de conservation de la pièce de référence, une liste concrète de meubles et des balises de style photographique. Omettre l'instruction de conservation est l'erreur la plus fréquente dans ce type de tâche — sans elle, le modèle traite l'image de référence avec plus de latitude et peut modifier l'angle de prise de vue ou les proportions de la pièce.
Exécuter des tâches de mise en scène par lots avec l'API de tâches
Une annonce a généralement besoin de plus d'une pièce mise en scène, et une agence immobilière doit traiter de nombreuses annonces. Le script ci-dessous prend un dictionnaire d'URL de photos de pièces vides, soumet une tâche de mise en scène pour chaque URL et interroge l'API jusqu'à ce que tous les résultats soient prêts.
import os
import time
import requests
API_URL = "https://api.hiapi.ai/v1/tasks"
HEADERS = {
"Authorization": f"Bearer {os.environ['HIAPI_TOKEN']}",
"Content-Type": "application/json",
}
STAGING_BRIEF = (
"keep the exact room geometry, floor, walls, and window unchanged, and add "
"tasteful modern furniture to stage it as a livable listing photo, real "
"estate listing photography style, no people, no text or watermarks"
)
# name -> public URL of the empty-room photo
ROOMS = {
"unit-204-living-room": "https://your-storage.example.com/unit-204-living-room.jpg",
"unit-204-bedroom": "https://your-storage.example.com/unit-204-bedroom.jpg",
}
def submit_staging_job(empty_room_url, aspect_ratio="16:9", resolution="1K"):
response = requests.post(
API_URL,
headers=HEADERS,
json={
"model": "gpt-image-2/image-to-image",
"input": {
"prompt": STAGING_BRIEF,
"input_urls": [empty_room_url],
"aspect_ratio": aspect_ratio,
"resolution": resolution,
},
},
timeout=60,
)
response.raise_for_status()
return response.json()["data"]["taskId"]
def wait_for_output(task_id, timeout_s=300, poll_interval=5):
deadline = time.time() + timeout_s
while time.time() < deadline:
r = requests.get(f"{API_URL}/{task_id}", headers=HEADERS, timeout=30)
r.raise_for_status()
task = r.json()["data"]
if task["status"] == "success":
return task["output"][0]["url"] # expires — download immediately
if task["status"] == "fail":
raise RuntimeError(task["error"])
time.sleep(poll_interval)
raise TimeoutError(f"task {task_id} did not finish in {timeout_s}s")
task_ids = {name: submit_staging_job(url) for name, url in ROOMS.items()}
staged_urls = {name: wait_for_output(tid) for name, tid in task_ids.items()}
print(staged_urls)
Deux détails importants pour un véritable traitement par lots. Premièrement, input_urls accepte une photo de référence par tâche — une pièce mise en scène par appel, plutôt que d'essayer de combiner plusieurs pièces dans une seule requête. Deuxièmement, chaque output[0].url de la réponse est un lien à durée limitée : téléchargez immédiatement les octets après le succès de la tâche et stockez-les dans votre propre bucket, comme ce guide téléverse ses propres résultats vers un stockage permanent.
Tarification d'un lot de tâches de mise en scène
gpt-image-2/image-to-image est facturé selon la résolution de sortie, vérifié le 2026-09-23 par rapport au point de terminaison de tarification en temps réel de HiAPI :
| Résolution | Prix par image mise en scène |
|---|---|
| 1K | 0,03 $ |
| 2K | 0,04 $ |
| 4K | 0,06 $ |
La formule de planification est :
coût du lot = unités × pièces mises en scène par unité × prix par image
En utilisant le prix 1K du tableau :
| Lot d'annonces | Pièces par unité | Images mises en scène | Coût du lot |
|---|---|---|---|
| 1 unité | 3 | 3 | 0,09 $ |
| 10 unités | 3 | 30 | 0,90 $ |
| 50 unités | 4 | 200 | 6,00 $ |
| 200 unités | 4 | 800 | 24,00 $ |
Les prix évoluent : consultez donc la page de tarification en temps réel avant de vous engager sur un gros volume, et ajoutez une marge de régénération selon votre propre taux d'approbation — les deux exemples de ce guide ne représentent pas un taux de réussite générique au premier essai.
Ce que le home staging virtuel ne peut pas faire
Le home staging image-vers-image modifie des pixels, pas l'unité réelle. Trois limites à garder en tête avant de l'intégrer à un workflow d'annonces :
- Il ne peut pas réparer une pièce. Les dommages, moisissures ou problèmes structurels de la photo de référence ne doivent pas être effacés, et une photo mise en scène ne doit jamais déformer l'état réel de l'unité.
- Il ne garantit pas une géométrie parfaite au pixel près. Le prompt demande au modèle de conserver la pièce, et les deux exemples ci-dessus ont maintenu la disposition, mais chaque photo mise en scène doit encore être comparée manuellement à sa photo source avant publication sur une annonce.
- Les règles de divulgation s'appliquent toujours. De nombreux systèmes MLS et réglementations immobilières locales exigent que les annonces indiquent quelles photos sont virtuellement mises en scène — vérifiez les règles applicables à votre marché avant de publier.
Questions fréquentes
Quel modèle utiliser pour le home staging virtuel par IA ?
Utilisez gpt-image-2/image-to-image et appelez POST /v1/tasks, en transmettant l'URL publique de la photo de la pièce vide dans input_urls et en spécifiant le mobilier à ajouter dans le prompt. Consultez la documentation du modèle pour le schéma d'entrée complet.
Les photos mises en scène correspondent-elles vraiment à la pièce réelle ?
Elles le devraient, mais il faut le vérifier. La structure de prompt de ce guide — conserver d'abord l'image de référence, puis lister uniquement le mobilier à ajouter — a maintenu la cohérence des fenêtres, des portes, du sol et des tonalités des murs dans les deux exemples présentés ici. Il convient toutefois d'examiner chaque résultat par rapport à la photo source avant publication, car la qualité de génération peut varier selon la pièce et l'éclairage.
Combien coûte la mise en scène d'une annonce complète ?
Au prix 1K de 0,03 $ par image, mettre en scène trois pièces pour une unité coûte 0,09 $. Multipliez le nombre de pièces par unité et le nombre d'unités du lot pour planifier des volumes plus importants, et vérifiez d'abord les prix actuels, car la résolution et les futures variations tarifaires influent sur le coût total.
Dois-je divulguer que les photos sont virtuellement mises en scène ?
Vérifiez les règles de votre marché. De nombreux systèmes MLS et réglementations locales exigent l'ajout d'une mention de divulgation sur les photos virtuellement mises en scène, indépendamment de toute exigence générale d'exactitude des images d'une annonce.
Cette approche image-vers-image peut-elle faire plus que la mise en scène ?
Oui — conserver une image de référence tout en modifiant les éléments décrits est un schéma générique. Le workflow e-commerce de GPT Image 2 utilise la même API de tâches sous-jacente pour le traitement par lots de photographie produit, avec des prompts et une structure de tarification similaires.
Commencez par téléverser une photo d'unité vide depuis la page du modèle GPT Image 2 image-vers-image, vérifiez que la pièce mise en scène correspond à l'unité réelle, puis déplacez le même appel input_urls dans le script de traitement par lots ci-dessus pour traiter le reste de l'annonce.
Articles similaires
Voir tous les articles →-
Tutoriel
Comment appeler hailuo-2.3-fast/image-to-video via l'API HiAPI : curl et Python en pratique
La première requête exploitable du palier image-vers-vidéo rapide et économique — de l'ID du modèle au téléchargement du MP4
-
Tutoriel
Comment appeler hailuo-2.3/text-to-video via l'API HiAPI : curl, Python et exemples de requêtes exécutables
-
Tutoriel
Utiliser Kandinsky 6.0 Pro texte-vers-vidéo sur HiAPI : tutoriel curl et Python
Démonstration pratique axée sur la requête : construire l'appel du prompt au clip vidéo, soumettre la requête, interroger l'état d'achèvement et télécharger le résultat