Functionaliteit · Eyewear studio

API voor virtuele try-on van brillen voor brillen en zonnebrillen

In één zin

Photta's eyewear studio API zet één foto van een bril of zonnebril om in een voltooide opname. Kies voor alleen het product of op een model, POST, poll elke 3 seconden en download zodra de status completed is. 5 credits op 2K.

  • Typische duur: 20–60 sec
  • Credits: 5 credits bij 2K · 6 credits bij 4K
  • Verwerking: async, polling
  • Limieten: 600 requests/min
  • Authenticatie: Bearer key

Elk getal op deze pagina is afkomstig uit de Photta-API-documentatie · gecontroleerd

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
Voorbeelduitvoer

In één oogopslag

In één oogopslag

Endpoint
POST /api/v1/eyewear-studio
Authenticatie
Bearer API key
Verwerking
Asynchroon — poll het status-endpoint
Typische duur
20–60 sec
Credits
5 credits bij 2K · 6 credits bij 4K
Beeldverhoudingen
3:4 · 1:1 · 4:3 · 9:16 · 16:9
Invoerlimieten
Tot 10 MB per afbeelding; JPEG, PNG, WebP
Idempotent
Nee

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

Request-parameters

eyewear_image

Type: stringVereist

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

mode

Type: 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

Waarden: product-onlyon-model
sub_tool

Type: 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

Waarden: studio-shotflat-laylifestylefloating
mannequin_id

Type: 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

Type: string

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

= front

Waarden: frontthree-quarterside-profile
expression

Type: string

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

= neutral

Waarden: neutralsoft-smileseriousconfident
lighting_style

Type: string

On-model only: how the portrait is lit.

= soft-diffused

Waarden: soft-diffusedstudionaturaldramatic
frame_fit_style

Type: string

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

= casual

Waarden: casualprofessionalfashion-editorialsporty
backdrop

Type: string

Studio-shot only: the backdrop behind the eyewear.

= white

Waarden: whitegrayblackgradient
lighting

Type: string

Studio-shot only: the lighting setup.

= soft

Waarden: softharddramaticnatural
surface

Type: string

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

= marble

Waarden: marblewoodfabricconcretemetal
arrangement_style

Type: string

Flat-lay only: how the composition is arranged.

= minimal

Waarden: minimalsymmetricscatteredlayered
props

Type: string

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

= none

Waarden: noneplantsaccessoriestech
scene

Type: string

Lifestyle only: the real-world setting.

= coffee-shop

Waarden: coffee-shopbeachurban-streetofficepark
mood

Type: string

Lifestyle only: the color mood of the scene.

= warm

Waarden: warmcoolvibrantmoody
angle

Type: string

Floating only: the camera angle on the suspended frames.

= front

Waarden: frontthree-quartersidetop-down
shadow_style

Type: string

Floating only: the shadow cast beneath the frames.

= soft-drop

Waarden: soft-dropnonehard-dropreflection
background_color

Type: string

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

= white

Waarden: whitegrayblackbeige
background_prompt

Type: string

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

aspect_ratio

Type: string

Output aspect ratio.

= 3:4

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

Type: string

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

= 2K

Waarden: 2K4K

Errors

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.

Limieten

  • 600 verzoeken per minuut per API key (Vast venster; de limiet is identiek op elk abonnement)
  • Een 429 bevat Retry-After: 30 seconden
  • Tot 10 MB per afbeelding
  • Formaten: JPEG, PNG, WebP
  • Gelijktijdige batches per abonnement: Free 1 · Hobby 2 · Seller 3 · Brand 4 · Studio 6
  • Uitsluitend polling — de API stuurt geen webhooks.

Eén montuurfoto erin, één gestylde brillenfoto eruit

Kies een modus, selecteer de styling die deze modus biedt, verzend, poll en download.

  1. Stap 1

    Genereer een API-sleutel

    De eyewear studio gebruikt dezelfde inloggegevens en hetzelfde creditsaldo als elke andere Photta-functionaliteit.

  2. Stap 2

    Kies een modus en styling

    `mode` is `product-only` of `on-model`. Product-only accepteert een `sub_tool` — `studio-shot`, `flat-lay`, `lifestyle` of `floating` — en elk biedt eigen instellingen. On-model vereist een `mannequin_id` plus `face_angle`, `expression`, `lighting_style` en `frame_fit_style`.

  3. Stap 3

    POST de brillentaak

    POST naar `/api/v1/eyewear-studio` met `eyewear_image` en je stylingvelden. `background_prompt` accepteert maximaal 400 tekens en overschrijft `background_color`. Polling is het enige signaal voor voltooiing — de API verstuurt geen webhooks.

  4. Stap 4

    Poll totdat de taak is voltooid

    Voer elke 3 seconden een GET uit op `/api/v1/eyewear-studio/:id` totdat `data.status` `completed` of `failed` is; afronding duurt doorgaans 20 tot 60 seconden.

  5. Stap 5

    Download en bewaar

    De payload bij voltooiing bevat `output_url` en een thumbnail. Sla het bestand zelf op — beschouw de URL als de levering van één taak, niet als permanente opslag.

Vragen die ontwikkelaars stellen voordat ze brillenshots in productie nemen

Wat doet de eyewear studio API?

Het neemt één productfoto van een bril of zonnebril en levert een gestylde foto op — het montuur los in een studio-, flat-lay-, lifestyle- of zwevende setting, óf gedragen op het gezicht van een gekozen AI-model.

Hoeveel kost een brillenshot?

5 credits op 2K en 6 credits op 4K, hetzelfde als kleding- en sieraden-try-on. Mislukte taken worden automatisch terugbetaald.

Wat is het verschil tussen product-only en on-model?

`product-only` fotografeert uitsluitend het montuur en wordt aangestuurd via `sub_tool`. `on-model` plaatst het op het gezicht van een AI-model en wordt aangestuurd via `mannequin_id`, `face_angle`, `expression`, `lighting_style` en `frame_fit_style`. Velden die bij de andere modus horen, worden genegeerd.

Welke stylingopties biedt elke sub-tool?

`studio-shot` accepteert `backdrop` en `lighting`. `flat-lay` accepteert `surface`, `arrangement_style` en `props`. `lifestyle` accepteert `scene` en `mood`. `floating` accepteert `angle` en `shadow_style`. Al deze velden zijn enums; een onverwachte waarde wordt direct afgekeurd en niet gegokt.

Kan ik mijn eigen AI-model gebruiken?

Ja. `mannequin_id` accepteert elk mannequin-id van GET `/api/v1/eyewear-studio/mannequins`, en mannequins die je bouwt met de mannequin-generatie-API kunnen op dezelfde manier worden gebruikt.

Hoe poll ik voor het resultaat?

GET `/api/v1/eyewear-studio/:id` elke 3 seconden totdat `data.status` `completed` of `failed` is. Er zijn geen webhooks; polling is het gedocumenteerde voltooiingssignaal.

Vergelijkbare functionaliteiten

Elk getal op deze pagina is afkomstig uit de Photta-API-documentatie · gecontroleerd

Probeer de API in vijf minuten

Genereer een Photta API-sleutel, plak het bovenstaande cURL-fragment en je hebt je eerste afbeelding op een model voordat de koffie klaar is.

  • 20–60 sec
  • 5 credits bij 2K · 6 credits bij 4K
  • async, polling
  • 600 requests/min
  • Bearer key