Fonctionnalité · Studio lunettes
API d'essayage virtuel de lunettes pour lunettes de vue et lunettes de soleil
En une phrase
L'API eyewear studio de Photta transforme une photo de lunettes de vue ou de soleil en un cliché finalisé. Choisissez produit seul ou sur mannequin, effectuez un POST, réalisez un polling toutes les 3 secondes, téléchargez dès que le statut passe à completed. 5 crédits en 2K.
- Délai typique: 20–60 sec
- Crédits: 5 crédits en 2K · 6 crédits en 4K
- Traitement: asynchrone, polling
- Limites: 600 requêtes/min
- Authentification: Clé Bearer
Chaque chiffre sur cette page provient de la documentation de l'API Photta · vérifié
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"]
En un coup d'œil
En un coup d'œil
- Endpoint
- POST /api/v1/eyewear-studio
- Authentification
- Clé API Bearer
- Traitement
- Asynchrone — interrogez l'endpoint de statut par polling
- Délai typique
- 20–60 sec
- Crédits
- 5 crédits en 2K · 6 crédits en 4K
- Rapports d'aspect
- 3:4 · 1:1 · 4:3 · 9:16 · 16:9
- Limites d'entrée
- Jusqu'à 10 Mo par image ; JPEG, PNG, WebP
- Idempotent
- Non
Requête et réponse
Requête
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 / Terminé
{
"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"
}Paramètres de requête
eyewear_imageType: stringRequis
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
Valeurs: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
Valeurs: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
Valeurs:frontthree-quarterside-profileexpressionType: string
On-model only: the model's facial expression.
= neutral
Valeurs:neutralsoft-smileseriousconfidentlighting_styleType: string
On-model only: how the portrait is lit.
= soft-diffused
Valeurs:soft-diffusedstudionaturaldramaticframe_fit_styleType: string
On-model only: the overall styling of how the frames are worn.
= casual
Valeurs:casualprofessionalfashion-editorialsportybackdropType: string
Studio-shot only: the backdrop behind the eyewear.
= white
Valeurs:whitegrayblackgradientlightingType: string
Studio-shot only: the lighting setup.
= soft
Valeurs:softharddramaticnaturalsurfaceType: string
Flat-lay only: the surface the eyewear lies on.
= marble
Valeurs:marblewoodfabricconcretemetalarrangement_styleType: string
Flat-lay only: how the composition is arranged.
= minimal
Valeurs:minimalsymmetricscatteredlayeredpropsType: string
Flat-lay only: complementary props placed around the eyewear.
= none
Valeurs:noneplantsaccessoriestechsceneType: string
Lifestyle only: the real-world setting.
= coffee-shop
Valeurs:coffee-shopbeachurban-streetofficeparkmoodType: string
Lifestyle only: the color mood of the scene.
= warm
Valeurs:warmcoolvibrantmoodyangleType: string
Floating only: the camera angle on the suspended frames.
= front
Valeurs:frontthree-quartersidetop-downshadow_styleType: string
Floating only: the shadow cast beneath the frames.
= soft-drop
Valeurs:soft-dropnonehard-dropreflectionbackground_colorType: string
Solid background color. Applies in both modes. Overridden by background_prompt when both are sent.
= white
Valeurs: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
Valeurs:3:41:14:39:1616:9resolutionType: string
Output resolution. 4K cannot be combined with the 1:1 aspect ratio — that request returns 400.
= 2K
Valeurs:2K4K
Erreurs
- 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.
Limites
- 600 requêtes par minute par clé API (Fenêtre fixe ; la limite est identique sur tous les forfaits)
- Une 429 renvoie Retry-After: 30 secondes
- Jusqu'à 10 Mo par image
- Formats: JPEG, PNG, WebP
- Lots simultanés par forfait: Free 1 · Hobby 2 · Seller 3 · Brand 4 · Studio 6
- Polling uniquement — l'API n'envoie aucun webhook.
Une photo de monture en entrée, une photo de lunettes stylisée en sortie
Choisissez un mode, sélectionnez les options de style exposées par ce mode, soumettez, faites le polling, téléchargez.
Étape 1
Générer une clé API
Le studio lunettes utilise les mêmes identifiants et le même solde de crédits que toutes les autres fonctionnalités Photta.
Étape 2
Choisir un mode et son style
`mode` vaut `product-only` ou `on-model`. Product-only requiert un `sub_tool` — `studio-shot`, `flat-lay`, `lifestyle` ou `floating` — chacun exposant ses propres contrôles. On-model requiert un `mannequin_id` ainsi que `face_angle`, `expression`, `lighting_style` et `frame_fit_style`.
Étape 3
Effectuer le POST du job de lunettes
Faites un POST sur `/api/v1/eyewear-studio` avec `eyewear_image` et vos champs de stylisation. `background_prompt` accepte jusqu'à 400 caractères et prévaut sur `background_color`. Le polling est le seul signal de fin — l'API n'envoie pas de webhooks.
Étape 4
Faire le polling jusqu'à l'achèvement du job
Faites un GET sur `/api/v1/eyewear-studio/:id` toutes les 3 secondes jusqu'à ce que `data.status` passe à `completed` ou `failed` ; le traitement prend généralement de 20 à 60 secondes.
Étape 5
Télécharger et persister
Le corps de réponse complété contient `output_url` et une miniature. Stockez le fichier vous-même — considérez l'URL comme la livraison d'un job unique, non comme un hébergement permanent.
Le même endpoint en Node.js, Python et cURL
Node.js
API d'essayage virtuel de lunettes en Node.js
Appelez aPI d'essayage virtuel de lunettes de Photta depuis un backend Node.js avec fetch natif. Aucun SDK requis : stockez votre clé, soumettez le job, récupérez le résultat par polling.
LirePython
API d'essayage virtuel de lunettes en Python
Appelez aPI d'essayage virtuel de lunettes de Photta en Python avec la bibliothèque requests. Un wrapper de trente lignes, compatible asynchrone via httpx, fonctionnant dans Django, FastAPI et Celery.
LirecURL
API d'essayage virtuel de lunettes avec cURL
Appelez aPI d'essayage virtuel de lunettes de Photta directement depuis le shell avec cURL. Soumettez, effectuez le polling, téléchargez — chaque extrait s'associe à jq pour vos pipelines scriptés.
Lire
Questions que les développeurs se posent avant de déployer les photos de lunettes
Que fait l'API eyewear studio ?
Elle prend une photo produit de lunettes de vue ou de soleil et renvoie une photographie stylisée — soit les montures seules selon un traitement studio, flat-lay, lifestyle ou flottant, soit portées sur le visage du mannequin IA de votre choix.
Combien coûte une photo de lunettes ?
5 crédits en 2K et 6 crédits en 4K, identique au try-on de vêtements et de bijoux. Les jobs échoués sont remboursés automatiquement.
Quelle est la différence entre product-only et on-model ?
`product-only` photographie les montures seules et est piloté par `sub_tool`. `on-model` les positionne sur le visage d'un mannequin IA et est piloté par `mannequin_id`, `face_angle`, `expression`, `lighting_style` et `frame_fit_style`. Les champs appartenant à l'autre mode sont ignorés.
Quelles options de stylisation chaque sub-tool expose-t-il ?
`studio-shot` accepte `backdrop` et `lighting`. `flat-lay` accepte `surface`, `arrangement_style` et `props`. `lifestyle` accepte `scene` et `mood`. `floating` accepte `angle` et `shadow_style`. Chacun de ces champs est un enum : une valeur inattendue est donc rejetée plutôt que devinée.
Puis-je utiliser mon propre modèle d'IA ?
Oui. `mannequin_id` accepte n'importe quel identifiant de mannequin issu de GET `/api/v1/eyewear-studio/mannequins`, et les mannequins créés avec l'API de génération de mannequins s'utilisent de la même façon.
Comment récupérer le résultat par polling ?
Effectuez un GET sur `/api/v1/eyewear-studio/:id` toutes les 3 secondes jusqu'à ce que `data.status` passe à `completed` ou `failed`. Il n'y a pas de webhooks ; le polling est le signal de fin documenté.
Fonctionnalités associées
Fonctionnalités
API de try-on virtuel pour les vêtements
API REST qui positionne des vêtements sur des mannequins générés par IA. Traitement asynchrone, génération en 1.5–4 minutes, 5 crédits en 2K, 6 en 4K. Exemples en cURL, Node.js et Python.
Voir l'endpointFonctionnalités
API de try-on de bijoux pour colliers, bagues, bracelets et boucles d'oreilles
Positionnez colliers, bagues, bracelets et boucles d'oreilles sur des modèles IA via REST. 5 crédits en 2K, mannequins gros plan intégrés, rendu gérant les reflets d'après la documentation de Photta.
Voir l'endpointDévelopper
Créer un service de photographie de produits par IA
Le guide pour les fondateurs souhaitant revendre l'API de try-on virtuel de Photta sous forme de SaaS en marque blanche : clés par tenant, distribution par lots, facturation au credit, réalité des SLA.
Voir l'endpointComparer
Photta vs FASHN — API d’IA pour la mode, côte à côte
Photta et FASHN comparés : endpoints, tarification en crédits, niveaux d’abonnement, limites de concurrence. Données issues de la page de tarification respective de chaque entreprise au 2026-04-19. Aucun chiffre inventé.
Voir l'endpointDémarrage rapide
Première image Photta en moins de cinq minutes.
Inscrivez-vous, générez une clé d'API, lancez votre premier appel cURL, effectuez le polling jusqu'à la complétion, persistez le résultat. Cinq étapes documentées de bout en bout.
Voir l'endpointRéférence
Erreurs de l’API Photta
La liste complète des types d’erreurs de l’API Photta avec leurs codes de statut, la structure du corps d’erreur et les échecs pouvant être réessayés.
Voir l'endpointRéférence
Rate limits de l'API Photta
La rate limit de l'API Photta, sa fenêtre, l'en-tête Retry-After, l'intervalle de polling et les plafonds de simultanéité par forfait, tels que documentés dans l'API.
Voir l'endpoint
Chaque chiffre sur cette page provient de la documentation de l'API Photta · vérifié
Testez l'API en cinq minutes
Générez une clé d'API Photta, collez le snippet cURL ci-dessus, et vous obtiendrez votre première photo portée sur modèle avant même que le café ait fini de couler.
- 20–60 sec
- 5 crédits en 2K · 6 crédits en 4K
- asynchrone, polling
- 600 requêtes/min
- Clé Bearer