API Développeur
API REST gratuite avec réponses JSON structurées. Clé API requise (gratuite). CORS activé. Parfait pour créer des applications, des moteurs de recommandation ou alimenter des LLMs avec des données de parfums.
URL de base
https://fraganty.aiEvery perfume response includes two image URLs:
image — JPEG with background, ~20-30 KB, always available.imageTransparent — WebP with transparent background, ~15-50 KB. Returns 404 with header X-Fraganty-Nobg-Status: not-processed for perfumes not yet pre-processed — fall back to image.Both URLs are immutable, CDN-cached for 1 year, and CORS-enabled for direct use in browsers and native apps.
Tous les endpoints de l'API nécessitent une clé API gratuite. Incluez-la dans chaque requête via l'en-tête X-API-Key ou le paramètre api_key.
En-tête
X-API-Key: YOUR_API_KEYParamètre de requête
?api_key=YOUR_API_KEYDemandez votre clé API gratuite à api@fraganty.ai
/api/perfumesLister et rechercher des parfums
Paramètres
| Nom | Type | Description |
|---|---|---|
| q | string | Rechercher par nom |
| brand | string | Filtrer par slug de marque |
| page | number | Numéro de page (par défaut : 1) |
| limit | number | Résultats par page (par défaut : 20, max : 100) |
Exemple de requête
Réponse
{
"data": [
{
"id": "rose-goldea-kathleen-kye-edition",
"name": "Rose Goldea Kathleen Kye Edition",
"brand": "Bvlgari",
"year": 2021,
"rating": 4.62,
"concentration": null,
"image": "https://img.fraganty.ai/perfume/64818.jpg",
"imageTransparent": "https://img.fraganty.ai/perfume-nobg/64818.webp",
"buyUrl": "https://fraganty.ai/goto/rose-goldea-kathleen-kye-edition",
"accords": [
{ "name": "Rose", "strength": 100, "color": "#C4647C" },
{ "name": "Floral", "strength": 79, "color": "#9E3B52" }
]
}
],
"total": 2460,
"page": 1,
"pages": 492
}/api/perfumes/:slugObtenir les détails complets d'un parfum, y compris notes, accords, évaluations, saisons et parfums similaires
Exemple de requête
Réponse
{
"id": "bleu-de-chanel-eau-de-parfum",
"name": "Bleu de Chanel Eau de Parfum",
"brand": "Chanel",
"year": 2014,
"rating": 4.21,
"concentration": "Eau de Parfum",
"gender": "masculine",
"description": "...",
"image": "https://img.fraganty.ai/perfume/25967.jpg",
"imageTransparent": "https://img.fraganty.ai/perfume-nobg/25967.webp",
"buyUrl": "https://fraganty.ai/goto/bleu-de-chanel-eau-de-parfum",
"notes": {
"top": [{ "name": "Lemon", "intensity": 80 }],
"middle": [{ "name": "Cedar", "intensity": 90 }],
"base": [{ "name": "Sandalwood", "intensity": 85 }]
},
"accords": [...],
"seasons": { "winter": 45, "spring": 60, "summer": 30, "fall": 65 },
"dayNight": { "day": 55, "night": 70 },
"similarPerfumes": [...],
"perfumers": [{ "name": "Olivier Polge" }]
}/api/brandsLister toutes les marques avec le nombre de parfums
Paramètres
| Nom | Type | Description |
|---|---|---|
| q | string | Rechercher des marques par nom |
Exemple de requête
Réponse
{
"data": [
{ "name": "Guerlain", "slug": "Guerlain", "count": 412 },
{ "name": "Dior", "slug": "Dior", "count": 312 },
{ "name": "Chanel", "slug": "Chanel", "count": 248 }
],
"total": 6619
}/api/notesLister toutes les notes olfactives avec leur fréquence
Paramètres
| Nom | Type | Description |
|---|---|---|
| limit | number | Limiter les résultats (par défaut : tous) |
Exemple de requête
Réponse
{
"data": [
{ "name": "Musk", "count": 3097 },
{ "name": "Bergamot", "count": 2498 },
{ "name": "Rose", "count": 2460 }
],
"total": 981
}/api/perfumersLister tous les parfumeurs avec le nombre de parfums
Exemple de requête
Réponse
{
"data": [
{ "name": "Alberto Morillas", "slug": "alberto-morillas", "count": 45 },
{ "name": "Olivier Polge", "slug": "olivier-polge", "count": 38 }
],
"total": 358
}/api/perfumers/:slugObtenir les détails d'un parfumeur avec ses parfums (paginé)
Paramètres
| Nom | Type | Description |
|---|---|---|
| page | number | Numéro de page (par défaut : 1) |
| limit | number | Résultats par page (par défaut : 20) |
Exemple de requête
Réponse
{
"name": "Alberto Morillas",
"slug": "alberto-morillas",
"perfumes": {
"data": [...],
"total": 45,
"page": 1,
"pages": 3
}
}/api/perfumes/:slug/similarFind similar perfumes based on accord cosine similarity, note overlap, and curated data
Paramètres
| Nom | Type | Description |
|---|---|---|
| limit | number | Max results (default 10, max 20) |
Exemple de requête
Réponse
{
"source": { "id": "bleu-de-chanel-eau-de-parfum", "name": "Bleu de Chanel EDP", "brand": "Chanel" },
"data": [
{
"id": "sauvage-dior",
"name": "Sauvage",
"brand": "Dior",
"matchScore": 87,
"image": "https://img.fraganty.ai/perfume/12345.jpg",
"imageTransparent": "https://img.fraganty.ai/perfume-nobg/12345.webp",
"sharedAccords": [{ "name": "Woody", "strength": 95, "color": "#6B4226" }],
"sharedNotes": ["bergamot", "cedar"],
"accords": [...]
}
],
"total": 5
}/api/perfumes/:slug/dupesFind cheaper alternatives (dupes) to a luxury/premium perfume. Returns perfumes with matching accord/note profiles at a lower price tier.
Paramètres
| Nom | Type | Description |
|---|---|---|
| limit | number | Max results (default 20, max 50) |
Exemple de requête
Réponse
{
"source": {
"id": "bleu-de-chanel-eau-de-parfum",
"name": "Bleu de Chanel EDP",
"brand": "Chanel",
"image": "https://img.fraganty.ai/perfume/25967.jpg",
"imageTransparent": "https://img.fraganty.ai/perfume-nobg/25967.webp",
"rating": 4.21
},
"data": [
{
"id": "oakcha-eastern-bliss",
"name": "Eastern Bliss",
"brand": "Oakcha",
"priceTier": "affordable",
"matchScore": 87,
"rating": 4.35,
"image": "https://img.fraganty.ai/perfume/76543.jpg",
"imageTransparent": "https://img.fraganty.ai/perfume-nobg/76543.webp",
"sharedAccords": [{ "name": "Citrus", "strength": 100, "color": "#DAA520" }],
"sharedNotes": ["bergamot", "cedar"],
"accords": [...]
}
],
"total": 15
}/api/perfumes/matchMatch perfumes by accords, notes, gender, season, and time of day
Paramètres
| Nom | Type | Description |
|---|---|---|
| accords | string | Comma-separated accords with optional strength (e.g. woody:80,amber:60) |
| notes | string | Comma-separated note names (e.g. bergamot,cedar) |
| gender | string | Filter by gender: masculine, feminine, unisex |
| season | string | Filter by best season: winter, spring, summer, fall |
| time | string | Filter by best time: day, night |
| page | number | Numéro de page (par défaut : 1) |
| limit | number | Results per page (default 20, max 50) |
Exemple de requête
Réponse
{
"data": [
{
"id": "tobacco-vanille",
"name": "Tobacco Vanille",
"brand": "Tom Ford",
"matchScore": 92,
"rating": 4.31,
"accords": [...]
}
],
"filters": { "accords": ["woody:80", "amber"], "notes": ["bergamot"], "season": "winter" },
"total": 145,
"page": 1,
"pages": 8
}/api/accordsList all fragrance accords with perfume counts and colors
Paramètres
| Nom | Type | Description |
|---|---|---|
| search | string | Filter accords by name |
| limit | number | Max results (default 50, max 100) |
Exemple de requête
Réponse
{
"data": [
{ "name": "Woody", "count": 42350, "color": "#6B4226" },
{ "name": "Warm Spicy", "count": 18200, "color": "#A0522D" }
],
"total": 3
}