HiAPI
Blog

Guide d'utilisation

Générer des images de produits e-commerce avec seedream-4.5/image-to-image via l'API hiapi

Aug 6, 2026
Générer des images de produits e-commerce avec seedream-4.5/image-to-image via l'API hiapi

Un catalogue de produits n'est pas une seule photo — c'est le même SKU présenté dans une dizaine de contextes : photo produit sur fond blanc, photo en situation, retouche après changement de composant par le fournisseur, et versions assorties à l'identité visuelle de la marque saisonnière. Reshoot ou régénération à partir de zéro à chaque fois casse la cohérence, car un prompt entièrement nouveau dessinera un produit légèrement différent.

seedream-4.5/image-to-image est fait pour cela. Il prend votre vraie photo de produit — ou plusieurs images de référence à la fois — plus une instruction d'édition en langage naturel, et renvoie une image éditée qui préserve la géométrie, les matériaux et l'identité de marque réels du produit, en ne changeant que ce que vous demandez : l'arrière-plan, les détails d'usure, ou l'étalonnage nécessaire pour correspondre à une identité visuelle unifiée. Sur hiapi, il fonctionne comme tous les autres modèles via le même endpoint asynchrone /v1/tasks, à 0,045 $ par image.

Les deux exemples ci-dessous sont de vrais appels API, montrant les prompts exacts et les images générées.

Pourquoi éditer plutôt que régénérer

Le texte-vers-image et l'image-vers-image résolvent des problèmes différents :

  • Texte-vers-image crée un produit à partir d'une description. Idéal pour la conception conceptuelle, inadapté à un catalogue produit — demandez deux fois et vous obtiendrez deux tasses différentes.
  • Édition image-vers-image part de votre vraie photo de produit. Le modèle traite l'image de référence comme la vérité terrain pour la forme, les proportions et l'identité de marque, et ne change que ce que le prompt spécifie. C'est exactement ce qui le rend sûr pour de vraies fiches produit : le produit en sortie est toujours votre produit.

Le flux de travail réel est le suivant : conservez une photo de base propre pour chaque SKU (une photo studio neutre suffit comme référence), puis exécutez seedream-4.5/image-to-image une fois pour chaque contexte dont vous avez besoin — scène de vie, remplacement d'arrière-plan, arrière-plan cohérent avec la marque, retouche de détails — au lieu de reshooter ou de re-prompter à partir de zéro à chaque fois.

Exemple 1 : remplacer l'arrière-plan par une scène de vie

Référence de base : une photo studio neutre d'un dripper à café en céramique sur fond blanc.

Prompt d'édition envoyé au modèle :

Keep the ceramic pour-over dripper's exact shape, glaze color, and proportions
unchanged. Place it on a warm wood kitchen counter next to a steaming ceramic
mug and an open burlap coffee bag. Warm golden-hour side lighting, shallow
depth of field, soft shadows. Do not alter the dripper itself in any way —
only change the surrounding scene.

Le résultat préserve la silhouette et la couleur de glaçure du dripper, reconnaissables au pixel près, tout en le plaçant dans une scène de vie qu'une photo produit ordinaire ne pourrait pas produire seule — sans reshoot, sans étape de composition séparée.

Exemple 2 : unifier le produit sur un arrière-plan de marque

Référence de base : une photo studio neutre d'une basket en toile blanche.

Prompt d'édition envoyé au modèle :

Keep the sneaker's stitching, eyelets, laces, and canvas texture exactly as
shown. Replace the background with a solid terracotta studio backdrop and
place the sneaker on a matching terracotta pedestal. Even, soft studio
lighting from the upper left, subtle contact shadow. Do not change the
sneaker's shape, color, or any printed details.

C'est le schéma pour unifier visuellement un catalogue produit : choisissez un traitement d'arrière-plan, puis faites passer la photo de base de chaque SKU par la même instruction d'édition. Les produits diffèrent ; l'arrière-plan, la direction de la lumière et la teinte restent cohérents, car c'est le prompt qui les contrôle — pas le produit lui-même.

Appeler l'API directement

seedream-4.5/image-to-image fonctionne via l'endpoint de tâches asynchrones de hiapi. Soumettez la tâche, interrogez jusqu'à completion, puis téléchargez le résultat.

curl :

curl -s -X POST https://api.hiapi.ai/v1/tasks \
  -H "Authorization: Bearer $HIAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-4.5/image-to-image",
    "input": {
      "prompt": "Keep the product exactly as shown. Replace the background with a solid terracotta studio backdrop and matching pedestal. Even soft studio lighting from the upper left.",
      "image_urls": ["https://your-storage.example.com/base-product-photo.jpg"],
      "aspect_ratio": "1:1",
      "resolution": "2K"
    }
  }'

La réponse renvoie un task_id. Interrogez GET /v1/tasks/{task_id} jusqu'à ce que status soit succeeded, puis lisez l'URL de l'image dans output[0].url. Cette URL est temporaire — téléchargez immédiatement.

Python (soumettre + interroger + télécharger) :

import os
import time
import requests

API_BASE = "https://api.hiapi.ai/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"}


def edit_product_image(prompt: str, image_urls: list[str],
                        aspect_ratio: str = "1:1", resolution: str = "2K") -> bytes:
    resp = requests.post(
        f"{API_BASE}/tasks",
        headers=HEADERS,
        json={
            "model": "seedream-4.5/image-to-image",
            "input": {
                "prompt": prompt,
                "image_urls": image_urls,
                "aspect_ratio": aspect_ratio,
                "resolution": resolution,
            },
        },
        timeout=30,
    )
    resp.raise_for_status()
    task_id = resp.json()["task_id"]

    while True:
        poll = requests.get(f"{API_BASE}/tasks/{task_id}", headers=HEADERS, timeout=30)
        poll.raise_for_status()
        data = poll.json()
        if data["status"] == "succeeded":
            image_url = data["output"][0]["url"]
            return requests.get(image_url, timeout=30).content
        if data["status"] == "failed":
            raise RuntimeError(f"task {task_id} failed: {data.get('error')}")
        time.sleep(3)

Édition en masse d'un catalogue produit

Le schéma ci-dessus se généralise directement à un catalogue produit : maintenez une liste de (sku, base_photo_url), appliquez la même instruction d'édition à chaque entrée — ou une variante propre à chaque SKU — et écrivez les résultats en indexant par SKU.

CATALOG = [
    {"sku": "dripper-ceramic-01", "base_url": "https://your-storage.example.com/dripper-01.jpg"},
    {"sku": "sneaker-canvas-white", "base_url": "https://your-storage.example.com/sneaker-white.jpg"},
    {"sku": "mug-stoneware-02", "base_url": "https://your-storage.example.com/mug-02.jpg"},
]

BACKDROP_PROMPT = (
    "Keep the product's exact shape, materials, and any printed branding "
    "unchanged. Replace the background with a solid terracotta studio "
    "backdrop and matching pedestal. Even soft studio lighting from the "
    "upper left, subtle contact shadow. Do not alter the product itself."
)

for item in CATALOG:
    image_bytes = edit_product_image(
        prompt=BACKDROP_PROMPT,
        image_urls=[item["base_url"]],
        aspect_ratio="1:1",
        resolution="2K",
    )
    with open(f"{item['sku']}-branded.jpg", "wb") as f:
        f.write(image_bytes)
    print(f"{item['sku']}: done")

À 0,045 $ par image, un traitement d'arrière-plan sur un catalogue de 50 SKU coûte environ 2,25 $ — et comme chaque tâche est indépendante, elle peut être parallélisée via un pool de threads ou une file de tâches plutôt qu'exécutée séquentiellement.

image_urls accepte jusqu'à 14 images de référence par appel, donc les variantes plus avancées peuvent, lorsque l'édition est complexe, fournir au modèle plusieurs angles du même produit (face, profil, détail) en une seule fois.

Questions fréquentes

seedream-4.5/image-to-image modifie-t-il le produit lui-même ou seulement la scène ? Il suit strictement l'instruction d'édition. Si le prompt ne décrit que des changements d'arrière-plan, de lumière ou de contexte et demande explicitement de préserver le produit, alors la forme, la couleur et les détails imprimés du produit restent cohérents à travers plusieurs éditions — c'est précisément ce qui le rend utilisable pour un vrai catalogue produit plutôt que pour une image conceptuelle unique.

Combien d'images de référence puis-je envoyer par appel ? Jusqu'à 14 URL d'images publiques dans image_urls. La plupart des éditions mono-produit n'en nécessitent qu'une (la photo de base) ; plusieurs références aident lorsque vous voulez que le modèle harmonise les détails du même objet sous plusieurs angles.

Quelles résolutions sont prises en charge ? resolution accepte 2K ou 4K. Ce modèle n'a pas de palier 1K.

Combien coûte l'édition en masse de tout un catalogue ? 0,045 $ par image, quel que soit le palier de résolution. Un catalogue de 100 SKU pour une édition coûte environ 4,50 $.

Peut-on paralléliser les éditions pour accélérer les traitements par lots ? Oui — chaque tâche est indépendante, donc soumettre plusieurs appels /v1/tasks en concurrence (dans la limite du débit de votre compte) et les interroger en parallèle est la manière la plus rapide de traiter un grand catalogue.

Essayez par vous-même

Pour la référence complète des paramètres et les tarifs en temps réel, consultez la page du modèle et la page des tarifs. Pour le format exact de requête/réponse de l'endpoint de tâches mentionné ci-dessus, reportez-vous à la documentation de création de tâche. Si vous mettez en place un flux de travail similaire avec un autre palier de modèle, le guide e-commerce seedream-5.0-lite approfondit le schéma d'ancrage mono-SKU puis d'édition.

Obtenez une clé API et lancez votre première édition sur une vraie photo de produit — le code ci-dessus est prêt à être copié-collé et exécuté dès aujourd'hui sur l'API hiapi.

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