Geliştirin · Hayalet Manken Otomasyonu
Kataloğunuz için hayalet manken çıkarma işlemini otomatikleştirin
Tek cümlede
Son çalıştırmanızdan bu yana olan katalog farkını (delta) çekin, tek bir stille /api/v1/ghost-mannequin/batch adresine bir product_images dizisi (her öge bir görsel URL'i ve isteğe bağlı back_image içerir) POST edin, her öge completed veya failed olana kadar toplu iş kimliğini her 3 saniyede bir poll edin, ardından her ürün satırını kendi output_url değeriyle güncelleyin. Eşzamanlı toplu işler plan başına sınırlandırılmıştır.
- Credits: 2K'da 4 credits · 4K'da 5 credits
- Tipik süre: 1.5–4 min
- İşleme: asenkron, polling
Bu sayfadaki her veri şuradan alınmıştır: Photta API dokümantasyonu · kontrol edildi
Bir tasarımcıya dokunmadan her PDP fotoğrafından mankeni çıkarın. Photta'nın ghost-mannequin endpoint'i doğal olarak toplu çalışır; gecelik bir cron, 50K-SKU içeren bir akışı haftalar değil, saatler içinde görünmez mankenli bir kataloğa dönüştürür.
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"]Nasıl çalışır
Gecelik çalıştırma, katalog genelinde
Gözetimsiz çalışan bir otomasyon için ihtiyacınız olan beş parça.
Adım 1
Kataloğunuzu haritalandırın
Hangi ürün satırlarının hayalet manken görseline ihtiyacı olduğunu, hangilerinde zaten bulunduğunu ve hangilerinin kısıtlanmış kategorilerde olduğunu bilin. Gecelik işin yalnızca farkı (delta) işlemesi için bir last_photographed_at zaman damgası saklayın.
Adım 2
Kategori başına 3D veya flat-lay seçin
Hacim gerektiren giysiler için `3d` — dış giyim, denim, dikim parçalar. Düz serildiğinde daha iyi fotoğraflanan aksesuarlar ve trikolar için `flat_lay`. Toplu iş oluşturucunun manuel ayar yapmadan doğru olanı seçmesi için stili ürün kategorisi başına saklayın.
Adım 3
Farkı toplu olarak gönderin
Bir product_images dizisi — her öge image, isteğe bağlı back_image ve image_side taşır — artı tüm toplu iş için tek bir style, background_color ve resolution ile POST /api/v1/ghost-mannequin/batch çağrısı yapın. Dizi konumundan ürün kimliğine kendi haritalamanızı saklayın; yanıt, aynı sırada öge başına bir üretim kimliği döndürür.
Adım 4
Ana toplu işlemi poll edin
Toplu iş endpoint'i toplu sayaçları (total, processing, completed, failed) döndürür. completed + failed toplamı total değerine eşit olana kadar her 3 saniyede bir poll edin. Photta, toplu iş içindeki ögeleri paralel olarak işler; bu nedenle bireysel üretimleri poll etmeniz gerekmez.
Adım 5
Veritabanınıza kaydedin
status.data.items üzerinde sırayla yineleme yapın — toplu iş, dizi sıranızı korur — ve her ürün satırını kendi output_url değeriyle güncelleyin. Başarısızlıkları günlüğe kaydedin; bunlar neredeyse her zaman akışınızdaki bozuk bir kaynak fotoğrafa işaret eder, bunu düzeltebilir ve bir sonraki çalıştırmada yeniden gönderebilirsiniz.
Python'da üç adım
Farkı çıkarın, toplu gönderin, ana işlemi poll edin — minimum uygulanabilir katalog otomasyonu.
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),
)Geliştiricilerin sıkça sorduğu sorular
Katalog ölçeğinde hayalet manken çalıştırma
Tek bir toplu iş ne kadar büyük olabilir?
Belgelere göre toplu iş endpoint'i çağrı başına birkaç yüz ögeye kadar kabul eder. 50K-SKU gecelik bir çalıştırma için farkı 100–200'lük gruplara bölün ve planınızın rate limit sınırının rahatça altında kalmak için bunları sırayla tetikleyin.
Bir toplu iş 3D ve flat-lay karışımı içerebilir mi?
Evet — style öge bazında bir alandır, dolayısıyla tek bir toplu iş her ikisini de içerebilir. Uygulamada çoğu ekip zaten kategoriye göre ayırır; çünkü toplu işteki her satır aynı veritabanı sütununa gittiğinde akış yönündeki kalıcılık mantığı daha basittir.
Başarısız olan ögelere ne olur?
Bir toplu işlemdeki başarısız ögeler, credits tutarlarını otomatik olarak iade eder ve son öge payload'unda bir error_code + error_message taşır. Başarısızlıkları günlüğe kaydedin ve ekibiniz kaynak fotoğrafı düzeltme veya satırı kalıcı olarak geçersiz girdi olarak işaretleme fırsatı bulduktan sonraki gece bunları yeniden deneyin.
Sonuçları ürün kimliklerime nasıl geri eşlerim?
Gönderim yaparken dizi konumundan ürün kimliğine kendi haritalamanızı saklayın: toplu iş yanıtı product_images ile aynı sırada öge başına bir üretim kimliği döndürür ve toplu iş durumu da ögeleri bu sırada listeler.
Bunu günlük bir cron olarak zamanlayabilir miyim?
Evet — son 24 saatin farkını çeken, parçalara bölen, toplu işler gönderen ve sonuçları veritabanınıza yazan basit bir günlük cron, katalog ölçeğindeki ekipler için temel bir desendir. Başarısız bir gecenin güvenle tekrar çalıştırılabilmesi için çalıştırıcıyı idempotent tutun.
İlgili sayfalar
Referans
Yetenekler
Hayalet manken API'si içi boş manken ürün fotoğrafları için
Yapay zeka hayalet manken endpoint'i. Giysi fotoğrafından mankeni kaldırın ve iç detayları koruyun. 3D veya flat-lay, toplu işleme, 2K'da 4 kredi.
OkuHızlı başlangıç
Beş dakikadan kısa sürede ilk Photta görseli.
Kayıt olun, bir API anahtarı oluşturun, ilk cURL çağrınızı çalıştırın, tamamlanana kadar yoklayın, sonucu kalıcı hale getirin. Beş adım, uçtan uca belgelenmiş.
OkuDiller
Python walkthrough
Oku
Bu sayfadaki her veri şuradan alınmıştır: Photta API dokümantasyonu · kontrol edildi
Katalog ölçeğinde hayalet mankeni bu gece yayına alın
Üç Python fonksiyonu, bir cron, 50K fotoğraf. Bir API anahtarı alın ve kataloğunuza yönlendirin.