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é

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
Exemple de sortie

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')

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

Paramètres de requête

eyewear_image

Type: stringRequis

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

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

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

Valeurs: frontthree-quarterside-profile
expression

Type: string

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

= neutral

Valeurs: neutralsoft-smileseriousconfident
lighting_style

Type: string

On-model only: how the portrait is lit.

= soft-diffused

Valeurs: soft-diffusedstudionaturaldramatic
frame_fit_style

Type: string

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

= casual

Valeurs: casualprofessionalfashion-editorialsporty
backdrop

Type: string

Studio-shot only: the backdrop behind the eyewear.

= white

Valeurs: whitegrayblackgradient
lighting

Type: string

Studio-shot only: the lighting setup.

= soft

Valeurs: softharddramaticnatural
surface

Type: string

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

= marble

Valeurs: marblewoodfabricconcretemetal
arrangement_style

Type: string

Flat-lay only: how the composition is arranged.

= minimal

Valeurs: minimalsymmetricscatteredlayered
props

Type: string

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

= none

Valeurs: noneplantsaccessoriestech
scene

Type: string

Lifestyle only: the real-world setting.

= coffee-shop

Valeurs: coffee-shopbeachurban-streetofficepark
mood

Type: string

Lifestyle only: the color mood of the scene.

= warm

Valeurs: warmcoolvibrantmoody
angle

Type: string

Floating only: the camera angle on the suspended frames.

= front

Valeurs: frontthree-quartersidetop-down
shadow_style

Type: string

Floating only: the shadow cast beneath the frames.

= soft-drop

Valeurs: soft-dropnonehard-dropreflection
background_color

Type: string

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

= white

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

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

Valeurs: 2K4K

Erreurs

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.

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.

  1. É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.

  2. É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`.

  3. É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.

  4. É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.

  5. É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.

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

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