API d'essayage virtuel

Ajoutez l'essayage virtuel à votre app ou site en une requête HTTP. Réponses JSON, résultat par polling ou webhook.

Authentification

Envoyez la clé dans l'en-tête Authorization. Les clés de test commencent par hk_test_, les clés live par hk_live_.

Authorization: Bearer hk_live_xxxxxxxxxxxxxxxx

Créer un essayage

POST https://houshstyle.ir/api/v1/try-on/ — multipart/form-data, ou JSON avec des URL d'images

ParamètreDescription
person_image / person_image_urlPhoto de la personne (un requis)
garment_image / garment_image_url / garment_idPhoto du vêtement ou ID produit (un requis)
garment_typeClé du type de vêtement ou d'accessoire (tableau en bas de page) ; par défaut w_gown
on_modeltrue si la photo est portée par un mannequin (son visage et son corps ne sont pas transférés)
genderw ou m ; pour les articles unisexes comme sacs à dos et casquettes
garment_image_2, garment_type_2, on_model_2 …Deuxième et troisième articles (facultatif), ex. tenue + chaussures + sac
resolutionstandard (1 crédit) | hd (2 crédits)
lock_face, remove_garment_backgroundtrue / false
webhook_url, client_reffacultatif
curl -X POST https://houshstyle.ir/api/v1/try-on/ \
  -H "Authorization: Bearer $HUSH_KEY" \
  -F person_image=@person.jpg \
  -F garment_image=@dress.jpg \
  -F garment_type=w_gown \
  -F garment_image_2=@heels.jpg \
  -F garment_type_2=w_heels \
  -F resolution=hd \
  -F webhook_url=https://your-app.com/hooks/tryon

Réponse (202) :

{"id": "8b1c…", "status": "queued", "result_url": null, "credits_charged": 2, ...}

Récupérer le résultat

GET https://houshstyle.ir/api/v1/try-on/{id}/

Statuts : queued, processing, completed, failed. En completed, result_url est l'image finale. En cas d'échec, le crédit est remboursé automatiquement (refunded=true).

Exemple Python

import requests, time
H = {"Authorization": "Bearer hk_live_..."}
r = requests.post("https://houshstyle.ir/api/v1/try-on/", headers=H,
    files={"person_image": open("me.jpg", "rb"), "garment_image": open("dress.jpg", "rb")},
    data={"garment_type": "w_cocktail"})
job = r.json()
while job["status"] in ("queued", "processing"):
    time.sleep(2)
    job = requests.get(f"https://houshstyle.ir/api/v1/try-on/{job['id']}/", headers=H).json()
print(job["result_url"])

Exemple JavaScript (Node)

const fd = new FormData();
fd.append("person_image_url", "https://cdn.example.com/u/123.jpg");
fd.append("garment_id", "42");
const res = await fetch("https://houshstyle.ir/api/v1/try-on/", {
  method: "POST", headers: { Authorization: `Bearer ${process.env.HUSH_KEY}` }, body: fd });
console.log(await res.json());

Exemple PHP

$ch = curl_init("https://houshstyle.ir/api/v1/try-on/");
curl_setopt_array($ch, [CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("HUSH_KEY")],
  CURLOPT_POSTFIELDS => ["person_image" => new CURLFile("me.jpg"), "garment_image" => new CURLFile("coat.jpg"),
                         "garment_type" => "m_blazer"]]);
echo curl_exec($ch);

Webhook

À la fin du traitement, un POST JSON avec les en-têtes suivants est envoyé à webhook_url :

X-Hush-Timestamp: 1760780000
X-Hush-Signature: sha256=HMAC_SHA256(webhook_secret, timestamp + "." + raw_body)

{"event": "tryon.completed", "data": {"id": "...", "status": "completed", "result_url": "..."}}
# Python verify
import hmac, hashlib
expected = hmac.new(SECRET.encode(), ts.encode() + b"." + body, hashlib.sha256).hexdigest()
assert hmac.compare_digest("sha256=" + expected, signature)

Autres endpoints

Codes d'erreur

400 invalid_imageImage invalide, trop petite ou trop grande
401Clé invalide ou désactivée
402 org_creditsCrédit de l'organisation épuisé
429Limite de débit dépassée (60 requêtes/minute par défaut)
503 unavailableService temporairement indisponible ; réessayez dans quelques secondes

Types de vêtements et d'accessoires (garment_type)

Les clés u_ sont unisexes. Les anciens noms anglais (comme cocktail dress) sont toujours acceptés.

Vêtements — Femme

CléTypeGroupe
w_gownRobe de soirée longueSoirée & mariée
w_midi_formalRobe de soirée midiSoirée & mariée
w_cocktailRobe courte / cocktailSoirée & mariée
w_laceRobe de soirée en dentelle / transparenteSoirée & mariée
w_sequinRobe de soirée à sequins / perléeSoirée & mariée
w_straplessRobe de soirée bustierSoirée & mariée
w_offshoulderRobe de soirée épaules dénudéesSoirée & mariée
w_ballgownRobe de bal / princesseSoirée & mariée
w_mermaidRobe de soirée sirèneSoirée & mariée
w_bridalRobe de mariéeSoirée & mariée
w_dressRobe de jour femmeRobes de jour
w_knitdressRobe en mailleRobes de jour
w_mantoManteau longVestes, manteaux & pardessus
w_kimonoManteau ouvert / kimono / long cardiganVestes, manteaux & pardessus
w_coatManteau / trench femmeVestes, manteaux & pardessus
w_blazerBlazer femme (garder votre haut)Vestes, manteaux & pardessus
w_blazer_innerBlazer femme avec le haut/chemisier de la photoVestes, manteaux & pardessus
w_jacketVeste femme (jean, cuir…)Vestes, manteaux & pardessus
w_pufferDoudoune femmeVestes, manteaux & pardessus
w_cardiganCardigan femmeVestes, manteaux & pardessus
w_vestGilet sans manches femmeVestes, manteaux & pardessus
w_chadorTchadorTchador & abaya
w_chador_sleevedTchador à manches (national / libanais)Tchador & abaya
w_abayaAbayaTchador & abaya
w_topT-shirt / haut femmeHauts
w_blouseChemisier / chemise femmeHauts
w_tunicTuniqueHauts
w_knitPull femmeHauts
w_hoodieSweat / hoodie femmeHauts
w_jeansJean femmeBas
w_trousersPantalon / chino femmeBas
w_widelegPantalon large / palazzoBas
w_joggersJogging femmeBas
w_skirtJupeBas
w_shortsShort femmeBas
w_leggingsLeggingChaussettes, collants & leggings
w_tights_sheerCollant voileChaussettes, collants & leggings
w_tights_opaqueCollant opaque / de couleurChaussettes, collants & leggings
w_tights_patternCollant fantaisie / résilleChaussettes, collants & leggings
w_kneesocksChaussettes hautesChaussettes, collants & leggings
w_socksSocquettes femmeChaussettes, collants & leggings
w_kaftanCaftan / djellabaTraditionnel
w_localCostume traditionnel femmeTraditionnel

Vêtements — Homme

CléTypeGroupe
m_blazerBlazer homme (garder votre chemise)Vestes, manteaux & pardessus
m_blazer_shirtBlazer homme avec la chemise de la photoVestes, manteaux & pardessus
m_jacketVeste homme (cuir, jean…)Vestes, manteaux & pardessus
m_pufferDoudoune hommeVestes, manteaux & pardessus
m_overcoatPardessus / trench hommeVestes, manteaux & pardessus
m_cardiganCardigan hommeVestes, manteaux & pardessus
m_vestGilet sans manches hommeVestes, manteaux & pardessus
m_shirtChemise habillée hommeHauts
m_shirt_casualChemise casual / à carreaux hommeHauts
m_tshirtT-shirt hommeHauts
m_poloPoloHauts
m_knitPull hommeHauts
m_hoodieSweat / hoodie hommeHauts
m_jeansJean hommeBas
m_trousersPantalon / chino hommeBas
m_cargoPantalon cargoBas
m_joggersJogging hommeBas
m_shortsShort hommeBas
m_socksChaussettes hommeChaussettes, collants & leggings
m_compressionCollant de compression hommeChaussettes, collants & leggings
m_thobeThobe / dishdashaTraditionnel
m_bishtBisht / cape hommeTraditionnel
m_kurdishCostume kurde hommeTraditionnel

Ensembles & combinaisons — Femme

CléTypeGroupe
w_suitTailleur-pantalon (garder votre haut)Costumes & ensembles habillés
w_suit_fullTailleur-pantalon avec le haut de la photoCostumes & ensembles habillés
w_skirtsuitTailleur jupeCostumes & ensembles habillés
w_manto_setEnsemble manteau & pantalonEnsembles casual, sport & intérieur
w_manto_set_scarfEnsemble manteau, pantalon & châleEnsembles casual, sport & intérieur
w_twopieceEnsemble deux pièces (haut + jupe/pantalon)Ensembles casual, sport & intérieur
w_tracksuitSurvêtement femmeEnsembles casual, sport & intérieur
w_activewearEnsemble sport (legging + brassière)Ensembles casual, sport & intérieur
w_pajamaPyjama / ensemble d'intérieur femmeEnsembles casual, sport & intérieur
w_jumpsuitCombinaison-pantalon femmeCombinaisons & salopettes
w_playsuitCombishort femmeCombinaisons & salopettes
w_overallsSalopette femmeCombinaisons & salopettes
w_lookLook complet femme depuis une photo (vêtements + chaussures + sac)Look complet depuis une photo
w_bridal_setRobe de mariée avec voileLook complet depuis une photo

Ensembles & combinaisons — Homme

CléTypeGroupe
m_suitCostume homme (garder votre chemise)Costumes & ensembles habillés
m_suit_shirtCostume homme avec chemise et cravate de la photoCostumes & ensembles habillés
m_threepieceCostume trois pièces (avec gilet)Costumes & ensembles habillés
m_tuxSmokingCostumes & ensembles habillés
m_tracksuitSurvêtement hommeEnsembles casual, sport & intérieur
m_pajamaPyjama / ensemble d'intérieur hommeEnsembles casual, sport & intérieur
m_shirt_pantsEnsemble chemise & pantalon hommeEnsembles casual, sport & intérieur
m_tee_shortsEnsemble T-shirt & short hommeEnsembles casual, sport & intérieur
m_jumpsuitCombinaison hommeCombinaisons & salopettes
m_coverallCombinaison de travailCombinaisons & salopettes
m_overallsSalopette hommeCombinaisons & salopettes
m_lookLook complet homme depuis une photo (vêtements + chaussures + sac)Look complet depuis une photo

Ensembles & combinaisons — Unisexe

CléTypeGroupe
u_onesie_hoodCombinaison à capuche (haut + pantalon + capuche)Combinaisons & salopettes

Accessoires — Femme

CléTypeGroupe
w_heelsTalons hauts / chaussures de soiréeChaussures
w_flatsBallerines / mocassins femmeChaussures
w_sneakersBaskets femmeChaussures
w_sandalsSandales / mules femmeChaussures
w_anklebootsBottines femmeChaussures
w_bootsBottes hautes femmeChaussures
w_handbagSac à mainSacs
w_shoulderbagSac bandoulièreSacs
w_clutchPochette de soiréeSacs
w_necklaceCollier / collier en orBijoux
w_earringsBoucles d'oreillesBijoux
w_braceletBracelet / joncBijoux
w_ringBagueBijoux
w_jewelsetParure de bijouxBijoux
w_ankletBracelet de chevilleBijoux
w_broochBrocheBijoux
w_watchMontre femmeMontres
w_sunglassesLunettes de soleil femmeLunettes
w_hatChapeau femme (capeline, paille, fedora)Chapeaux & casquettes
w_headscarfFoulardFoulards, châles & maghnaeh
w_shawlChâleFoulards, châles & maghnaeh
w_maghnaehMaghnaeh (voile capuche)Foulards, châles & maghnaeh
w_turbanTurban / bonnet hijabFoulards, châles & maghnaeh
w_silkscarfFoulard de cou en soieÉcharpes, cravates & nœuds papillon
w_beltCeinture femmeCeintures & gants
w_tiaraDiadème / couronneDiadèmes & accessoires cheveux
w_hairclipSerre-tête / barretteDiadèmes & accessoires cheveux
w_veilVoile de mariéeDiadèmes & accessoires cheveux

Accessoires — Homme

CléTypeGroupe
m_dressshoesChaussures habillées hommeChaussures
m_loafersMocassins hommeChaussures
m_sneakersBaskets hommeChaussures
m_bootsBottes / boots hommeChaussures
m_sandalsSandales / claquettes hommeChaussures
m_bagPorte-documents / sacoche hommeSacs
m_chainChaîne hommeBijoux
m_braceletBracelet hommeBijoux
m_ringBague hommeBijoux
m_cufflinksBoutons de manchetteBijoux
m_watchMontre hommeMontres
m_sunglassesLunettes de soleil hommeLunettes
m_hatFedora hommeChapeaux & casquettes
m_tieCravateÉcharpes, cravates & nœuds papillon
m_bowtieNœud papillonÉcharpes, cravates & nœuds papillon
m_pocketsquarePochette de costumeÉcharpes, cravates & nœuds papillon
m_beltCeinture hommeCeintures & gants

Accessoires — Unisexe

CléTypeGroupe
u_backpackSac à dosSacs
u_beltbagSac banane / petite bandoulièreSacs
u_smartwatchMontre connectéeMontres
u_eyeglassesLunettes de vue / monturesLunettes
u_capCasquetteChapeaux & casquettes
u_beanieBonnetChapeaux & casquettes
u_bucketBobChapeaux & casquettes
u_neckscarfÉcharpeÉcharpes, cravates & nœuds papillon
u_glovesGantsCeintures & gants