Bygg · Automatisering av ghost mannequin
Automatisera ghost mannequin-extrahering för din katalog
I en mening
Hämta katalogens delta sedan din senaste körning, gör en POST med en product_images-array (varje objekt med en bild-URL plus valfri back_image) med en style till /api/v1/ghost-mannequin/batch, polla batch-ID var 3:e sekund tills varje objekt är completed eller failed, och uppdatera sedan varje produktrad med dess output_url. Samtidiga batchar är begränsade per abonnemang.
- Credits: 4 credits vid 2K · 5 credits vid 4K
- Typisk tid: 1.5–4 min
- Bearbetning: asynkron, polling
Varje siffra på den här sidan kommer från Photter API-dokumentationen · kontrollerad
Ta bort dockan från varje produktbild utan att blanda in en formgivare. Phottas ghost mannequin-endpoint batchas naturligt — ett nattligt cron-jobb omvandlar ett flöde på 50K artiklar till en katalog med osynliga dockor på några timmar, inte veckor.
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"]Hur det fungerar
Nattlig körning, hela katalogen
Fem delar du behöver för en automatisering som körs helt utan tillsyn.
Steg 1
Mappa din katalog
Håll koll på vilka produktrader som behöver en ghost mannequin-bild, vilka som redan har en och vilka som har begränsade kategorier. Spara en last_photographed_at-tidsstämpel så att det nattliga jobbet bara bearbetar deltat.
Steg 2
Välj 3D eller flat-lay per kategori
`3d` för plagg som behöver volym — ytterkläder, denim, skräddarsydda plagg. `flat_lay` för accessoarer och stickat som gör sig bättre fotograferade liggande. Spara formatet per produktkategori så att batch-byggaren väljer rätt utan manuell justering.
Steg 3
Skicka deltat i batch
Gör en POST till /api/v1/ghost-mannequin/batch med en product_images-array — varje objekt innehåller image, valfri back_image och image_side — plus en style, background_color och resolution för hela batchen. Håll reda på din egen mappning från array-position till produkt-ID; svaret returnerar ett genererings-ID per objekt i samma ordning.
Steg 4
Polla överordnad batch
Batch-endpointen returnerar aggregerade räknare (total, processing, completed, failed). Polla var 3:e sekund tills completed + failed är lika med total. Photta bearbetar objekten parallellt inom batchen, så du behöver inte polla enskilda genereringar.
Steg 5
Spara i din databas
Iterera genom status.data.items i ordning — batchen behåller din array-ordning — och uppdatera varje produktrad med dess output_url. Logga misslyckanden — de beror nästan alltid på en felaktig källbild i ditt flöde, som du kan åtgärda och skicka in igen vid nästa körning.
Tre steg i Python
Delta-extrahering, batch-inskickning, polling av överordnad batch — den minsta fungerande katalogautomatiseringen.
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),
)Vanliga utvecklarfrågor
Kör ghost mannequin i katalogskala
Hur stor kan en enskild batch vara?
Batch-endpointen tar emot upp till några hundra objekt per anrop enligt dokumentationen. För en nattlig körning med 50K artiklar delar du upp deltat i batchar om 100–200 och kör dem sekventiellt så att du håller dig med god marginal under abonnemangets rate limit.
Kan en batch blanda 3D och flat-lay?
Ja — style är ett fält på objektnivå, så en enskild batch kan innehålla båda. I praktiken delar de flesta team ändå upp efter kategori eftersom den efterföljande lagringslogiken blir enklare när varje rad i en batch hamnar i samma databaskolumn.
Vad händer med objekt som misslyckas?
Objekt som misslyckas i en batch återbetalar automatiskt sina credits och returnerar en error_code + error_message i objektets slutliga payload. Logga misslyckandena och försök igen nästa natt efter att ditt team har haft möjlighet att åtgärda källbilden eller markera raden som permanent ogiltig indata.
Hur mappar jag tillbaka resultaten till mina produkt-ID:n?
Behåll din egen mappning från array-position till produkt-ID när du skickar in: batch-svaret returnerar ett genererings-ID per objekt i samma ordning som product_images, och batch-statusen listar även objekten i den ordningen.
Kan jag schemalägga detta som ett dagligt cron-jobb?
Ja — ett enkelt dagligt cron-jobb som hämtar förändringen för de senaste 24 timmarna, delar upp den, skickar batcher och skriver resultaten till din databas är ett beprövat mönster för team med stora produktkataloger. Gör körningen idempotent så att en misslyckad natt kan köras om säkert.
Relaterade sidor
Referens
Funktioner
Ghost mannequin-API för hollow-man-produktfoton
AI ghost mannequin-endpoint. Ta bort dockan från ett plaggfoto och bevara detaljerna på insidan. 3D eller flat-lay, batchbearbetning, 4 credits i 2K.
LäsSnabbstart
Första Photta-bilden på under fem minuter.
Skapa konto, generera en API-nyckel, kör ditt första cURL-anrop, polla tills det är klart, spara resultatet. Fem steg, dokumenterade från början till slut.
LäsSpråk
Python walkthrough
Läs
Varje siffra på den här sidan kommer från Photter API-dokumentationen · kontrollerad
Driftsätt ghost mannequin i katalogskala i kväll
Tre Python-funktioner, ett cron-jobb, 50K foton. Hämta en API-nyckel och rikta den mot din katalog.