Capacidad · Estudio de gafas
API de virtual try-on de gafas para gafas y gafas de sol
En una frase
La API de estudio de gafas de Photta transforma una sola foto de gafas o gafas de sol en una toma terminada. Elige solo producto o con modelo, haz un POST, haz polling cada 3 segundos y descarga cuando el status sea completed. 5 credits a 2K.
- Tiempo típico: 20–60 sec
- Credits: 5 credits a 2K · 6 credits a 4K
- Procesamiento: asíncrono, polling
- Límites: 600 requests/min
- Autenticación: Bearer key
Cada cifra de esta página proviene de la documentación de la API de Photta · verificado
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"]
De un vistazo
De un vistazo
- Endpoint
- POST /api/v1/eyewear-studio
- Autenticación
- Bearer API key
- Procesamiento
- Asíncrono — realiza polling al endpoint de estado
- Tiempo típico
- 20–60 sec
- Credits
- 5 credits a 2K · 6 credits a 4K
- Relaciones de aspecto
- 3:4 · 1:1 · 4:3 · 9:16 · 16:9
- Límites de entrada
- Hasta 10 MB por imagen; JPEG, PNG, WebP
- Idempotente
- No
Petición y respuesta
Petición
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 / Completado
{
"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"
}Parámetros de la petición
eyewear_imageTipo: stringObligatorio
The eyewear product image — glasses or sunglasses. https URL or base64 data URI. JPEG, PNG, WebP; max 10 MB.
modeTipo: 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
Valores:product-onlyon-modelsub_toolTipo: 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
Valores:studio-shotflat-laylifestylefloatingmannequin_idTipo: 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_angleTipo: string
On-model only: the angle of the model's face.
= front
Valores:frontthree-quarterside-profileexpressionTipo: string
On-model only: the model's facial expression.
= neutral
Valores:neutralsoft-smileseriousconfidentlighting_styleTipo: string
On-model only: how the portrait is lit.
= soft-diffused
Valores:soft-diffusedstudionaturaldramaticframe_fit_styleTipo: string
On-model only: the overall styling of how the frames are worn.
= casual
Valores:casualprofessionalfashion-editorialsportybackdropTipo: string
Studio-shot only: the backdrop behind the eyewear.
= white
Valores:whitegrayblackgradientlightingTipo: string
Studio-shot only: the lighting setup.
= soft
Valores:softharddramaticnaturalsurfaceTipo: string
Flat-lay only: the surface the eyewear lies on.
= marble
Valores:marblewoodfabricconcretemetalarrangement_styleTipo: string
Flat-lay only: how the composition is arranged.
= minimal
Valores:minimalsymmetricscatteredlayeredpropsTipo: string
Flat-lay only: complementary props placed around the eyewear.
= none
Valores:noneplantsaccessoriestechsceneTipo: string
Lifestyle only: the real-world setting.
= coffee-shop
Valores:coffee-shopbeachurban-streetofficeparkmoodTipo: string
Lifestyle only: the color mood of the scene.
= warm
Valores:warmcoolvibrantmoodyangleTipo: string
Floating only: the camera angle on the suspended frames.
= front
Valores:frontthree-quartersidetop-downshadow_styleTipo: string
Floating only: the shadow cast beneath the frames.
= soft-drop
Valores:soft-dropnonehard-dropreflectionbackground_colorTipo: string
Solid background color. Applies in both modes. Overridden by background_prompt when both are sent.
= white
Valores:whitegrayblackbeigebackground_promptTipo: string
Free-text background description. Max 400 characters — excess is silently truncated. Overrides background_color.
aspect_ratioTipo: string
Output aspect ratio.
= 3:4
Valores:3:41:14:39:1616:9resolutionTipo: string
Output resolution. 4K cannot be combined with the 1:1 aspect ratio — that request returns 400.
= 2K
Valores:2K4K
Errores
- 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.
Límites
- 600 solicitudes por minuto por API key (Ventana fija; el límite es el mismo en todos los planes)
- Un 429 incluye Retry-After: 30 segundos
- Hasta 10 MB por imagen
- Formatos: JPEG, PNG, WebP
- Lotes simultáneos por plan: Free 1 · Hobby 2 · Seller 3 · Brand 4 · Studio 6
- Solo polling — la API no envía webhooks.
Entra una foto de la montura, sale una toma de gafas estilizada
Elige un modo, selecciona el estilismo que expone ese modo, envía, haz polling y descarga.
Paso 1
Generar una API key
El estudio de gafas utiliza las mismas credenciales y el mismo balance de credits que cualquier otra capacidad de Photta.
Paso 2
Elige un modo y su estilismo
`mode` es `product-only` u `on-model`. Product-only acepta un `sub_tool` — `studio-shot`, `flat-lay`, `lifestyle` o `floating` — y cada uno habilita sus propios controles. On-model requiere un `mannequin_id` junto con `face_angle`, `expression`, `lighting_style` y `frame_fit_style`.
Paso 3
Envía el trabajo de gafas mediante POST
Haz un POST a `/api/v1/eyewear-studio` con `eyewear_image` y tus campos de estilismo. `background_prompt` admite hasta 400 caracteres y anula `background_color`. El polling es la única señal de finalización: la API no envía webhooks.
Paso 4
Haz polling hasta que el trabajo se complete
Haz GET a `/api/v1/eyewear-studio/:id` cada 3 segundos hasta que `data.status` sea `completed` o `failed`; el tiempo habitual de finalización es de 20 a 60 segundos.
Paso 5
Descarga y persiste
El payload completado incluye `output_url` y una miniatura. Almacena el archivo por tu cuenta: trata la URL como la entrega de un trabajo puntual, no como un alojamiento permanente.
El mismo endpoint en Node.js, Python y cURL
Node.js
API de virtual try-on de gafas en Node.js
Llama a aPI de virtual try-on de gafas de Photta desde un backend de Node.js con fetch nativo. Sin SDKs: guarda tu key, envía el trabajo y haz polling para obtener el resultado.
LeerPython
API de virtual try-on de gafas en Python
Llama a aPI de virtual try-on de gafas de Photta en Python con la biblioteca requests. Wrapper de treinta líneas, compatible con async mediante httpx, funciona en Django, FastAPI y Celery.
LeercURL
API de virtual try-on de gafas con cURL
Llama a aPI de virtual try-on de gafas de Photta directamente desde la terminal con cURL. Envía, haz polling, descarga: cada fragmento de código se combina con jq para pipelines automatizados.
Leer
Preguntas que hacen los desarrolladores antes de enviar tomas de gafas a producción
¿Qué hace la API del estudio de gafas?
Toma una sola foto de producto de unas gafas o gafas de sol y devuelve una fotografía estilizada de las mismas: ya sean las monturas solas con un acabado de estudio, flat-lay, lifestyle o flotante, o puestas en el rostro del modelo de IA que elijas.
¿Cuánto cuesta una toma de gafas?
5 credits a 2K y 6 credits a 4K, igual que el try-on de ropa y joyería. Los trabajos fallidos se reembolsan automáticamente.
¿Cuál es la diferencia entre solo producto y con modelo?
`product-only` fotografía las monturas solas y se controla mediante `sub_tool`. `on-model` las coloca en el rostro de un modelo de IA y se controla mediante `mannequin_id`, `face_angle`, `expression`, `lighting_style` y `frame_fit_style`. Los campos que pertenecen al otro modo se ignoran.
¿Qué opciones de estilismo expone cada sub-herramienta?
`studio-shot` admite `backdrop` y `lighting`. `flat-lay` admite `surface`, `arrangement_style` y `props`. `lifestyle` admite `scene` y `mood`. `floating` admite `angle` y `shadow_style`. Cada uno de esos campos es un enum, por lo que cualquier valor inesperado se rechaza en lugar de intentar deducirlo.
¿Puedo usar mi propio modelo de IA?
Sí. `mannequin_id` acepta cualquier id de maniquí obtenido de GET `/api/v1/eyewear-studio/mannequins`, y los maniquíes que crees con la API de generación de maniquíes se pueden usar de la misma forma.
¿Cómo hago polling para obtener el resultado?
Haz GET a `/api/v1/eyewear-studio/:id` cada 3 segundos hasta que `data.status` sea `completed` o `failed`. No hay webhooks; el polling es la señal de finalización documentada.
Capacidades relacionadas
Capacidades
API de virtual try-on para ropa
API REST que viste maniquíes de IA con prendas. Generación asíncrona de 1.5–4 minutos, 5 créditos en 2K, 6 en 4K. Ejemplos en cURL, Node.js y Python.
Ver el endpointCapacidades
API de try-on de joyas para collares, anillos, pulseras y pendientes
Coloca collares, anillos, pulseras y pendientes en modelos de IA mediante REST. 5 credits en 2K, maniquíes en primer plano integrados y renderizado optimizado para reflejos según la documentación de Photta.
Ver el endpointConstruir
Crea un servicio de fotografía de producto con IA
Un manual para fundadores sobre cómo revender la API de virtual try-on de Photta como un SaaS de marca blanca: claves por tenant, fanout por lotes, facturación por credit y la realidad del SLA.
Ver el endpointComparar
Photta frente a FASHN: API de IA de moda, frente a frente
Comparativa de Photta y FASHN: endpoints, precios de créditos, niveles de planes, límites de concurrencia. Obtenido directamente de la página de precios de cada empresa el 2026-04-19. Sin cifras inventadas.
Ver el endpointGuía rápida
Tu primera imagen de Photta en menos de cinco minutos.
Regístrate, genera una API key, ejecuta tu primera llamada cURL, haz polling hasta que se complete y guarda el resultado. Cinco pasos, documentados de principio a fin.
Ver el endpointReferencia
Errores de Photta API
La lista completa de tipos de error de Photta API con sus status codes, la estructura del cuerpo de error y qué fallos merece la pena reintentar.
Ver el endpointReferencia
Rate limits de la API de Photta
El rate limit de la API de Photta, su ventana, la cabecera Retry-After, el intervalo de polling y los límites de concurrencia por plan, todo extraído directamente de la documentación de la API.
Ver el endpoint
Cada cifra de esta página proviene de la documentación de la API de Photta · verificado
Prueba la API en cinco minutos
Genera una API key de Photta, pega el snippet de cURL de arriba y tendrás tu primera imagen con modelo antes de que termine de prepararse el café.
- 20–60 sec
- 5 credits a 2K · 6 credits a 4K
- asíncrono, polling
- 600 requests/min
- Bearer key