Rakenna · Ghost Mannequin -automaatio
Automatisoi ghost mannequin -irrotus katalogillesi
Yhdellä lauseella
Hae katalogin delta edellisestä ajostasi, tee POST taulukolla product_images (jokaisessa kohteessa kuvan URL sekä valinnainen back_image) yhdellä tyylillä endpointiin /api/v1/ghost-mannequin/batch, pollaa erän ID:tä 3 sekunnin välein, kunnes jokainen kohde on tilassa completed tai failed, ja päivitä sitten kukin tuoterivi sen arvolla output_url. Samanaikaisten erien määrä on rajoitettu tilaustason mukaan.
- Credits: 4 credits resoluutiolla 2K · 5 credits resoluutiolla 4K
- Tyypillinen kesto: 1.5–4 min
- Käsittely: asynkroninen, polling
Jokainen luku tällä sivulla on peräisin Photta-rajapinnan dokumentaatiosta · tarkistettu
Poista mallinukke jokaisesta tuotesivun kuvasta ilman graafikon työtä. Phottan ghost-mannequin-endpoint tukee luonnostaan eräajoa — öinen cron muuttaa 50K-SKU-syötteen näkymättömien mallinukkejen katalogiksi tunneissa, ei viikoissa.
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"]Miten se toimii
Öinen ajo, koko katalogi
Viisi osaa, jotka tarvitset itsenäisesti pyörivään automaatioon.
Vaihe 1
Kartoita katalogisi
Tiedä mitkä tuoterivit tarvitsevat ghost mannequin -kuvan, millä sellainen jo on ja millä on rajatut kategoriat. Tallenna last_photographed_at-aikaleima, jotta öinen työ käsittelee vain deltan.
Vaihe 2
Valitse 3D tai flat-lay per kategoria
`3d` vaatteille, jotka tarvitsevat tilavuutta — ulkovaatteet, farkut, räätälöidyt vaatteet. `flat_lay` asusteille ja neuleille, jotka näyttävät paremmilta laakeana kuvattuna. Tallenna tyyli tuotekategorioittain, jotta erän muodostaja valitsee oikean ilman manuaalista säätöä.
Vaihe 3
Lähetä delta eränä
POST /api/v1/ghost-mannequin/batch taulukolla product_images — jokainen kohde sisältää kentät image, valinnainen back_image ja image_side — sekä koko erälle määritetyt style, background_color ja resolution. Pidä oma kartoitus taulukon indeksistä tuotetunnisteeseen; vastaus palauttaa yhden luontitunnisteen (generation ID) per kohde samassa järjestyksessä.
Vaihe 4
Pollaa pääerää
Batch-endpoint palauttaa yhteenvedon laskureista (total, processing, completed, failed). Pollaa 3 sekunnin välein, kunnes completed + failed on yhtä suuri kuin total. Photta käsittelee kohteet rinnakkain erän sisällä, joten sinun ei tarvitse pollata yksittäisiä luonteja.
Vaihe 5
Tallenna tietokantaasi
Käy status.data.items läpi järjestyksessä — erä säilyttää taulukkosi järjestyksen — ja päivitä kukin tuoterivi sen arvolla output_url. Kirjaa epäonnistumiset lokiin — ne johtuvat lähes aina syötteen viallisesta lähdekuvasta, jonka voit korjata ja lähettää uudelleen seuraavassa ajossa.
Kolme vaihetta Pythonilla
Deltan haku, erän lähetys, pääerän pollaus — minimaalinen toimiva katalogiautomaatio.
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),
)Kehittäjien usein kysymää
Ghost mannequinin ajaminen katalogimittakaavassa
Kuinka suuri yksittäinen erä voi olla?
Batch-endpoint tukee dokumentaation mukaan jopa muutamaa sataa kohdetta per kutsu. Jaa 50K-SKU:n öisessä ajossa delta 100–200 kohteen eriin ja lähetä ne peräkkäin, jotta pysyt sujuvasti tilaustasosi rate limitin alapuolella.
Voiko erässä yhdistää 3D- ja flat-lay-tyylejä?
Kyllä — style on kohteen kenttä, joten yksittäinen erä voi sisältää molempia. Käytännössä useimmat tiimit jakavat erät kuitenkin kategorioittain, koska jatkokäsittelyn tallennuslogiikka on suoraviivaisempaa, kun erän jokainen rivi päätyy samaan tietokantasarakkeeseen.
Mitä epäonnistuneille kohteille tapahtuu?
Erän epäonnistuneet kohteet hyvittävät credits-yksikkönsä automaattisesti ja sisältävät kentät error_code ja error_message lopullisessa kohteen payloadissa. Kirjaa virheet lokiin ja yritä niitä uudelleen seuraavana yönä, kun tiimisi on ehtinyt korjata lähdekuvan tai merkitä rivin pysyvästi virheelliseksi syötteeksi.
Miten kohdistan tulokset takaisin tuotetunnisteisiini?
Ylläpidä lähetettäessä omaa kartoitusta taulukon sijainnista tuotetunnisteeseen: batch-vastaus palauttaa yhden luontitunnisteen per kohde samassa järjestyksessä kuin product_images, ja myös erän tila listaa kohteet tässä samassa järjestyksessä.
Voinko ajastaa tämän päivittäiseksi cron-työksi?
Kyllä — yksinkertainen päivittäinen cron, joka hakee viimeisen 24 tunnin deltan, pilkkoo sen osiin, lähettää erät ja kirjoittaa tulokset tietokantaasi, on vankka malli katalogikokoluokan tiimeille. Pidä suorittaja idempotenttina, jotta epäonnistunut yö voidaan ajaa turvallisesti uudelleen.
Liittyvät sivut
Referenssi
Ominaisuudet
Ghost mannequin API näkymättömän mallinuken tuotekuviin
Tekoälypohjainen ghost mannequin -endpoint. Poista nukke vaatekuvasta ja säilytä sisäpuolen yksityiskohdat. 3D tai flat-lay, eräajo, 4 credits resoluutiolla 2K.
LuePikaopas
Ensimmäinen Photta-kuva alle viidessä minuutissa.
Rekisteröidy, luo API-avain, suorita ensimmäinen cURL-kutsusi, tee pollingia valmistumiseen asti ja tallenna tulos. Viisi vaihetta, dokumentoitu alusta loppuun.
LueKielet
Python walkthrough
Lue
Jokainen luku tällä sivulla on peräisin Photta-rajapinnan dokumentaatiosta · tarkistettu
Julkaise katalogikokoluokan ghost mannequin tänä yönä
Kolme Python-funktiota, yksi cron, 50K kuvaa. Ota API-avain ja osoita se katalogiisi.