Tutorial
API de restauração de imagens e remoção de objetos: edite imagens com prompts no HiAPI
Remova objetos de fotos usando os modelos de imagem para imagem do HiAPI: resultados comparativos reais, qual modelo preserva sua composição, prompts que funcionam e exemplos em curl e Python.
Resumo
- No HiAPI, remover objetos de uma foto é uma edição por instrução: envie a imagem e descreva o que deve ser removido. Modelos genéricos de imagem para imagem não aceitam máscaras.
- Pontos de partida adequados:
flux-2/image-to-image($0.035 em 1K, comaspect_ratio: "auto"para preservar sua composição),gpt-image-2/image-to-image($0.03 em 1K, com o campo de imageminput_urls),seedream-4.5/image-to-image($0.045, até 4K) eqwen-image-3.0/image-to-image($0.0358). - O modelo de inpainting baseado em máscara FLUX.1 Fill Pro está listado no HiAPI como em breve. Até ele ficar disponível, o prompt é a sua máscara.
A mesma foto, a mesma instrução, dois modelos
Imagem de origem: uma foto de produto da qual queremos remover a etiqueta de preço.

Remove the coral price tag and its string from the bottle. Rebuild the bottle surface and the gray background that were behind it. Keep the bottle, lighting, shadow and everything else unchanged.

gpt-image-2/image-to-image, resolution 1K, 1254×1254, 112 segundos, $0.03.
A etiqueta de preço e o cordão desapareceram. A superfície da garrafa que estava oculta pela etiqueta foi reconstruída, com curvatura e reflexos consistentes com a original, o fundo cinza não tem vestígios de retoque, e a tampa, a base e a sombra correspondem à imagem de origem.
Enviamos a mesma solicitação para flux-2/image-to-image. A tarefa terminou como fail após 16 segundos, com o motivo apenas TASK_FAILED, e o valor foi reembolsado. Uma falha não diz nada sobre o modelo em si, mas é um lembrete de que você deve tratar o status fail no código e tentar novamente com um segundo modelo.
Qual modelo usar
| ID do modelo | Campo de imagem | Preserva a composição da origem | Tamanho de saída | Preço |
|---|---|---|---|---|
flux-2/image-to-image |
image_urls (1–8) |
Sim, aspect_ratio: "auto" |
resolution 1K / 2K |
$0.035 em 1K |
gpt-image-2/image-to-image |
input_urls (1–16) |
Sim, aspect_ratio: "auto" (padrão) |
resolution 1K / 2K / 4K |
$0.03 em 1K |
qwen-image-3.0/image-to-image |
image_urls (1–3) |
Não, é preciso escolher entre 8 proporções | resolution 1K / 2K |
$0.0358 |
seedream-4.5/image-to-image |
image_urls (1–14) |
Não, é preciso escolher entre 8 proporções | resolution 2K / 4K |
$0.045 |
seedream-5.0-pro/image-to-image |
image_urls (1–10) |
Não, é preciso escolher entre 7 proporções | resolution 1K / 2K |
$0.06 em 1K |
Preços em tempo real do HiAPI, consultados em 20 de outubro de 2026. Tarefas com falha não são cobradas.
- Escolha padrão para remoção de objetos: use um modelo que aceite
aspect_ratio: "auto", assim a saída mantém o formato da foto e você pode colocá-la de volta no lugar original. - Impressões grandes ou páginas de produto com zoom: o Seedream 4.5 gera 4K pelo mesmo preço de 2K.
- Apenas remover o fundo: use uma ferramenta dedicada, como
851-labs/background-remover($0.002 por imagem), que recebe apenas umimage_urle não precisa de prompt.
curl
curl -s -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "flux-2/image-to-image",
"input": {
"prompt": "Remove the white delivery van parked on the right. Rebuild the storefront and sidewalk behind it. Keep everything else unchanged.",
"image_urls": ["https://your-cdn.example.com/street.jpg"],
"aspect_ratio": "auto",
"resolution": "1K"
}
}'
Você recebe um taskId. Faça polling em GET https://api.hiapi.ai/v1/tasks/{taskId} até que data.status seja success e então baixe data.output[0].url. A imagem de origem precisa estar em uma URL pública; o modelo a busca no servidor.
Python: uma função para todos os modelos
# pip install requests; export HIAPI_KEY=your-key first
import os, time, requests
API = "https://api.hiapi.ai/v1/tasks"
H = {"Authorization": f"Bearer {os.environ['HIAPI_KEY']}"}
def edit(model, timeout_s=300, **inp):
r = requests.post(API, json={"model": model, "input": inp}, headers=H, timeout=30).json()
if r.get("code") != 200:
raise RuntimeError(r) # a 400 lists every invalid field at once
task_id = r["data"]["taskId"]
deadline = time.time() + timeout_s
while time.time() < deadline:
d = requests.get(f"{API}/{task_id}", headers=H, timeout=30).json()["data"]
if d["status"] == "success":
return requests.get(d["output"][0]["url"], timeout=120).content
if d["status"] == "fail":
raise RuntimeError(d.get("error"))
time.sleep(4)
raise TimeoutError(task_id)
prompt = ("Remove the tourists from the plaza. Extend the paving stones and the fountain base. "
"Keep the buildings, light and everything else unchanged.")
src = "https://your-cdn.example.com/plaza.jpg"
# FLUX.2 keeps the source shape
img = edit("flux-2/image-to-image", prompt=prompt, image_urls=[src], aspect_ratio="auto", resolution="1K")
# GPT Image 2: note the field name is input_urls
img = edit("gpt-image-2/image-to-image", prompt=prompt, input_urls=[src], resolution="1K")
# Seedream 4.5 at 4K: aspect_ratio and resolution are required
img = edit("seedream-4.5/image-to-image", prompt=prompt, image_urls=[src], aspect_ratio="3:2", resolution="4K")
with open("plaza-clean.png", "wb") as f:
f.write(img)
Como escrever prompts de remoção
Sem máscara, o prompt precisa declarar claramente o que deve sair e o que deve permanecer:
- Identifique o objeto e sua posição. «A van de entrega branca estacionada à direita» funciona melhor que «aquela van».
- Diga o que preenche o espaço vazio. «Reconstrua a fachada da loja e a calçada atrás dela.»
- Fixe todo o resto. Termine com «mantenha a iluminação, as cores e todo o resto inalterados», assim o modelo não reestiliza a foto inteira.
O mesmo padrão vale para tarefas relacionadas:
- Apagar e preencher: «Remova os fios que cruzam o céu. Preencha com céu limpo que combine com o degradê. Mantenha todo o resto inalterado.»
- Substituir: «Troque o copo de papel por uma caneca de cerâmica branca. Combine a iluminação e a sombra. Mantenha todo o resto inalterado.»
- Restaurar: «O canto inferior esquerdo desta foto digitalizada está danificado. Reconstrua a grama e o caminho que faltam. Não altere o restante.»
- Vários objetos: «Remova a lixeira ao lado do banco e os dois cones de trânsito. Preencha cada área com o fundo. Mantenha todo o resto inalterado.»
Para limpezas grandes, faça uma remoção por chamada e encadeie as chamadas. Salve cada resultado no seu próprio armazenamento e passe essa URL para a próxima chamada; os links de saída do HiAPI expiram cerca de 7 dias após a conclusão da tarefa.
Erros que você vai encontrar
Esses erros são todos HTTP 400 no envio, portanto nenhuma tarefa é criada e nada é cobrado:
additional properties 'mask_url' not allowed(oumask): esses modelos não aceitam máscaras. Descreva a região no prompt.input_urls: missing required field "input_urls": você enviouimage_urlsparagpt-image-2/image-to-image.additional properties 'quality' not allowed: o Seedream 5.0 Pro usaresolution(1K ou 2K), nãoquality.aspect_ratio: value must be one of ...:autofunciona no FLUX.2, no GPT Image e no Grok Imagine, mas não no Seedream ou no Qwen.
Se a tarefa terminar como fail, verifique data.error. A causa comum é o modelo não conseguir buscar a URL de origem.
Perguntas frequentes
O HiAPI tem uma API de inpainting baseada em máscara?
Ainda não para uso geral. O FLUX.1 Fill Pro, que aceita uma imagem e uma máscara em preto e branco, está listado como em breve. Os modelos acima editam apenas por prompt.
Qual modelo é melhor para remoção de objetos?
Comece pelos modelos que preservam a composição da origem: flux-2/image-to-image ou gpt-image-2/image-to-image com aspect_ratio: "auto". O GPT Image 2 tratou o exemplo acima de forma limpa. Antes de escolher um modelo, compare os dois com algumas fotos suas.
É possível remover vários objetos em uma única chamada?
Sim, liste-os em um único prompt. Cada chamada retorna uma imagem. Se o resultado deixar passar algum, execute novamente sobre a saída.
As imagens editadas podem ser usadas comercialmente?
As saídas geradas estão sujeitas aos termos de uso do seu plano. Você ainda precisa ter os direitos sobre a foto de origem que está editando.
Mais prompts de edição: Receitas de prompts do Seedream 4.5 e Guia da API do Qwen Image 3.0.
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