Capability · Ghost mannequin
Ghost mannequin API untuk foto produk hollow-man
Ringkasan singkat
API ghost mannequin Photta memproses foto pakaian pada manekin dan mengembalikan gambar invisible-mannequin dengan bagian dalam pakaian yang direkonstruksi. Pilih gaya 3d atau flat_lay, POST, lakukan polling setiap 3 detik, unduh setelah completed.
- Waktu umum: 1.5–4 min
- Credits: 4 credits pada 2K · 5 credits pada 4K
- Pemrosesan: async, polling
- Batasan: 600 requests/min
- Autentikasi: Bearer key
Setiap angka di halaman ini bersumber dari dokumentasi API Photta · diperiksa
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"]
Sekilas
Sekilas
- Endpoint
- POST /api/v1/ghost-mannequin
- Autentikasi
- API key Bearer
- Pemrosesan
- Asinkron — lakukan polling ke endpoint status
- Waktu umum
- 1.5–4 min
- Credits
- 4 credits pada 2K · 5 credits pada 4K
- Rasio aspek
- 3:4 · 1:1 · 4:3 · 9:16 · 16:9
- Batas input
- Hingga 10 MB per gambar; JPEG, PNG, WebP
- Idempoten
- Tidak
Request dan response
Request
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"]202 Accepted / Completed
{
"data": {
"id": "gm_d4e5f6",
"status": "processing",
"style": "3d",
"angle": "side",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"credits_used": 4,
"created_at": "2026-04-10T16:00:00Z"
},
"request_id": "req_gm001"
}{
"data": {
"id": "gm_d4e5f6",
"status": "completed",
"style": "3d",
"angle": "side",
"background_color": "white",
"resolution": "2K",
"aspect_ratio": "3:4",
"output_url": "https://cdn.photta.app/generated/gm_d4e5f6.jpg",
"thumbnail_url": "https://cdn.photta.app/generated/gm_d4e5f6-thumb.jpg",
"credits_used": 4,
"created_at": "2026-04-10T16:00:00Z",
"completed_at": "2026-04-10T16:00:48Z",
"duration_ms": 48000
},
"request_id": "req_gm002"
}Parameter request
product_imageTipe: stringWajib
URL or base64 data URI of the garment photo (front or back, on a mannequin or flat).
back_imageTipe: string
URL or base64 data URI of the opposite side — helps the AI reconstruct the interior of the garment for a more realistic 3D effect.
image_sideTipe: string
Which side product_image represents.
= front
Nilai:frontbackangleTipe: string
Camera angle for the output. "side" is worth calling out: the side view is reconstructed from the front photo (plus the back photo when provided), giving you a third catalog view without a third photoshoot — and it works well even on textured garments (crochet, lace, embroidery).
= straight
Nilai:straightbacksidestyleTipe: string
Output style: "3d" (ghost mannequin with 3D body shape) or "flat_lay" (garment laid flat, mannequin removed).
= 3d
Nilai:3dflat_laybackground_colorTipe: string
Background color.
= white
Nilai:whitegraybeigeblackresolutionTipe: string
Output resolution. "2K" costs 4 credits per image; "4K" costs 5 credits per image. 4K is produced natively in a single generation — pick it upfront; the resolution cannot be changed after creation. Note: 4K cannot be combined with aspect_ratio 1:1 — that combination returns 400.
= 2K
Nilai:2K4Kaspect_ratioTipe: string
Output aspect ratio. Note: 1:1 is not available at 4K resolution — 1:1 combined with 4K returns 400.
= 3:4
Nilai:3:41:14:39:1616:9user_instructionTipe: string
Optional free-form note, max 400 characters (anything longer is silently truncated). A guarded steer for ambiguous rendering choices — e.g. "closed front", "cream interior lining", "buttoned up" — it never overrides the source garment, brand label, or structural reconstruction, and it is explicitly NOT a determinism/seed control.
brand_label_idTipe: string
Brand label UUID returned by the Brand Labels API. Applied to the generated garment when present. API v1 request fields use snake_case; use brand_label_id.
Error
- 400
invalid_request_error - The request is malformed or contains invalid parameters.
- 401
authentication_error - The API key is missing, invalid, or expired.
- 402
insufficient_credits_error - Your account does not have enough credits.
- 404
not_found_error - The requested resource does not exist.
- 409
conflict_error - The request conflicts with current state — e.g. your concurrent-batch cap is reached.
- 429
rate_limit_error - Too many requests. Slow down and retry.Retry-After: 30
- 500
api_error - An internal server error occurred. Retry later.
Batasan
- 600 request per menit per API key (Fixed window; batasannya sama di setiap paket)
- Respons 429 menyertakan Retry-After: 30 detik
- Hingga 10 MB per gambar
- Format: JPEG, PNG, WebP
- Batch konkuren per paket: Free 1 · Hobby 2 · Seller 3 · Brand 4 · Studio 6
- Hanya polling — API tidak mengirim webhook.
Satu foto masuk, satu foto invisible-mannequin keluar
Unggah sumber, pilih gaya, kirim, lakukan polling, unduh.
Langkah 1
Buat API key
Ghost mannequin menggunakan kredensial yang sama dengan setiap kapabilitas Photta lainnya — satu kunci, satu saldo credits.
Langkah 2
Unggah foto sumber
Kirim URL publik atau base64 data URI di `product_image`; tambahkan `back_image` jika Anda memiliki tampilan belakang. JPEG, PNG, dan WebP hingga 10 MB per gambar.
Langkah 3
POST job ghost mannequin
POST ke `/api/v1/ghost-mannequin` dengan `product_image`, `style` (`3d` atau `flat_lay`), serta `angle`, `background_color`, `resolution` opsional. Polling adalah satu-satunya sinyal penyelesaian — API tidak mengirim webhook.
Langkah 4
Lakukan polling hingga job selesai
GET `/api/v1/ghost-mannequin/:id` setiap 3 detik hingga `data.status` bernilai `completed` atau `failed`; penyelesaian tipikal adalah 1.5 hingga 4 menit.
Langkah 5
Unduh dan simpan secara persisten
Output berupa PNG dengan manekin yang dihapus dan bagian dalam pakaian direkonstruksi. Ideal untuk foto ghost PDP, galeri produk bernuansa 3D, dan sisipan flat-lay.
Endpoint yang sama di Node.js, Python, dan cURL
Node.js
Ghost mannequin API di Node.js
Panggil ghost mannequin API Photta dari backend Node.js dengan fetch native. Tidak memerlukan SDK: simpan kunci Anda, kirim job, lakukan polling untuk hasilnya.
BacaPython
Ghost mannequin API di Python
Panggil ghost mannequin API Photta di Python dengan library requests. Wrapper tiga puluh baris, ramah asinkron via httpx, bekerja di Django, FastAPI, dan Celery.
BacacURL
Ghost mannequin API dengan cURL
Panggil ghost mannequin API Photta langsung dari shell menggunakan cURL. Kirim, lakukan polling, unduh — setiap cuplikan kode dapat dipadukan dengan jq untuk pipeline berbasis skrip.
Baca
Pertanyaan yang diajukan developer sebelum merilis ghost mannequin
Apa itu fotografi ghost mannequin?
Perlakuan PDP di mana pakaian tampak melayang pada tubuh tak terlihat, menampilkan bentuk dan konstruksi interior secara bersamaan. Secara historis ini digabungkan dari beberapa jepretan studio; API Photta menghasilkannya dalam satu panggilan dari satu foto pada manekin.
Berapa biaya ghost mannequin?
4 credits pada 2K, 5 credits pada 4K — satu credit lebih murah di setiap tier dibandingkan try-on. Job yang gagal otomatis di-refund.
Apa perbedaan antara gaya 3D dan flat-lay?
Gaya `3d` mempertahankan bentuk tubuh tiga dimensi dari manekin — pakaian mempertahankan volume, bahu dan lengan terlihat alami, dan bagian dalam direkonstruksi. `flat_lay` meratakan pakaian menjadi tata letak 2D yang rapi, ideal untuk koleksi kapsul atau listing marketplace yang membutuhkan bentuk tampak depan yang konsisten.
Bisakah saya memproses banyak foto secara batch?
Ya. POST ke `/api/v1/ghost-mannequin/batch` dengan array gambar sumber. Respons memberi Anda batch ID ditambah generation ID per item. Lakukan polling ke `/api/v1/ghost-mannequin/batch/:id` untuk status agregat atau setiap item secara individual.
Apakah ini mempertahankan jahitan dan label interior?
Ya — model merekonstruksi bagian dalam pakaian (bagian dalam kerah, bagian dalam manset, lapisan ban pinggang) alih-alih melakukan halusinasi permukaan generik. Tag dan label cetak yang terlihat pada foto asli dipertahankan jika memungkinkan.
Bagaimana cara melakukan polling untuk hasilnya?
GET `/api/v1/ghost-mannequin/:id` setiap 3 detik. Job batch melakukan polling ke endpoint induk yang mengembalikan status agregat beserta rincian per item.
Kapabilitas terkait
Kapabilitas
Virtual try-on API untuk pakaian
REST API yang memakaikan pakaian pada manekin AI. Asinkron, waktu generasi 1.5–4 menit, 5 credits pada 2K, 6 pada 4K. Contoh cURL, Node.js, dan Python.
Lihat endpointKapabilitas
API try-on perhiasan untuk kalung, cincin, gelang, dan anting
Posisikan kalung, cincin, gelang, dan anting pada model AI via REST. 5 credits pada 2K, manekin close-up bawaan, rendering dengan penanganan refleksi dari dokumentasi Photta.
Lihat endpointBangun
Otomatiskan ekstraksi ghost mannequin untuk katalog Anda
Resep otomatisasi katalog harian: ambil pembaruan produk kemarin, kirim secara batch ke API ghost-mannequin Photta, lakukan polling pada parent batch, simpan ke database Anda.
Lihat endpointBandingkan
Photta vs Pixazo — pipeline first-party atau agregator model
Perbandingan Photta vs Pixazo: pipeline fashion pihak pertama vs agregator multi-model. Endpoint, latensi, paket gratis, dan kompromi. Bersumber dari data 2026-04-19.
Lihat endpointQuickstart
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.
Lihat endpointReferensi
Error Photta API
Daftar lengkap tipe error Photta API beserta kode statusnya, format body error, dan kegagalan mana saja yang layak dicoba ulang.
Lihat endpointReferensi
Rate limit Photta API
Rate limit Photta API, window-nya, header Retry-After, interval polling, serta batas konkurensi per paket, seluruhnya dirujuk dari dokumentasi API.
Lihat endpoint
Setiap angka di halaman ini bersumber dari dokumentasi API Photta · diperiksa
Coba API dalam lima menit
Buat Photta API key, tempel cuplikan cURL di atas, dan Anda akan mendapatkan gambar on-model pertama sebelum kopi selesai diseduh.
- 1.5–4 min
- 4 credits pada 2K · 5 credits pada 4K
- async, polling
- 600 requests/min
- Bearer key