Byg · Automatisering af Ghost Mannequin
Automatiser udtræk af ghost mannequin til dit katalog
I én sætning
Hent katalogets delta siden din sidste kørsel, lav et POST-kald med et product_images-array (hvert element en billed-URL plus valgfrit back_image) med én style til /api/v1/ghost-mannequin/batch, lav polling på batch-ID'et hvert 3 sekund, indtil hvert element er completed eller failed, og opdater derefter hver produktrække med dens output_url. Antallet af samtidige batches er begrænset pr. abonnement.
- Credits: 4 credits ved 2K · 5 credits ved 4K
- Typisk tid: 1.5–4 min
- Behandling: async, polling
Hvert tal på denne side stammer fra Photta API-dokumentationen · tjekket
Fjern ginen fra hvert eneste PDP-foto uden at involvere en designer. Phottas ghost-mannequin-endpoint batcher helt naturligt — et natligt cron-job forvandler et feed på 50K-SKU'er til et usynlig gine-katalog på timer frem for uger.
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"]Sådan virker det
Natlig kørsel på tværs af hele kataloget
Fem dele, du skal bruge til en automatisering, der kører uden opsyn.
Trin 1
Kortlæg dit katalog
Få overblik over, hvilke produktrækker der kræver et ghost mannequin-billede, hvilke der allerede har et, og hvilke der har begrænsede kategorier. Gem et last_photographed_at-tidsstempel, så det natlige job kun behandler deltaet.
Trin 2
Vælg 3D eller flat-lay pr. kategori
`3d` til tøj, der kræver volumen — overtøj, denim, skræddersyet tøj. `flat_lay` til accessories og strikvarer, der tager sig bedre ud fotograferet fladt. Gem stilen pr. produktkategori, så batch-builderen vælger den rigtige uden manuel tilpasning.
Trin 3
Send deltaet som batch
Kald POST /api/v1/ghost-mannequin/batch med et product_images-array — hvert element indeholder image, valgfrit back_image og image_side — plus én style, background_color og resolution for hele batchen. Bevar dit eget map fra array-position til produkt-ID; svaret returnerer ét generations-ID pr. element i samme rækkefølge.
Trin 4
Lav polling på overordnet batch
Batch-endpointet returnerer aggregerede tællere (total, processing, completed, failed). Lav polling hvert 3 sekund, indtil completed + failed er lig med total. Photta behandler elementer parallelt inde i batchen, så du behøver ikke lave polling på individuelle generationer.
Trin 5
Gem i din database
Iterer gennem status.data.items i rækkefølge — batchen bevarer din array-rækkefølge — og opdater hver produktrække med dens output_url. Log fejl — de skyldes næsten altid et dårligt kildebillede i dit feed, som du kan rette og gensende ved næste kørsel.
Tre trin i Python
Delta-udtræk, batch-afsendelse, overordnet polling — den minimale levedygtige katalogautomatisering.
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),
)Spørgsmål udviklere stiller
Kørsel af ghost mannequin i katalogskala
Hvor stor må en enkelt batch være?
Batch-endpointet accepterer op til et par hundrede elementer pr. kald ifølge dokumentationen. Ved en natlig kørsel på 50K-SKU'er bør du opdele deltaet i batches på 100–200 og afvikle dem sekventielt, så du holder dig behageligt under abonnementets rate limit.
Kan en batch blande 3D og flat-lay?
Ja — style er et felt pr. element, så en enkelt batch kan indeholde begge dele. I praksis opdeler de fleste teams alligevel efter kategori, fordi den efterfølgende persistenslogik er enklere, når hver række i en batch lander i den samme databasekolonne.
Hvad sker der med fejlede elementer?
Fejlede elementer i en batch refunderer automatisk deres credits og indeholder en error_code + error_message i det endelige element-payload. Log fejlene, og prøv igen den følgende nat, efter dit team har haft mulighed for at rette kildebilledet eller markere rækken som permanent ugyldigt input.
Hvordan mapper jeg resultaterne tilbage til mine produkt-ID'er?
Bevar dit eget map fra array-position til produkt-ID ved afsendelse: batch-svaret returnerer ét generations-ID pr. element i samme rækkefølge som product_images, og batch-statussen lister også elementerne i denne rækkefølge.
Kan jeg planlægge dette som et dagligt cron-job?
Ja — et simpelt dagligt cron-job, der henter deltaet for de seneste 24 timer, opdeler det i bidder, indsender batches og skriver resultaterne til din database, er et bærende mønster for teams med store produktkataloger. Sørg for, at kørslen er idempotent, så en mislykket natkørsel kan genafspilles sikkert.
Relaterede sider
Reference
Funktioner
Ghost mannequin API til hollow-man-produktfotos
AI ghost mannequin-endpoint. Fjern mannequinen fra et tøjbillede og bevar indvendige detaljer. 3D eller flat-lay, batchbehandling, 4 credits ved 2K.
LæsHurtig start
Første Photta-billede på under fem minutter.
Opret en konto, generer en API-nøgle, kør dit første cURL-kald, foretag polling indtil det er fuldført, gem resultatet. Fem trin, dokumenteret fra start til slut.
LæsSprog
Python walkthrough
Læs
Hvert tal på denne side stammer fra Photta API-dokumentationen · tjekket
Udrul ghost mannequin i katalogstørrelse i aften
Tre Python-funktioner, ét cron-job, 50K fotos. Hent en API-nøgle og ret den mod dit katalog.