Bangun · Otomatisasi Ghost Mannequin
Otomatiskan ekstraksi ghost mannequin untuk katalog Anda
Ringkasan singkat
Tarik delta katalog sejak proses terakhir Anda, POST array product_images (setiap item berisi URL gambar plus back_image opsional) dengan satu style ke /api/v1/ghost-mannequin/batch, lakukan polling pada batch ID setiap 3 detik hingga setiap item berstatus completed atau failed, lalu perbarui setiap baris produk dengan output_url miliknya. Batch bersamaan dibatasi per paket.
- Credits: 4 credits pada 2K · 5 credits pada 4K
- Waktu umum: 1.5–4 min
- Pemrosesan: async, polling
Setiap angka di halaman ini bersumber dari dokumentasi API Photta · diperiksa
Hapus manekin dari setiap foto PDP tanpa melibatkan desainer. Endpoint ghost-mannequin Photta mendukung batching secara natural — cron harian dapat mengubah feed 50K-SKU menjadi katalog invisible-mannequin dalam hitungan jam, bukan minggu.
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"]Cara kerja
Proses harian, untuk seluruh katalog
Lima bagian yang Anda butuhkan untuk otomatisasi yang berjalan tanpa pengawasan.
Langkah 1
Petakan katalog Anda
Ketahui baris produk mana yang memerlukan gambar ghost mannequin, mana yang sudah memilikinya, dan mana yang memiliki kategori terbatas. Simpan timestamp last_photographed_at agar job harian hanya memproses deltanya saja.
Langkah 2
Pilih 3D atau flat-lay per kategori
`3d` untuk pakaian yang membutuhkan volume — pakaian luar, denim, pakaian tailored. `flat_lay` untuk aksesori dan rajutan yang lebih bagus difoto terbentang rata. Simpan style per kategori produk sehingga batch builder dapat memilih opsi yang tepat tanpa penyesuaian manual.
Langkah 3
Kirim delta secara batch
POST /api/v1/ghost-mannequin/batch dengan array product_images — setiap item memuat image, opsi back_image dan image_side — plus satu style, background_color, dan resolution untuk seluruh batch. Simpan pemetaan Anda sendiri dari posisi array ke ID produk; respons akan mengembalikan satu generation ID per item dalam urutan yang sama.
Langkah 4
Polling parent batch
Endpoint batch mengembalikan penghitung agregat (total, processing, completed, failed). Lakukan polling setiap 3 detik hingga completed + failed sama dengan total. Photta memproses item secara paralel di dalam batch, jadi Anda tidak perlu melakukan polling pada generasi individual.
Langkah 5
Simpan ke database Anda
Iterasi status.data.items secara berurutan — batch mempertahankan urutan array Anda — dan perbarui setiap baris produk dengan output_url miliknya. Catat kegagalan ke log — masalah ini hampir selalu disebabkan oleh foto sumber yang buruk di feed Anda, yang dapat Anda perbaiki dan kirim ulang pada proses berikutnya.
Tiga langkah dalam Python
Ekstraksi delta, kirim batch, polling parent — otomatisasi katalog minimum yang fungsional.
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),
)Pertanyaan umum developer
Menjalankan ghost mannequin pada skala katalog
Seberapa besar kapasitas satu batch?
Endpoint batch menerima hingga beberapa ratus item per panggilan menurut dokumentasi. Untuk proses harian 50K-SKU, bagi delta menjadi beberapa batch berisi 100–200 item dan jalankan secara berurutan agar Anda tetap berada di bawah rate limit paket dengan aman.
Bisakah satu batch mencampur 3D dan flat-lay?
Bisa — style adalah kolom per item, jadi satu batch dapat memuat keduanya. Dalam praktiknya, sebagian besar tim tetap memisahkannya berdasarkan kategori karena logika persistensi downstream menjadi lebih sederhana ketika setiap baris dalam batch masuk ke kolom database yang sama.
Apa yang terjadi pada item yang gagal?
Item yang gagal dalam batch akan mengembalikan credits secara otomatis dan menyertakan error_code + error_message pada payload item akhir. Catat kegagalan ke log dan coba lagi pada malam berikutnya setelah tim Anda sempat memperbaiki foto sumber atau menandai baris tersebut sebagai input yang rusak permanen.
Bagaimana cara memetakan kembali hasil ke ID produk saya?
Simpan pemetaan Anda sendiri dari posisi array ke ID produk saat Anda mengirim permintaan: respons batch mengembalikan satu generation ID per item dalam urutan yang sama persis seperti product_images, dan status batch juga mencantumkan item dalam urutan tersebut.
Bisakah saya menjadwalkannya sebagai cron harian?
Bisa — cron harian sederhana yang menarik delta 24 jam terakhir, membaginya menjadi beberapa bagian (chunking), mengirimkan batch, dan menuliskan hasilnya ke dalam database Anda adalah pola yang kokoh untuk tim berskala katalog. Pastikan runner tetap idempoten agar proses malam hari yang gagal dapat diulang dengan aman.
Halaman terkait
Referensi
Kapabilitas
Ghost mannequin API untuk foto produk hollow-man
Endpoint AI ghost mannequin. Hapus manekin dari foto pakaian dan pertahankan detail bagian dalam. 3D atau flat-lay, pemrosesan batch, 4 credits pada 2K.
BacaQuickstart
Gambar Photta pertama dalam waktu kurang dari lima menit.
Daftar, buat API key, jalankan pemanggilan cURL pertama Anda, lakukan polling hingga selesai, simpan hasilnya. Lima langkah, terdokumentasi end-to-end.
BacaBahasa
Python walkthrough
Baca
Setiap angka di halaman ini bersumber dari dokumentasi API Photta · diperiksa
Rilis ghost mannequin skala katalog malam ini
Tiga fungsi Python, satu cron, 50K foto. Ambil API key dan arahkan ke katalog Anda.