Tutorial
API de home staging virtual: transforme fotos de cômodos vazios em anúncios mobiliados com IA
Um fluxo de trabalho reproduzível de imagem para imagem, com comparações reais de antes e depois, prompts exatos, script de processamento em lote e preços verificados
Um conjunto de fotos de um imóvel vazio transmite menos informação ao comprador do que fotos com móveis. O staging físico resolve isso, mas exige custo real por unidade e dias de agendamento. Uma API de imagem para imagem pode fazer o mesmo trabalho com apenas uma foto do cômodo vazio: preserva o cômodo real — suas paredes, piso, janelas e ângulo da câmera — e adiciona móveis ao redor.
Este guia percorre o fluxo completo com o ID de modelo canônico gpt-image-2/image-to-image, chamado via POST https://api.hiapi.ai/v1/tasks. Inclui dois pares reais de antes e depois gerados para este guia (uma sala de estar e um quarto), seus prompts exatos, um script de lote reutilizável e preços verificados.
Como a imagem para imagem de staging mantém o cômodo real
A geração de texto para imagem cria cômodos do zero com base em uma descrição. Isso não serve para staging, porque a saída deve corresponder à unidade real em que o comprador vai entrar. A geração de imagem para imagem usa a foto do cômodo vazio como referência e a edita, de modo que a geometria real do cômodo é preservada.
A requisição tem duas partes: um prompt que descreve apenas o que deve ser alterado (os móveis e a decoração a adicionar) e um array input_urls com a foto de referência — a foto do cômodo vazio hospedada em uma URL pública. O modelo lê a imagem de referência, mantém o ângulo da câmera, as paredes, o piso e as janelas inalterados e renderiza os móveis na cena como se estivessem colocados naquele cômodo exato.
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"
}
}
Essa única escolha de design — entrada por referência, saída editada — é o que distingue o staging virtual da geração genérica de cômodos. Os dois exemplos abaixo demonstram isso em uma foto real de sala de estar vazia e sem mobília e em uma foto de quarto vazio.
Antes e depois: sala de estar

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.
A primeira imagem é a foto de referência, gerada com gpt-image-2/text-to-image para substituir uma foto de anúncio de uma unidade vazia real (proporção 16:9, resolução 1K, custo registrado de $0.03, gerada em 2026-09-23). Em um fluxo de produção, essa é na prática a foto enviada pelo próprio corretor — independentemente da origem da foto do cômodo vazio, a etapa de staging abaixo funciona da mesma forma.

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.
Evidência: modelo gpt-image-2/image-to-image, input_urls definido como a foto do cômodo vazio acima, aspect_ratio: 16:9, resolution: 1K, custo registrado de $0.03, gerado em 2026-09-23. A posição da janela, a porta na parede direita e os tons do piso e das paredes continuam os da foto de referência — apenas os móveis são novos.
Antes e depois: quarto

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.
Evidência: modelo gpt-image-2/image-to-image, input_urls definido como a foto do quarto vazio acima, aspect_ratio: 16:9, resolution: 1K, custo registrado de $0.03, gerado em 2026-09-23. As portas de correr do armário e a posição da janela permanecem inalteradas; a cama, as mesas de cabeceira e o quadro são as únicas adições.
As duas saídas de staging vêm de uma estrutura de prompt com três partes por chamada: a instrução para preservar o cômodo de referência, a lista concreta de móveis e as etiquetas de estilo fotográfico. Omitir a instrução de preservação é o erro mais comum nesse tipo de tarefa — sem ela, o modelo trata a referência com mais liberdade e pode alterar o ângulo da câmera ou as proporções do cômodo.
Executar tarefas de staging em lote com a API de tarefas
Um único imóvel geralmente exige staging de mais de um cômodo, e uma imobiliária precisa processar muitos imóveis. O script abaixo recebe um dicionário de URLs de fotos de cômodos vazios, envia uma tarefa de staging para cada URL e faz polling até que todas as saídas estejam prontas.
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)
Para um processamento em lote real, dois detalhes importam. Primeiro, input_urls recebe uma foto de referência por tarefa — um cômodo por chamada, em vez de tentar combinar vários cômodos em uma única requisição. Segundo, cada output[0].url na resposta é um link temporário: baixe os bytes imediatamente após a tarefa ser concluída com sucesso e armazene-os no seu próprio bucket, assim como este guia enviou imediatamente suas próprias saídas para armazenamento permanente.
Precificar um lote de tarefas de staging
gpt-image-2/image-to-image é cobrado por resolução de saída, verificado em 2026-09-23 no endpoint de preços em tempo real da HiAPI:
| Resolução | Preço por imagem de staging |
|---|---|
| 1K | $0.03 |
| 2K | $0.04 |
| 4K | $0.06 |
A fórmula de planejamento é:
batch cost = units × rooms staged per unit × price per image
Usando o preço de 1K da tabela:
| Lote de imóveis | Cômodos por unidade | Imagens de staging | Custo do lote |
|---|---|---|---|
| 1 unidade | 3 | 3 | $0.09 |
| 10 unidades | 3 | 30 | $0.90 |
| 50 unidades | 4 | 200 | $6.00 |
| 200 unidades | 4 | 800 | $24.00 |
Os preços mudam, portanto, antes de se comprometer com lotes grandes, consulte a página de preços em tempo real e adicione uma margem para regenerações com base na sua própria taxa de aprovação — os dois exemplos deste guia não representam uma taxa de aprovação genérica na primeira tentativa.
O que o staging virtual não faz
O staging de imagem para imagem edita pixels, não a unidade física. Antes de incorporá-lo ao fluxo de publicação de anúncios, lembre-se de três limitações:
- Não conserta o cômodo. Danos, mofo ou problemas estruturais na foto de referência não devem ser removidos por edição, e fotos com staging nunca devem distorcer a condição real da unidade.
- Não garante geometria perfeita em nível de pixel. O prompt pede ao modelo que preserve o cômodo, e os dois exemplos acima mantiveram o layout, mas cada foto com staging ainda deve ser comparada com sua foto de origem por uma pessoa antes da publicação no anúncio.
- As regras de divulgação continuam valendo. Muitos sistemas MLS e regulamentações imobiliárias locais exigem que os anúncios informem quais fotos passaram por staging virtual — verifique as regras aplicáveis ao seu mercado antes de publicar.
Perguntas frequentes
Qual modelo devo usar para staging virtual com IA?
Use gpt-image-2/image-to-image e chame POST /v1/tasks, passando a URL pública da foto do cômodo vazio em input_urls e especificando no prompt os móveis a adicionar. Consulte a documentação do modelo para o esquema completo de entrada.
As fotos com staging realmente correspondem ao cômodo real?
Devem corresponder, mas é preciso verificar. A estrutura de prompt deste guia — preservar primeiro a imagem de referência e depois listar apenas os móveis a adicionar — manteve a consistência de janelas, portas, piso e tons de parede nos dois exemplos aqui. Ainda assim, as saídas devem ser revisadas uma a uma contra a foto de origem antes da publicação, pois a qualidade da geração pode variar conforme o cômodo e a iluminação.
Quanto custa fazer o staging de um imóvel completo?
Com o preço de 1K de $0.03 por imagem, fazer o staging de três cômodos de uma unidade custa $0.09. Multiplique o número de cômodos por unidade pelo número de unidades do lote para planejar tarefas maiores, e confirme os preços atuais primeiro, pois a resolução e futuras mudanças de preço afetam o custo total.
Preciso divulgar que as fotos passaram por staging virtual?
Verifique as regras do seu mercado. Muitos sistemas MLS e regulamentações locais exigem uma etiqueta de divulgação nas fotos com staging virtual, o que é separado de qualquer requisito geral de precisão das imagens do anúncio.
Essa abordagem de imagem para imagem pode fazer mais do que staging?
Sim — preservar a imagem de referência enquanto se alteram os elementos descritos é um padrão genérico. O fluxo de trabalho de e-commerce com GPT Image 2 usa a mesma API de tarefas subjacente para processamento em lote de fotografia de produtos, com estrutura de prompt e preços semelhantes.
Comece enviando uma foto de uma unidade vazia na página do modelo GPT Image 2 de imagem para imagem, confirme que o cômodo com staging corresponde à unidade real e então mova a mesma chamada com input_urls para o script de lote acima a fim de processar o restante do imóvel.
Artigos relacionados
Ver todos os artigos →-
Tutorial
Como chamar hailuo-2.3-fast/image-to-video pela API HiAPI: curl e Python na prática
A primeira requisição executável do nível rápido e econômico de geração de vídeo a partir de imagem — do ID do modelo ao download do MP4
-
Tutorial
Como chamar hailuo-2.3/text-to-video pela API HiAPI: curl, Python e exemplos de requisição executáveis
-
Tutorial
Usar Kandinsky 6.0 Pro text-to-video na HiAPI: tutorial de curl e Python
Demonstração prática com foco na requisição: montar a chamada de prompt para clipe de vídeo, enviar a requisição, consultar o status de conclusão e baixar o resultado