Build · Automazione Ghost Mannequin
Automatizza l'estrazione ghost mannequin per il tuo catalogo
In sintesi
Estrai il delta del catalogo rispetto all'ultima esecuzione, invia una richiesta POST con un array product_images (ogni elemento contiene l'URL dell'immagine più un'opzionale back_image) e uno stile a /api/v1/ghost-mannequin/batch, esegui il polling sul batch ID ogni 3 secondi finché ogni elemento non risulta completed o failed, quindi aggiorna la riga di ciascun prodotto con il relativo output_url. I batch simultanei sono limitati in base al piano.
- Credits: 4 credits a 2K · 5 credits a 4K
- Tempo tipico: 1.5–4 min
- Elaborazione: asincrono, polling
Ogni dato in questa pagina proviene da la documentazione dell'API di Photta · verificato
Rimuovi il manichino da ogni foto delle schede prodotto senza l'intervento di un designer. L'endpoint ghost-mannequin di Photta gestisce l'elaborazione in batch in modo nativo: un cron notturno trasforma un feed di 50K-SKU in un catalogo con manichino invisibile in poche ore, anziché in settimane.
RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/ghost-mannequin \
-H "Authorization: Bearer $PHOTTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front",
"angle": "side",
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, cream interior lining",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')const res = await fetch("https://api.photta.app/api/v1/ghost-mannequin", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"product_image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front",
"angle": "side",
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, cream interior lining",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
}),
});
const { data } = await res.json(); // data.id, data.statusimport os, requests
res = requests.post(
"https://api.photta.app/api/v1/ghost-mannequin",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"product_image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front",
"angle": "side",
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, cream interior lining",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
},
)
data = res.json()["data"] # data["id"], data["status"]Come funziona
Esecuzione notturna, sull'intero catalogo
Cinque elementi essenziali per un'automazione che funziona senza supervisione.
Passaggio 1
Mappa il tuo catalogo
Identifica quali righe di prodotto necessitano di un'immagine ghost mannequin, quali ne hanno già una e quali appartengono a categorie escluse. Salva un timestamp last_photographed_at così che il job notturno elabori esclusivamente il delta.
Passaggio 2
Scegli 3D o flat-lay per categoria
`3d` per i capi che richiedono volume: capispalla, denim, capi sartoriali. `flat_lay` per accessori e maglieria che risultano migliori fotografati in piano. Memorizza lo stile per ciascuna categoria di prodotto, così che il generatore di batch selezioni quello corretto senza regolazioni manuali.
Passaggio 3
Invia il delta in batch
Esegui una POST a /api/v1/ghost-mannequin/batch con un array product_images — ogni elemento include image, e opzionalmente back_image e image_side — oltre a un singolo style, background_color e resolution per l'intero batch. Mantieni una mappatura interna tra la posizione nell'array e l'ID del prodotto; la risposta restituisce un ID di generazione per elemento nello stesso ordine.
Passaggio 4
Esegui il polling del batch genitore
L'endpoint di batch restituisce contatori aggregati (total, processing, completed, failed). Esegui il polling ogni 3 secondi fino a quando la somma di completed + failed è uguale a total. Photta elabora gli elementi in parallelo all'interno del batch, quindi non è necessario eseguire il polling delle singole generazioni.
Passaggio 5
Salva i dati nel tuo database
Itera su status.data.items in ordine — il batch mantiene l'ordine del tuo array — e aggiorna ogni riga di prodotto con il rispettivo output_url. Registra i fallimenti: indicano quasi sempre una foto sorgente non valida nel tuo feed, che potrai correggere e reinviare nell'esecuzione successiva.
Tre passaggi in Python
Estrazione del delta, invio del batch, polling del genitore: l'automazione catalogo minima funzionante.
from datetime import datetime, timedelta
yesterday = datetime.utcnow() - timedelta(days=1)
rows = db.execute(
"SELECT id, source_image_url FROM products WHERE updated_at > %s",
(yesterday,),
).fetchall()import os, requests
res = requests.post(
"https://api.photta.app/api/v1/ghost-mannequin/batch",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"product_images": [
{
"image": "https://cdn.yourstore.com/products/jacket-front.jpg",
"back_image": "https://cdn.yourstore.com/products/jacket-back.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/shirt-front.jpg",
"image_side": "front"
},
{
"image": "https://cdn.yourstore.com/products/trousers-front.jpg",
"image_side": "front"
}
],
"style": "3d",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"user_instruction": "closed front, buttoned up",
"brand_label_id": "7cc9f988-068b-44cd-8004-22f486b10e67"
},
)
data = res.json()["data"] # data["id"], data["status"]import os, time, requests
BASE = "https://api.photta.app/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"}
# data["items"] comes back in the order of the product_images you submitted.
batch_id = data["batch_id"]
for _ in range(240): # 240 × 3s = 12 minutes
status = requests.get(f"{BASE}/ghost-mannequin/batch/{batch_id}", headers=HEADERS).json()["data"]
if status["completed"] + status["failed"] == status["total"]:
break
time.sleep(3)
for row, item in zip(rows, status["items"]):
if item["status"] == "completed":
db.execute(
"UPDATE products SET ghost_image_url = %s WHERE id = %s",
(item["output_url"], row.id),
)Domande frequenti degli sviluppatori
Esecuzione di ghost mannequin su scala di catalogo
Quanto può essere grande un singolo batch?
In base alla documentazione, l'endpoint di batch supporta fino ad alcune centinaia di elementi per chiamata. Per un'esecuzione notturna su 50K-SKU, dividi il delta in batch da 100–200 elementi e inviali in sequenza per rimanere ampiamente sotto il rate limit del piano.
Un batch può combinare 3D e flat-lay?
Sì: style è un campo per singolo elemento, quindi un unico batch può contenere entrambi. In pratica, la maggior parte dei team preferisce comunque suddividere per categoria, poiché la logica di persistenza a valle è più semplice quando ogni riga di un batch viene mappata sulla stessa colonna del database.
Cosa succede agli elementi non riusciti?
I crediti degli elementi non riusciti all'interno di un batch vengono rimborsati automaticamente e restituiscono error_code + error_message nel payload finale dell'elemento. Registra gli errori ed esegui un nuovo tentativo la notte seguente, dopo che il tuo team ha potuto correggere la foto sorgente o contrassegnare la riga come input non valido in modo permanente.
Come riconduco i risultati ai miei ID prodotto?
Mantieni una mappatura interna tra la posizione nell'array e l'ID del prodotto al momento dell'invio: la risposta del batch restituisce un ID di generazione per elemento nello stesso ordine di product_images, e anche lo status del batch elenca gli elementi in tale sequenza.
Posso programmarlo come cron giornaliero?
Sì — un semplice cron giornaliero che estrae il delta delle ultime 24 ore, lo suddivide in blocchi, invia i batch e scrive i risultati nel database è un pattern fondamentale per i team che gestiscono cataloghi su larga scala. Mantieni il runner idempotente, così una notte fallita può essere rieseguita in sicurezza.
Pagine correlate
Riferimento
Funzionalità
API Ghost mannequin per foto prodotto con manichino invisibile
Endpoint AI per ghost mannequin. Rimuovi il manichino dalla foto di un capo e preserva i dettagli interni. 3D o flat-lay, elaborazione in batch, 4 credits a 2K.
LeggiGuida rapida
La prima immagine con Photta in meno di cinque minuti.
Registrati, genera una chiave API, esegui la tua prima chiamata cURL, fai polling fino al completamento, salva il risultato. Cinque passaggi, interamente documentati.
LeggiLinguaggi
Python walkthrough
Leggi
Ogni dato in questa pagina proviene da la documentazione dell'API di Photta · verificato
Distribuisci il manichino invisibile su scala di catalogo stasera
Tre funzioni Python, un cron, 50K foto. Prendi una chiave API e puntala verso il tuo catalogo.