Kapabilitas · Studio kacamata
API virtual try-on kacamata untuk kacamata baca dan kacamata hitam
Ringkasan singkat
API studio kacamata Photta mengubah satu foto kacamata baca atau kacamata hitam menjadi hasil potret siap pakai. Pilih khusus produk atau pada model, lakukan POST, polling setiap 3 detik, lalu unduh saat statusnya completed. 5 credits pada 2K.
- Waktu umum: 20–60 sec
- Credits: 5 credits pada 2K · 6 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/eyewear-studio \
-H "Authorization: Bearer $PHOTTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"eyewear_image": "https://cdn.yourstore.com/products/aviator-sunglasses.jpg",
"mode": "product-only",
"sub_tool": "studio-shot",
"backdrop": "gradient",
"lighting": "soft",
"aspect_ratio": "3:4",
"resolution": "2K"
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')const res = await fetch("https://api.photta.app/api/v1/eyewear-studio", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"eyewear_image": "https://cdn.yourstore.com/products/aviator-sunglasses.jpg",
"mode": "product-only",
"sub_tool": "studio-shot",
"backdrop": "gradient",
"lighting": "soft",
"aspect_ratio": "3:4",
"resolution": "2K"
}),
});
const { data } = await res.json(); // data.id, data.statusimport os, requests
res = requests.post(
"https://api.photta.app/api/v1/eyewear-studio",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"eyewear_image": "https://cdn.yourstore.com/products/aviator-sunglasses.jpg",
"mode": "product-only",
"sub_tool": "studio-shot",
"backdrop": "gradient",
"lighting": "soft",
"aspect_ratio": "3:4",
"resolution": "2K"
},
)
data = res.json()["data"] # data["id"], data["status"]
Sekilas
Sekilas
- Endpoint
- POST /api/v1/eyewear-studio
- Autentikasi
- API key Bearer
- Pemrosesan
- Asinkron — lakukan polling ke endpoint status
- Waktu umum
- 20–60 sec
- Credits
- 5 credits pada 2K · 6 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/eyewear-studio \
-H "Authorization: Bearer $PHOTTA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"eyewear_image": "https://cdn.yourstore.com/products/aviator-sunglasses.jpg",
"mode": "product-only",
"sub_tool": "studio-shot",
"backdrop": "gradient",
"lighting": "soft",
"aspect_ratio": "3:4",
"resolution": "2K"
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')const res = await fetch("https://api.photta.app/api/v1/eyewear-studio", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
"eyewear_image": "https://cdn.yourstore.com/products/aviator-sunglasses.jpg",
"mode": "product-only",
"sub_tool": "studio-shot",
"backdrop": "gradient",
"lighting": "soft",
"aspect_ratio": "3:4",
"resolution": "2K"
}),
});
const { data } = await res.json(); // data.id, data.statusimport os, requests
res = requests.post(
"https://api.photta.app/api/v1/eyewear-studio",
headers={"Authorization": f"Bearer {os.environ['PHOTTA_API_KEY']}"},
json={
"eyewear_image": "https://cdn.yourstore.com/products/aviator-sunglasses.jpg",
"mode": "product-only",
"sub_tool": "studio-shot",
"backdrop": "gradient",
"lighting": "soft",
"aspect_ratio": "3:4",
"resolution": "2K"
},
)
data = res.json()["data"] # data["id"], data["status"]202 Accepted / Completed
{
"data": {
"id": "eyw_7a1c9e42f05b3d688c2e4f01a9d6b357",
"status": "processing",
"mode": "product-only",
"sub_tool": "studio-shot",
"resolution": "2K",
"aspect_ratio": "3:4",
"credits_used": 5,
"created_at": "2026-08-01T09:15:00Z"
},
"request_id": "req_eyw001"
}{
"data": {
"id": "eyw_7a1c9e42f05b3d688c2e4f01a9d6b357",
"status": "completed",
"mode": "product-only",
"sub_tool": "studio-shot",
"output_url": "https://cdn.photta.app/generated/eyw_7a1c9e42f05b3d688c2e4f01a9d6b357.jpg",
"thumbnail_url": "https://cdn.photta.app/generated/eyw_7a1c9e42f05b3d688c2e4f01a9d6b357-thumb.jpg",
"resolution": "2K",
"aspect_ratio": "3:4",
"credits_used": 5,
"created_at": "2026-08-01T09:15:00Z",
"completed_at": "2026-08-01T09:15:38Z"
},
"request_id": "req_eyw002"
}Parameter request
eyewear_imageTipe: stringWajib
The eyewear product image — glasses or sunglasses. https URL or base64 data URI. JPEG, PNG, WebP; max 10 MB.
modeTipe: string
Generation mode: "product-only" — the eyewear alone, styled by sub_tool; "on-model" — the eyewear worn on an AI model's face (requires mannequin_id).
= product-only
Nilai:product-onlyon-modelsub_toolTipe: string
Product-only styling: "studio-shot" — clean studio product shot; "flat-lay" — top-down arrangement on a surface; "lifestyle" — the eyewear placed in a real-world scene; "floating" — the frames suspended mid-air. Sending sub_tool with mode "on-model" returns 400.
= studio-shot
Nilai:studio-shotflat-laylifestylefloatingmannequin_idTipe: string
Required when mode is "on-model": the AI model whose face wears the eyewear — an id ("mnk_...") from GET /api/v1/eyewear-studio/mannequins. Sending it in product-only mode returns 400.
face_angleTipe: string
On-model only: the angle of the model's face.
= front
Nilai:frontthree-quarterside-profileexpressionTipe: string
On-model only: the model's facial expression.
= neutral
Nilai:neutralsoft-smileseriousconfidentlighting_styleTipe: string
On-model only: how the portrait is lit.
= soft-diffused
Nilai:soft-diffusedstudionaturaldramaticframe_fit_styleTipe: string
On-model only: the overall styling of how the frames are worn.
= casual
Nilai:casualprofessionalfashion-editorialsportybackdropTipe: string
Studio-shot only: the backdrop behind the eyewear.
= white
Nilai:whitegrayblackgradientlightingTipe: string
Studio-shot only: the lighting setup.
= soft
Nilai:softharddramaticnaturalsurfaceTipe: string
Flat-lay only: the surface the eyewear lies on.
= marble
Nilai:marblewoodfabricconcretemetalarrangement_styleTipe: string
Flat-lay only: how the composition is arranged.
= minimal
Nilai:minimalsymmetricscatteredlayeredpropsTipe: string
Flat-lay only: complementary props placed around the eyewear.
= none
Nilai:noneplantsaccessoriestechsceneTipe: string
Lifestyle only: the real-world setting.
= coffee-shop
Nilai:coffee-shopbeachurban-streetofficeparkmoodTipe: string
Lifestyle only: the color mood of the scene.
= warm
Nilai:warmcoolvibrantmoodyangleTipe: string
Floating only: the camera angle on the suspended frames.
= front
Nilai:frontthree-quartersidetop-downshadow_styleTipe: string
Floating only: the shadow cast beneath the frames.
= soft-drop
Nilai:soft-dropnonehard-dropreflectionbackground_colorTipe: string
Solid background color. Applies in both modes. Overridden by background_prompt when both are sent.
= white
Nilai:whitegrayblackbeigebackground_promptTipe: string
Free-text background description. Max 400 characters — excess is silently truncated. Overrides background_color.
aspect_ratioTipe: string
Output aspect ratio.
= 3:4
Nilai:3:41:14:39:1616:9resolutionTipe: string
Output resolution. 4K cannot be combined with the 1:1 aspect ratio — that request returns 400.
= 2K
Nilai:2K4K
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 bingkai masuk, satu hasil potret kacamata ter-styling keluar
Pilih mode, tentukan styling yang disediakan mode tersebut, submit, polling, unduh.
Langkah 1
Buat API key
Studio kacamata menggunakan kredensial dan saldo credits yang sama dengan setiap kapabilitas Photta lainnya.
Langkah 2
Pilih mode beserta styling-nya
`mode` bernilai `product-only` atau `on-model`. Product-only memerlukan `sub_tool` — `studio-shot`, `flat-lay`, `lifestyle`, atau `floating` — dan masing-masing membuka kontrolnya tersendiri. On-model memerlukan `mannequin_id` beserta `face_angle`, `expression`, `lighting_style`, dan `frame_fit_style`.
Langkah 3
POST job kacamata
Lakukan POST ke `/api/v1/eyewear-studio` dengan `eyewear_image` dan field styling Anda. `background_prompt` menerima hingga 400 karakter dan menimpa `background_color`. Polling adalah satu-satunya sinyal penyelesaian — API tidak mengirim webhook.
Langkah 4
Lakukan polling hingga job selesai
Lakukan GET `/api/v1/eyewear-studio/:id` setiap 3 detik hingga `data.status` bernilai `completed` atau `failed`; durasi penyelesaian biasanya 20 hingga 60 detik.
Langkah 5
Unduh dan simpan
Body yang telah selesai memuat `output_url` dan thumbnail. Simpan file tersebut sendiri — perlakukan URL sebagai sarana pengiriman satu job, bukan sebagai hosting permanen.
Endpoint yang sama di Node.js, Python, dan cURL
Node.js
API virtual try-on kacamata di Node.js
Panggil aPI virtual try-on kacamata Photta dari backend Node.js dengan fetch native. Tidak memerlukan SDK: simpan kunci Anda, kirim job, lakukan polling untuk hasilnya.
BacaPython
API virtual try-on kacamata di Python
Panggil aPI virtual try-on kacamata Photta di Python dengan library requests. Wrapper tiga puluh baris, ramah asinkron via httpx, bekerja di Django, FastAPI, dan Celery.
BacacURL
API virtual try-on kacamata dengan cURL
Panggil aPI virtual try-on kacamata 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 pemotretan kacamata
Apa fungsi API studio kacamata?
API ini menerima satu foto produk kacamata baca atau kacamata hitam dan menghasilkan foto ter-styling — baik bingkai saja dalam gaya studio, flat-lay, lifestyle, atau floating, maupun dikenakan pada wajah model AI yang Anda pilih.
Berapa biaya untuk satu hasil potret kacamata?
5 credits pada 2K dan 6 credits pada 4K, sama seperti try-on pakaian dan perhiasan. Job yang gagal akan di-refund secara otomatis.
Apa perbedaan antara product-only dan on-model?
`product-only` memotret bingkai saja dan dikontrol oleh `sub_tool`. `on-model` memasangkannya pada wajah model AI dan dikontrol oleh `mannequin_id`, `face_angle`, `expression`, `lighting_style`, dan `frame_fit_style`. Field milik mode lainnya akan diabaikan.
Opsi styling apa saja yang disediakan oleh setiap sub-tool?
`studio-shot` menerima `backdrop` dan `lighting`. `flat-lay` menerima `surface`, `arrangement_style`, dan `props`. `lifestyle` menerima `scene` dan `mood`. `floating` menerima `angle` dan `shadow_style`. Setiap field tersebut adalah enum, sehingga nilai yang tidak sesuai akan ditolak, bukan ditebak.
Bisakah saya menggunakan model AI saya sendiri?
Ya. `mannequin_id` menerima id manekin apa pun dari GET `/api/v1/eyewear-studio/mannequins`, dan manekin yang Anda buat dengan mannequin generation API dapat digunakan dengan cara yang sama.
Bagaimana cara melakukan polling untuk hasilnya?
GET `/api/v1/eyewear-studio/:id` setiap 3 detik hingga `data.status` bernilai `completed` atau `failed`. Tidak ada webhook; polling adalah sinyal penyelesaian yang terdokumentasi.
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
Bangun layanan fotografi produk AI
Playbook founder untuk menjual kembali API virtual try-on Photta sebagai SaaS white-label: kunci tenant, fanout batch, penagihan per-credit, realitas SLA.
Lihat endpointBandingkan
Photta vs FASHN — API AI fashion, berdampingan
Perbandingan Photta dan FASHN: endpoint, harga credits, tingkatan paket, batas konkurensi. Bersumber dari halaman harga masing-masing perusahaan pada 2026-04-19. Tanpa angka rekayasa.
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.
- 20–60 sec
- 5 credits pada 2K · 6 credits pada 4K
- async, polling
- 600 requests/min
- Bearer key