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

POST/api/v1/eyewear-studio
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')
Sunglasses photographed by the eyewear studio API
Contoh output

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')

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"
}

Parameter request

eyewear_image

Tipe: stringWajib

The eyewear product image — glasses or sunglasses. https URL or base64 data URI. JPEG, PNG, WebP; max 10 MB.

mode

Tipe: 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-model
sub_tool

Tipe: 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-laylifestylefloating
mannequin_id

Tipe: 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_angle

Tipe: string

On-model only: the angle of the model's face.

= front

Nilai: frontthree-quarterside-profile
expression

Tipe: string

On-model only: the model's facial expression.

= neutral

Nilai: neutralsoft-smileseriousconfident
lighting_style

Tipe: string

On-model only: how the portrait is lit.

= soft-diffused

Nilai: soft-diffusedstudionaturaldramatic
frame_fit_style

Tipe: string

On-model only: the overall styling of how the frames are worn.

= casual

Nilai: casualprofessionalfashion-editorialsporty
backdrop

Tipe: string

Studio-shot only: the backdrop behind the eyewear.

= white

Nilai: whitegrayblackgradient
lighting

Tipe: string

Studio-shot only: the lighting setup.

= soft

Nilai: softharddramaticnatural
surface

Tipe: string

Flat-lay only: the surface the eyewear lies on.

= marble

Nilai: marblewoodfabricconcretemetal
arrangement_style

Tipe: string

Flat-lay only: how the composition is arranged.

= minimal

Nilai: minimalsymmetricscatteredlayered
props

Tipe: string

Flat-lay only: complementary props placed around the eyewear.

= none

Nilai: noneplantsaccessoriestech
scene

Tipe: string

Lifestyle only: the real-world setting.

= coffee-shop

Nilai: coffee-shopbeachurban-streetofficepark
mood

Tipe: string

Lifestyle only: the color mood of the scene.

= warm

Nilai: warmcoolvibrantmoody
angle

Tipe: string

Floating only: the camera angle on the suspended frames.

= front

Nilai: frontthree-quartersidetop-down
shadow_style

Tipe: string

Floating only: the shadow cast beneath the frames.

= soft-drop

Nilai: soft-dropnonehard-dropreflection
background_color

Tipe: string

Solid background color. Applies in both modes. Overridden by background_prompt when both are sent.

= white

Nilai: whitegrayblackbeige
background_prompt

Tipe: string

Free-text background description. Max 400 characters — excess is silently truncated. Overrides background_color.

aspect_ratio

Tipe: string

Output aspect ratio.

= 3:4

Nilai: 3:41:14:39:1616:9
resolution

Tipe: string

Output resolution. 4K cannot be combined with the 1:1 aspect ratio — that request returns 400.

= 2K

Nilai: 2K4K

Error

400invalid_request_error
The request is malformed or contains invalid parameters.
401authentication_error
The API key is missing, invalid, or expired.
402insufficient_credits_error
Your account does not have enough credits.
404not_found_error
The requested resource does not exist.
409conflict_error
The request conflicts with current state — e.g. your concurrent-batch cap is reached.
429rate_limit_error
Too many requests. Slow down and retry.Retry-After: 30
500api_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.

  1. Langkah 1

    Buat API key

    Studio kacamata menggunakan kredensial dan saldo credits yang sama dengan setiap kapabilitas Photta lainnya.

  2. 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`.

  3. 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.

  4. 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.

  5. 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.

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

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