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
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"]
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')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"
}Request-parameters
eyewear_imageType: stringVereist
The eyewear product image — glasses or sunglasses. https URL or base64 data URI. JPEG, PNG, WebP; max 10 MB.
modeType: 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-modelsub_toolType: 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-laylifestylefloatingmannequin_idType: 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_angleType: string
On-model only: the angle of the model's face.
= front
Waarden:frontthree-quarterside-profileexpressionType: string
On-model only: the model's facial expression.
= neutral
Waarden:neutralsoft-smileseriousconfidentlighting_styleType: string
On-model only: how the portrait is lit.
= soft-diffused
Waarden:soft-diffusedstudionaturaldramaticframe_fit_styleType: string
On-model only: the overall styling of how the frames are worn.
= casual
Waarden:casualprofessionalfashion-editorialsportybackdropType: string
Studio-shot only: the backdrop behind the eyewear.
= white
Waarden:whitegrayblackgradientlightingType: string
Studio-shot only: the lighting setup.
= soft
Waarden:softharddramaticnaturalsurfaceType: string
Flat-lay only: the surface the eyewear lies on.
= marble
Waarden:marblewoodfabricconcretemetalarrangement_styleType: string
Flat-lay only: how the composition is arranged.
= minimal
Waarden:minimalsymmetricscatteredlayeredpropsType: string
Flat-lay only: complementary props placed around the eyewear.
= none
Waarden:noneplantsaccessoriestechsceneType: string
Lifestyle only: the real-world setting.
= coffee-shop
Waarden:coffee-shopbeachurban-streetofficeparkmoodType: string
Lifestyle only: the color mood of the scene.
= warm
Waarden:warmcoolvibrantmoodyangleType: string
Floating only: the camera angle on the suspended frames.
= front
Waarden:frontthree-quartersidetop-downshadow_styleType: string
Floating only: the shadow cast beneath the frames.
= soft-drop
Waarden:soft-dropnonehard-dropreflectionbackground_colorType: string
Solid background color. Applies in both modes. Overridden by background_prompt when both are sent.
= white
Waarden:whitegrayblackbeigebackground_promptType: string
Free-text background description. Max 400 characters — excess is silently truncated. Overrides background_color.
aspect_ratioType: string
Output aspect ratio.
= 3:4
Waarden:3:41:14:39:1616:9resolutionType: string
Output resolution. 4K cannot be combined with the 1:1 aspect ratio — that request returns 400.
= 2K
Waarden:2K4K
Errors
- 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.
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.
Stap 1
Genereer een API-sleutel
De eyewear studio gebruikt dezelfde inloggegevens en hetzelfde creditsaldo als elke andere Photta-functionaliteit.
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`.
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.
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.
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.
Hetzelfde endpoint in Node.js, Python en cURL
Node.js
API voor virtuele try-on van brillen in Node.js
Roep Photta's aPI voor virtuele try-on van brillen aan vanuit een Node.js-backend met native fetch. Geen SDK vereist: sla je sleutel op, verzend de taak, poll voor het resultaat.
LezenPython
API voor virtuele try-on van brillen in Python
Roep Photta's aPI voor virtuele try-on van brillen aan in Python met de requests-bibliotheek. Een wrapper van dertig regels, async-vriendelijk via httpx, werkt in Django, FastAPI en Celery.
LezencURL
API voor virtuele try-on van brillen met cURL
Roep Photta's aPI voor virtuele try-on van brillen direct aan vanuit de shell met cURL. Verzenden, pollen, downloaden — elk fragment werkt naadloos samen met jq voor gescripte pipelines.
Lezen
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
Mogelijkheden
Virtual try-on API voor kleding
REST API die kleding op AI-mannequins plaatst. Asynchroon, generatie in 1.5–4 minuten, 5 credits bij 2K, 6 bij 4K. Voorbeelden in cURL, Node.js en Python.
Bekijk het endpointMogelijkheden
Sieraden try-on API voor kettingen, ringen, armbanden en oorbellen
Plaats kettingen, ringen, armbanden en oorbellen op AI-modellen via REST. 5 credits bij 2K, ingebouwde close-up mannequins, reflectie-bewuste rendering uit de Photta-documentatie.
Bekijk het endpointBouwen
Bouw een AI-dienst voor productfotografie
Een playbook voor founders om de virtuele try-on API van Photta door te verkopen als een white-label SaaS: tenant-sleutels, batch-distributie, facturatie per credit en de realiteit rond SLA's.
Bekijk het endpointVergelijken
Photta vs FASHN — AI-mode-API, zij aan zij
Photta en FASHN vergeleken: endpoints, creditprijzen, abonnementsniveaus, concurrency-limieten. Afkomstig van de officiële prijzenpagina van elk bedrijf op 2026-04-19. Geen verzonnen cijfers.
Bekijk het endpointSnelstartgids
Eerste Photta-afbeelding in minder dan vijf minuten.
Registreer je, genereer een API-sleutel, voer je eerste cURL-call uit, poll totdat deze is voltooid, sla het resultaat op. Vijf stappen, end-to-end gedocumenteerd.
Bekijk het endpointReferentie
Photta API-fouten
De volledige lijst van Photta API-fouttypen met hun statuscodes, de structuur van een foutbody, en welke fouten het waard zijn om opnieuw te proberen.
Bekijk het endpointReferentie
Photta API rate limits
De Photta API rate limit, het bijbehorende venster, de Retry-After-header, het polling-interval en de gelijktijdigheidslimieten per abonnement, rechtstreeks uit de API-documentatie.
Bekijk het endpoint
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