Förmåga · Glasögonstudio
API för virtuell try-on av glasögon för glasögon och solglasögon
I en mening
Phottas API för glasögonstudio förvandlar ett foto av glasögon eller solglasögon till en färdig bild. Välj enbart produkt eller på modell, gör POST, polla var 3:e sekund, ladda ner när statusen är completed. 5 credits vid 2K.
- Typisk tid: 20–60 sec
- Credits: 5 credits vid 2K · 6 credits vid 4K
- Bearbetning: asynkron, polling
- Gränser: 600 requests/min
- Autentisering: Bearer-nyckel
Varje siffra på den här sidan kommer från Photter API-dokumentationen · kontrollerad
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"]
I korthet
I korthet
- Endpoint
- POST /api/v1/eyewear-studio
- Autentisering
- Bearer API-nyckel
- Bearbetning
- Asynkron — polla status-endpointen
- Typisk tid
- 20–60 sec
- Credits
- 5 credits vid 2K · 6 credits vid 4K
- Bildförhållanden
- 3:4 · 1:1 · 4:3 · 9:16 · 16:9
- Indatagränser
- Upp till 10 MB per bild; JPEG, PNG, WebP
- Idempotent
- Nej
Request och 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-parametrar
eyewear_imageTyp: stringObligatorisk
The eyewear product image — glasses or sunglasses. https URL or base64 data URI. JPEG, PNG, WebP; max 10 MB.
modeTyp: 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
Värden:product-onlyon-modelsub_toolTyp: 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
Värden:studio-shotflat-laylifestylefloatingmannequin_idTyp: 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_angleTyp: string
On-model only: the angle of the model's face.
= front
Värden:frontthree-quarterside-profileexpressionTyp: string
On-model only: the model's facial expression.
= neutral
Värden:neutralsoft-smileseriousconfidentlighting_styleTyp: string
On-model only: how the portrait is lit.
= soft-diffused
Värden:soft-diffusedstudionaturaldramaticframe_fit_styleTyp: string
On-model only: the overall styling of how the frames are worn.
= casual
Värden:casualprofessionalfashion-editorialsportybackdropTyp: string
Studio-shot only: the backdrop behind the eyewear.
= white
Värden:whitegrayblackgradientlightingTyp: string
Studio-shot only: the lighting setup.
= soft
Värden:softharddramaticnaturalsurfaceTyp: string
Flat-lay only: the surface the eyewear lies on.
= marble
Värden:marblewoodfabricconcretemetalarrangement_styleTyp: string
Flat-lay only: how the composition is arranged.
= minimal
Värden:minimalsymmetricscatteredlayeredpropsTyp: string
Flat-lay only: complementary props placed around the eyewear.
= none
Värden:noneplantsaccessoriestechsceneTyp: string
Lifestyle only: the real-world setting.
= coffee-shop
Värden:coffee-shopbeachurban-streetofficeparkmoodTyp: string
Lifestyle only: the color mood of the scene.
= warm
Värden:warmcoolvibrantmoodyangleTyp: string
Floating only: the camera angle on the suspended frames.
= front
Värden:frontthree-quartersidetop-downshadow_styleTyp: string
Floating only: the shadow cast beneath the frames.
= soft-drop
Värden:soft-dropnonehard-dropreflectionbackground_colorTyp: string
Solid background color. Applies in both modes. Overridden by background_prompt when both are sent.
= white
Värden:whitegrayblackbeigebackground_promptTyp: string
Free-text background description. Max 400 characters — excess is silently truncated. Overrides background_color.
aspect_ratioTyp: string
Output aspect ratio.
= 3:4
Värden:3:41:14:39:1616:9resolutionTyp: string
Output resolution. 4K cannot be combined with the 1:1 aspect ratio — that request returns 400.
= 2K
Värden:2K4K
Fel
- 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.
Gränser
- 600 anrop per minut per API-nyckel (Fast fönster; gränsen är densamma på alla planer)
- En 429 innehåller Retry-After: 30 sekunder
- Upp till 10 MB per bild
- Format: JPEG, PNG, WebP
- Samtidiga batcher per plan: Free 1 · Hobby 2 · Seller 3 · Brand 4 · Studio 6
- Endast polling — API:et skickar inga webhooks.
Ett bågfoto in, en stylad glasögonbild ut
Välj ett läge, välj den styling som läget exponerar, skicka in, polla, ladda ner.
Steg 1
Generera en API-nyckel
Glasögonstudion använder samma inloggningsuppgifter och samma credits-saldo som alla andra Photta-funktioner.
Steg 2
Välj ett läge och dess styling
`mode` är `product-only` eller `on-model`. Product-only tar ett `sub_tool` — `studio-shot`, `flat-lay`, `lifestyle` eller `floating` — och vart och ett öppnar sina egna kontroller. On-model tar ett `mannequin_id` plus `face_angle`, `expression`, `lighting_style` och `frame_fit_style`.
Steg 3
Gör POST för glasögonjobbet
Gör POST till `/api/v1/eyewear-studio` med `eyewear_image` och dina stylingfält. `background_prompt` accepterar upp till 400 tecken och åsidosätter `background_color`. Polling är den enda signalen för slutförande — API:et skickar inga webhooks.
Steg 4
Polla tills jobbet slutförs
Gör GET mot `/api/v1/eyewear-studio/:id` var 3:e sekund tills `data.status` är `completed` eller `failed`; typisk slutförandetid är 20 till 60 sekunder.
Steg 5
Ladda ner och spara
Den slutförda svarstexten innehåller `output_url` och en miniatyrbild. Lagra filen själv — betrakta URL:en som leveransen av ett jobb, inte som permanent hosting.
Samma endpoint i Node.js, Python och cURL
Node.js
API för virtuell try-on av glasögon i Node.js
Anropa Phottas aPI för virtuell try-on av glasögon från en Node.js-backend med inbyggd fetch. Ingen SDK krävs: lagra din nyckel, skicka in jobbet, polla efter resultatet.
LäsPython
API för virtuell try-on av glasögon i Python
Anropa Phottas aPI för virtuell try-on av glasögon i Python med requests-biblioteket. Wrapper på trettio rader, async-vänlig via httpx, fungerar i Django, FastAPI och Celery.
LäscURL
API för virtuell try-on av glasögon med cURL
Anropa Phottas aPI för virtuell try-on av glasögon direkt från skalet med cURL. Skicka, polla, ladda ner — alla kodavsnitt fungerar tillsammans med jq för skriptade pipelines.
Läs
Frågor utvecklare ställer innan de driftsätter glasögonbilder
Vad gör glasögonstudio-API:et?
Det tar ett produktfoto av glasögon eller solglasögon och returnerar ett stylat fotografi av dem — antingen enbart bågarna i en studio-, flat-lay-, livsstils- eller svävande miljö, eller burna på ansiktet av en AI-modell du väljer.
Vad kostar en glasögonbild?
5 credits vid 2K och 6 credits vid 4K, samma som try-on för kläder och smycken. Misslyckade jobb återbetalas automatiskt.
Vad är skillnaden mellan product-only och on-model?
`product-only` fotograferar bågarna för sig själva och styrs av `sub_tool`. `on-model` placerar dem på en AI-modells ansikte och styrs av `mannequin_id`, `face_angle`, `expression`, `lighting_style` och `frame_fit_style`. Fält som tillhör det andra läget ignoreras.
Vilka stylingalternativ exponerar varje sub-tool?
`studio-shot` tar `backdrop` och `lighting`. `flat-lay` tar `surface`, `arrangement_style` och `props`. `lifestyle` tar `scene` och `mood`. `floating` tar `angle` och `shadow_style`. Vart och ett av dessa fält är en enum, så ett oväntat värde avvisas snarare än gissas.
Kan jag använda min egen AI-modell?
Ja. `mannequin_id` accepterar valfritt mannequin-ID från GET `/api/v1/eyewear-studio/mannequins`, och provdockor du bygger med API:et för generering av provdockor kan användas på samma sätt.
Hur gör jag polling efter resultatet?
Anropa GET `/api/v1/eyewear-studio/:id` var 3:e sekund tills `data.status` är `completed` eller `failed`. Det finns inga webhooks; polling är den dokumenterade signalen för slutförande.
Relaterade förmågor
Funktioner
API för virtuell try-on för apparel
REST API som placerar kläder på AI-mannekänger. Asynkron, 1,5–4 minuters generering, 5 credits vid 2K, 6 vid 4K. Exempel för cURL, Node.js och Python.
Se endpointFunktioner
API för smyckes-try-on för halsband, ringar, armband och örhängen
Placera halsband, ringar, armband och örhängen på AI-modeller via REST. 5 credits vid 2K, inbyggda närbildsprovdockor, reflexmedveten rendering från Photta-dokumentationen.
Se endpointBygg
Bygg en tjänst för AI-produktfotografering
En grundares playbook för att återförsälja Phottas virtuella try-on-API som en white-label-SaaS: klientnycklar, batch-fanout, fakturering per credit, SLA-realiteter.
Se endpointJämför
Photta mot FASHN — AI-mode-API, sida vid sida
Photta och FASHN jämförda: endpoints, kreditpriser, plannivåer, gränser för samtidighet. Hämtat från respektive företags egen prissida 2026-04-19. Inga påhittade siffror.
Se endpointSnabbstart
Första Photta-bilden på under fem minuter.
Skapa konto, generera en API-nyckel, kör ditt första cURL-anrop, polla tills det är klart, spara resultatet. Fem steg, dokumenterade från början till slut.
Se endpointReferens
Photta API-fel
Den fullständiga listan över feltyper i Photta API med deras statuskoder, strukturen på ett felmeddelande, och vilka fel som är värda att försöka igen.
Se endpointReferens
Photta API rate limits
Photta API:s rate limit, dess fönster, Retry-After-headern, polling-intervallet och taken för samtidighet per abonnemang, allt hämtat från API-dokumentationen.
Se endpoint
Varje siffra på den här sidan kommer från Photter API-dokumentationen · kontrollerad
Testa API:et på fem minuter
Generera en Photta API-nyckel, klistra in cURL-kodfragmentet ovan, och du har din första bild på en modell innan kaffet har bryggts klart.
- 20–60 sec
- 5 credits vid 2K · 6 credits vid 4K
- asynkron, polling
- 600 requests/min
- Bearer-nyckel