Tutorial
API de retoque de imágenes y eliminación de objetos: edita imágenes con prompts en HiAPI
Elimina objetos de tus fotos con los modelos de imagen a imagen de HiAPI: comparativas reales, qué modelo conserva tu composición, prompts que funcionan y ejemplos en curl y Python.
Resumen
- En HiAPI, eliminar objetos de una foto es una edición por instrucciones: envías la imagen y describes qué quieres eliminar. Los modelos genéricos de imagen a imagen no aceptan máscaras.
- Buenos puntos de partida:
flux-2/image-to-image($0.035 a 1K, conaspect_ratio: "auto"conserva tu composición),gpt-image-2/image-to-image($0.03 a 1K, el campo de imagen esinput_urls),seedream-4.5/image-to-image($0.045, admite hasta 4K) yqwen-image-3.0/image-to-image($0.0358). - El modelo de inpainting basado en máscaras FLUX.1 Fill Pro figura en HiAPI como próximamente. Hasta que esté disponible, el prompt es tu máscara.
La misma foto, la misma instrucción, dos modelos
Imagen de origen: una foto de producto de la que queremos quitar la etiqueta de precio.

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.
La etiqueta de precio y su cordón han desaparecido. La superficie de la botella que estaba oculta tras la etiqueta se ha reconstruido con la misma curvatura y reflejos que el original, el fondo gris no muestra rastro de retoque y la tapa, la base y la sombra coinciden con la imagen de origen.
Enviamos la misma solicitud a flux-2/image-to-image. La tarea terminó en estado fail tras 16 segundos, con solo TASK_FAILED como motivo, y el cargo se reembolsó. Un fallo no dice nada sobre el modelo en sí, pero te recuerda que debes gestionar el estado fail en tu código y reintentar con un segundo modelo.
Qué modelo usar
| ID del modelo | Campo de imagen | Conserva la composición de origen | Tamaño de salida | Precio |
|---|---|---|---|---|
flux-2/image-to-image |
image_urls (1–8) |
Sí, aspect_ratio: "auto" |
resolution 1K / 2K |
$0.035 a 1K |
gpt-image-2/image-to-image |
input_urls (1–16) |
Sí, aspect_ratio: "auto" (predeterminado) |
resolution 1K / 2K / 4K |
$0.03 a 1K |
qwen-image-3.0/image-to-image |
image_urls (1–3) |
No, hay que elegir entre 8 proporciones | resolution 1K / 2K |
$0.0358 |
seedream-4.5/image-to-image |
image_urls (1–14) |
No, hay que elegir entre 8 proporciones | resolution 2K / 4K |
$0.045 |
seedream-5.0-pro/image-to-image |
image_urls (1–10) |
No, hay que elegir entre 7 proporciones | resolution 1K / 2K |
$0.06 a 1K |
Precios en tiempo real de HiAPI, consultados el 20 de octubre de 2026. Las tareas fallidas no se cobran.
- Opción predeterminada para eliminar objetos: usa un modelo compatible con
aspect_ratio: "auto", así la salida mantiene la forma de la foto y puedes colocarla directamente en su sitio. - Impresiones de gran formato o páginas de producto con zoom: Seedream 4.5 genera 4K al mismo precio que 2K.
- Si solo necesitas quitar el fondo: usa una herramienta específica, como
851-labs/background-remover($0.002 por imagen), que solo requiere unimage_urly ningún 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"
}
}'
Recibirás un taskId. Consulta GET https://api.hiapi.ai/v1/tasks/{taskId} hasta que data.status sea success y luego descarga data.output[0].url. La imagen de origen debe estar en una URL pública; el modelo la obtiene en el servidor.
Python: una función para todos los 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)
Cómo escribir prompts de eliminación
Sin máscara, el prompt debe indicar con claridad qué quitar y qué conservar:
- Identifica el objeto y su posición. «La furgoneta blanca de reparto aparcada a la derecha» funciona mejor que «la furgoneta».
- Indica con qué rellenar el hueco. «Reconstruye el escaparate y la acera que hay detrás.»
- Fija todo lo demás. Termina con «mantén la iluminación, los colores y todo lo demás sin cambios» para que el modelo no reajuste el estilo de toda la foto.
El mismo patrón sirve para tareas relacionadas:
- Borrar y rellenar: «Elimina los cables que cruzan el cielo. Rellena con un cielo despejado que coincida con el degradado. Mantén todo lo demás sin cambios.»
- Reemplazar: «Cambia el vaso de papel por una taza de cerámica blanca. Iguala la iluminación y las sombras. Mantén todo lo demás sin cambios.»
- Restaurar: «La esquina inferior izquierda de esta foto escaneada está dañada. Reconstruye la hierba y el sendero que faltan. No cambies el resto.»
- Varios objetos: «Elimina la papelera junto al banco y los dos conos de tráfico. Rellena cada zona con el fondo. Mantén todo lo demás sin cambios.»
Para limpiezas extensas, haz una sola eliminación por llamada y encadénalas. Guarda cada resultado en tu propio almacenamiento y pasa esa URL a la siguiente llamada; los enlaces de salida de HiAPI caducan unos 7 días después de completarse la tarea.
Errores que encontrarás
Todos estos errores son HTTP 400 en el momento del envío, así que no se crea ninguna tarea ni se cobra nada:
additional properties 'mask_url' not allowed(omask): estos modelos no aceptan máscaras. Describe la zona en el prompt.input_urls: missing required field "input_urls": enviasteimage_urlsagpt-image-2/image-to-image.additional properties 'quality' not allowed: Seedream 5.0 Pro usaresolution(1K o 2K), noquality.aspect_ratio: value must be one of ...:autofunciona en FLUX.2, GPT Image y Grok Imagine, pero no en Seedream ni Qwen.
Si una tarea termina en estado fail, consulta data.error. La causa habitual es que el modelo no puede obtener la URL de origen.
Preguntas frecuentes
¿HiAPI tiene una API de inpainting basada en máscaras?
Todavía no para uso general. FLUX.1 Fill Pro, que acepta una imagen más una máscara en blanco y negro, figura como próximamente. Los modelos anteriores solo editan mediante prompts.
¿Qué modelo es mejor para eliminar objetos?
Empieza por los modelos que conservan la composición de origen: flux-2/image-to-image o gpt-image-2/image-to-image con aspect_ratio: "auto". GPT Image 2 resolvió limpiamente el ejemplo anterior. Antes de decidirte, compara ambos modelos con algunas de tus propias fotos.
¿Se pueden eliminar varios objetos en una sola llamada?
Sí, enuméralos en un mismo prompt. Cada llamada devuelve una imagen. Si el resultado se olvida de alguno, vuelve a ejecutar sobre la salida.
¿Se pueden usar comercialmente las imágenes editadas?
Las salidas generadas se rigen por los términos de uso de tu plan. Además, debes tener los derechos sobre la foto de origen que editas.
Más prompts de edición: recetas de prompts de Seedream 4.5 y guía de la API de Qwen Image 3.0.
Artículos relacionados
Ver todos los artículos →-
Tutorial
Cómo llamar a hailuo-2.3-fast/image-to-video a través de la API de HiAPI: práctica con curl y Python
La primera solicitud ejecutable del nivel rápido y de bajo coste de imagen a vídeo: del ID del modelo a la descarga del MP4
-
Tutorial
Cómo llamar a hailuo-2.3/text-to-video mediante la API de HiAPI: curl, Python y ejemplos de solicitud ejecutables
-
Tutorial
Uso de Kandinsky 6.0 Pro texto a video en HiAPI: tutorial con curl y Python
Demostración práctica centrada en la solicitud: construir la llamada de prompt a clip de video, enviar la solicitud, sondear el estado de finalización y descargar el resultado