HiAPI
Blog

Guida all'uso

gpt-image-2 immagini prodotto e-commerce: flusso di lavoro batch su hiapi

Usa l'API di task gpt-image-2/text-to-image di hiapi per generare, per l'intero catalogo prodotti, immagini listing pulite su sfondo bianco, varianti di angolazione/dettaglio e scene lifestyle: immagini riprodotte realmente, prezzo verificato di $0,03 per immagine e script batch pronti da copiare e incollare.

Jul 1, 2026
gpt-image-2 immagini prodotto e-commerce: flusso di lavoro batch su hiapi

TL;DR

  • Di cosa si tratta: un flusso di lavoro eseguibile e riproducibile che usa gpt-image-2/text-to-image su hiapi per generare immagini prodotto e-commerce. Ogni immagine di questa pagina è stata renderizzata con il prompt originale stampato accanto: nessuna foto stock, nessuna demo presa in prestito.
  • Un modello, tre usi: immagini catalogo pulite su sfondo bianco, varianti di angolazione/dettaglio dello stesso prodotto e scene lifestyle, tutte dallo stesso endpoint di task text-to-image.
  • Fatti sull'API (verificati sulla piattaforma): gpt-image-2/text-to-image gira su un'interfaccia a task asincrona (/v1/tasks). L'oggetto input richiede prompt, aspect_ratio (1:1 per il listing, 4:5 per i social, 16:9 per i banner) e resolution (1K / 2K / 4K). L'immagine risultante si trova in output[0].url.
  • Prezzo: gpt-image-2/text-to-image costa uniformemente $0,03 per immagine. Un catalogo di 20 SKU con 3 immagini ciascuno fa 60 immagini, per un costo di $1,80. I prezzi aggiornati sono nella pagina dei prezzi.
  • Come si esegue: invia una POST all'API di task, esegui il polling finché lo stato non è success, poi scarica l'immagine da output[0].url: l'URL scade, quindi salva subito i byte. In fondo alla pagina trovi gli script completi di invio/polling/download e il ciclo batch, pronti da copiare e incollare.

Perché usare gpt-image-2 per le immagini prodotto

Una pipeline di immagini prodotto ha una specifica noiosa ma rigorosa: stesso prodotto, presentazione pulita, sfondo coerente, proporzioni adatte al listing. gpt-image-2/text-to-image è adatto a questo per tre motivi.

Primo, riesce a mantenere stabile la descrizione del prodotto in un lotto di task: descrivi una volta l'articolo, riusi quella descrizione e cambi solo l'angolazione della fotocamera. È proprio questo il punto chiave per trasformare «un'immagine principale» in un set completo di immagini listing.

Secondo, è un task asincrono per ogni immagine. Invii il task, fai polling sull'id del task, recuperi il file completato: si usa lo stesso protocollo a task di tutti gli altri modelli generativi di hiapi, quindi se già chiami altri modelli, qui il flusso di controllo è identico.

Terzo, è abbastanza economico da permettere iterazioni ripetute. A $0,03 per immagine puoi renderizzare tre angolazioni per ogni SKU e scartare quelle non soddisfacenti.

L'unica regola: scrivi una volta le specifiche del prodotto e riusale

Il trucco per un set di immagini listing coerente è questo: tieni fissa la metà prodotto del prompt e cambia solo la metà inquadratura. Ecco le specifiche fisse del prodotto usate per ogni immagine qui sotto:

a matte ceramic pour-over coffee dripper in sage green with a short conical body and a small pouring spout

Tutto il resto — angolazione, sfondo, illuminazione, composizione — viene aggiunto per inquadratura. Mettilo in una variabile e concatenalo.

Inquadratura 1 — immagine listing su sfondo bianco

Questa è l'inquadratura che i marketplace vogliono: bianco puro, luce morbida e uniforme, un'ombra leggera e nient'altro nell'immagine.

Prompt: Studio e-commerce product photo of a matte ceramic pour-over coffee dripper in sage green with a short conical body and a small pouring spout, front three-quarter angle, centered on a pure white seamless background (#ffffff), soft even box lighting, subtle soft shadow directly beneath, sharp focus, true-to-life color, catalog listing style, no props, no text.

Impostazioni: aspect_ratio: 1:1, resolution: 1K

Inquadrature 2 e 3 — varianti dello stesso prodotto

Ora riusa esattamente le stesse specifiche del prodotto e cambia solo le istruzioni sulla fotocamera. Poiché la metà prodotto del prompt è identica, il filtro resta lo stesso articolo riconoscibile in tutto il set di immagini.

Prompt (angolazione): …high side angle looking down into the cone, pure white seamless background (#ffffff), soft even box lighting, subtle soft shadow, sharp focus, true-to-life color, catalog listing style, no props, no text.

Prompt (dettaglio): Close-up… focus on the spout and rim texture, pure white seamless background (#ffffff), soft even box lighting, subtle soft shadow, sharp focus, macro detail, catalog listing style, no props, no text.

Inquadratura 4 — variante lifestyle / social

Il listing richiede un ritaglio pulito; la pubblicità e i social richiedono una scena. Stesse specifiche del prodotto, nuova scena e formato verticale 4:5 adatto ai feed.

Prompt: Lifestyle e-commerce scene of a matte ceramic pour-over coffee dripper in sage green with a short conical body and a small pouring spout sitting on a light oak kitchen counter beside a glass carafe and a small pile of coffee beans, warm morning window light, shallow depth of field, cozy Scandinavian interior blurred in the background, natural color, premium social-media product shot, no text.

Impostazioni: aspect_ratio: 4:5, resolution: 1K

L'API dall'inizio alla fine

Tre chiamate: invio del task, polling, download del file.

1. Invio — POST del modello e dell'oggetto input:

curl -s -X POST https://api.hiapi.ai/v1/tasks \
  -H "Authorization: Bearer $HIAPI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2/text-to-image",
    "input": {
      "prompt": "Studio e-commerce product photo ... no text.",
      "aspect_ratio": "1:1",
      "resolution": "1K"
    }
  }'
# -> {"data": {"taskId": "task_abc123"}}

2. Polling — GET del task finché status non è success:

curl -s https://api.hiapi.ai/v1/tasks/task_abc123 \
  -H "Authorization: Bearer $HIAPI_TOKEN"
# -> {"data": {"status": "success", "output": [{"url": "https://.../image.png"}]}}

3. Download — output[0].url è temporaneo, quindi salvalo subito:

curl -s -o dripper-front.jpg "<output[0].url>"

Script batch: un prodotto, più immagini

Ecco un ciclo Python pronto da copiare e incollare che renderizza l'intero set di immagini listing da una singola specifica di prodotto. Mantiene fissa la descrizione del prodotto e itera sulle istruzioni di inquadratura.

import os, time, requests

BASE = "https://api.hiapi.ai/v1/tasks"
TOKEN = os.environ["HIAPI_TOKEN"]
HEAD = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}

# Fixed product spec — write it once.
PRODUCT = ("a matte ceramic pour-over coffee dripper in sage green with a short "
           "conical body and a small pouring spout")

# Vary only the shot half.
SHOTS = {
    "front":     ("1:1", "front three-quarter angle, pure white seamless background (#ffffff), "
                         "soft even box lighting, subtle soft shadow, catalog listing style, no text"),
    "angle":     ("1:1", "high side angle looking into the cone, pure white background, "
                         "soft even lighting, catalog listing style, no text"),
    "detail":    ("1:1", "close-up macro on the spout and rim, pure white background, "
                         "soft even lighting, catalog listing style, no text"),
    "lifestyle": ("4:5", "on a light oak kitchen counter with a glass carafe and coffee beans, "
                         "warm morning window light, shallow depth of field, no text"),
}

def submit(prompt, ratio):
    body = {"model": "gpt-image-2/text-to-image",
            "input": {"prompt": prompt, "aspect_ratio": ratio, "resolution": "1K"}}
    r = requests.post(BASE, headers=HEAD, json=body, timeout=60)
    return r.json()["data"]["taskId"]

def wait(task_id, timeout=600):
    deadline = time.time() + timeout
    while time.time() < deadline:
        d = requests.get(f"{BASE}/{task_id}", headers=HEAD, timeout=30).json()["data"]
        if d["status"] == "success":
            return d["output"][0]["url"]
        if d["status"] == "fail":
            raise RuntimeError(d.get("error"))
        time.sleep(5)
    raise TimeoutError(task_id)

for name, (ratio, shot) in SHOTS.items():
    prompt = f"Studio e-commerce product photo of {PRODUCT}, {shot}."
    url = wait(submit(prompt, ratio))
    img = requests.get(url, timeout=120).content   # URL expires — save now
    open(f"dripper-{name}.jpg", "wb").write(img)
    print(f"saved dripper-{name}.jpg  (cost $0.03)")

Sostituisci PRODUCT con il tuo SKU, mantieni la mappa SHOTS e avvolgi tutto in un ciclo esterno che scorre il catalogo: ogni prodotto verrà renderizzato allo stesso modo.

Calcolo dei costi su un catalogo reale

gpt-image-2/text-to-image viene fatturato uniformemente a $0,03 per immagine (verificato sulla piattaforma; per i numeri attuali consulta la pagina dei prezzi). Quindi:

Dimensione catalogo Inquadrature per SKU Numero di immagini Costo
20 SKU 3 60 $1,80
100 SKU 3 300 $9,00
100 SKU 4 (incluso lifestyle) 400 $12,00

È abbastanza economico da permetterti, quando cambi gli standard di sfondo, di renderizzare di nuovo l'intero catalogo invece di rifare il servizio fotografico.

Conclusione

Il flusso di lavoro è volutamente essenziale: specifiche di prodotto fisse, inquadratura variabile, invio → polling → download e salvataggio dei byte di output prima che l'URL scada. Un task gpt-image-2/text-to-image per immagine, $0,03 per immagine, con lo stesso protocollo a task che già usi sugli altri modelli hiapi. Punta il ciclo batch sul tuo catalogo e scala in modo lineare.

Inizia a creare con artefatti IA persistenti

Ottieni la tua chiave API e chiama modelli di immagini, video e audio tramite un'unica API basata sui task.

Leggi la documentazione API