HiAPI
Blog

Tutoriel

API de retouche d'image et de suppression d'objets : éditer des images par prompt sur HiAPI

Supprimez des objets de vos photos avec les modèles image-vers-image de HiAPI : comparaisons réelles, quel modèle préserve votre composition, des prompts efficaces et des exemples curl et Python.

Jul 12, 2026
API de retouche d'image et de suppression d'objets : éditer des images par prompt sur HiAPI

Résumé

  • Sur HiAPI, supprimer un objet d'une photo relève de l'édition par instruction : envoyez l'image et décrivez ce qu'il faut supprimer. Les modèles génériques image-vers-image n'acceptent pas de masque.
  • Bons points de départ : flux-2/image-to-image (0,035 $ en 1K, avec aspect_ratio: "auto" pour préserver votre composition), gpt-image-2/image-to-image (0,03 $ en 1K, champ image input_urls), seedream-4.5/image-to-image (0,045 $, jusqu'à 4K) et qwen-image-3.0/image-to-image (0,0358 $).
  • Le modèle d'inpainting à masque FLUX.1 Fill Pro est annoncé comme bientôt disponible sur HiAPI. En attendant, votre prompt fait office de masque.

Même photo, même instruction, deux modèles

Image source : une photo de produit dont nous voulons retirer l'étiquette de prix.

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 secondes, 0,03 $.

L'étiquette et son fil ont disparu. La surface de la bouteille masquée par l'étiquette a été reconstruite, avec une courbure et des reflets cohérents avec l'original, l'arrière-plan gris ne présente aucune trace de retouche, et le bouchon, le fond et l'ombre correspondent à l'image source.

Nous avons envoyé la même requête à flux-2/image-to-image. La tâche s'est terminée en fail après 16 secondes, avec pour seule raison TASK_FAILED, et a été remboursée. Un échec ne dit rien du modèle en soi, mais il rappelle qu'il faut gérer les fail dans votre code et réessayer sur un second modèle.

Quel modèle choisir

ID du modèle Champ image Préserve la composition source Taille de sortie Prix
flux-2/image-to-image image_urls (1–8) Oui, aspect_ratio: "auto" resolution 1K / 2K 0,035 $ en 1K
gpt-image-2/image-to-image input_urls (1–16) Oui, aspect_ratio: "auto" (par défaut) resolution 1K / 2K / 4K 0,03 $ en 1K
qwen-image-3.0/image-to-image image_urls (1–3) Non, choisir parmi 8 ratios resolution 1K / 2K 0,0358 $
seedream-4.5/image-to-image image_urls (1–14) Non, choisir parmi 8 ratios resolution 2K / 4K 0,045 $
seedream-5.0-pro/image-to-image image_urls (1–10) Non, choisir parmi 7 ratios resolution 1K / 2K 0,06 $ en 1K

Tarifs HiAPI en temps réel, relevés le 20 octobre 2026. Les tâches échouées ne sont pas facturées.

  • Choix par défaut pour la suppression d'objets : utilisez un modèle compatible avec aspect_ratio: "auto", ainsi la sortie conserve la forme de la photo et vous pouvez la replacer directement.
  • Impression grand format ou page produit zoomable : Seedream 4.5 produit du 4K au même prix que le 2K.
  • Pour simplement retirer l'arrière-plan : utilisez un outil dédié, comme 851-labs/background-remover (0,002 $ par image), qui ne demande qu'une image_url, sans 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"
    }
  }'

Vous recevez un taskId. Interrogez GET https://api.hiapi.ai/v1/tasks/{taskId} jusqu'à ce que data.status vaille success, puis téléchargez data.output[0].url. L'image source doit être accessible à une URL publique ; le modèle la récupère côté serveur.

Python : une fonction pour tous les modèles

# 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)

Rédiger un prompt de suppression

Sans masque, le prompt doit indiquer clairement ce qu'il faut retirer et ce qu'il faut conserver :

  1. Nommez l'objet et sa position. « la camionnette de livraison blanche garée à droite » fonctionne mieux que « la camionnette ».
  2. Dites par quoi combler le vide. « Reconstruis la devanture et le trottoir derrière elle. »
  3. Verrouillez tout le reste. Terminez par « garde l'éclairage, les couleurs et tout le reste inchangés » pour que le modèle ne restylise pas toute la photo.

Le même schéma s'applique à des tâches connexes :

  • Effacer et remplir : « Supprime les fils électriques qui traversent le ciel. Comble avec un ciel dégagé assorti au dégradé. Garde tout le reste inchangé. »
  • Remplacer : « Remplace le gobelet en carton par une tasse en céramique blanche. Respecte l'éclairage et les ombres. Garde tout le reste inchangé. »
  • Restaurer : « Le coin inférieur gauche de cette photo scannée est abîmé. Reconstruis l'herbe et le chemin manquants. Ne change pas le reste. »
  • Plusieurs objets : « Supprime la poubelle et les deux cônes de signalisation à côté du banc. Comble chaque zone avec l'arrière-plan. Garde tout le reste inchangé. »

Pour un nettoyage de grande ampleur, effectuez une seule suppression par appel et chaînez les appels. Enregistrez chaque résultat dans votre propre stockage et transmettez cette URL à l'appel suivant ; les liens de sortie HiAPI expirent environ 7 jours après la fin de la tâche.

Les erreurs que vous rencontrerez

Ces erreurs renvoient toutes un HTTP 400 à la soumission : aucune tâche n'est créée et rien n'est facturé :

  • additional properties 'mask_url' not allowed (ou mask) : ces modèles n'acceptent pas de masque. Décrivez la zone dans le prompt.
  • input_urls: missing required field "input_urls" : vous avez envoyé image_urls à gpt-image-2/image-to-image.
  • additional properties 'quality' not allowed : Seedream 5.0 Pro utilise resolution (1K ou 2K), et non quality.
  • aspect_ratio: value must be one of ... : auto est pris en charge par FLUX.2, GPT Image et Grok Imagine, mais pas par Seedream ni Qwen.

Si une tâche se termine en fail, consultez data.error. La cause fréquente est l'impossibilité pour le modèle de récupérer l'URL source.

Questions fréquentes

HiAPI propose-t-il une API d'inpainting à masque ?

Pas encore pour un usage général. FLUX.1 Fill Pro, qui accepte une image et un masque noir et blanc, est annoncé comme bientôt disponible. Les modèles ci-dessus n'éditent que par prompt.

Quel modèle est le meilleur pour la suppression d'objets ?

Commencez par les modèles qui préservent la composition source : flux-2/image-to-image ou gpt-image-2/image-to-image avec aspect_ratio: "auto". GPT Image 2 a traité proprement l'exemple ci-dessus. Avant de choisir, comparez les deux modèles sur quelques-unes de vos propres photos.

Peut-on supprimer plusieurs objets en un seul appel ?

Oui, listez-les dans un même prompt. Chaque appel renvoie une image. Si l'un d'eux manque à l'appel, relancez une passe sur la sortie.

L'image éditée peut-elle servir à un usage commercial ?

Les sorties générées sont soumises aux conditions d'utilisation de votre formule. Vous devez toujours détenir les droits sur la photo source éditée.

Pour d'autres prompts d'édition : recettes de prompts Seedream 4.5 et guide de l'API Qwen Image 3.0.

Articles similaires

Voir tous les articles →

Commencez avec des artefacts IA persistants

Obtenez votre clé API et appelez des modèles d'image, de vidéo et d'audio via une API unique basée sur les tasks.

Lire la documentation de l'API