10ML Perfume Finder · pentru dezvoltatori

API de recomandare parfumuri și API de parfumuri similare

API-ul de recomandare parfumuri 10ML este un set de rute GET gratuite, fără cheie API. /similar ordonează parfumurile după notele și acordurile comune și le poate orienta spre mai proaspăt, mai dulce sau mai închis. /alternatives returnează alternative de la alte case. Alegerile după gustul cuiva vin de la instrumentul recommend_perfumes de pe endpointul MCP.

API de parfumuri similare

https://mcp.10ml.com/api/v1/similar

JSON prin GET, OpenAPI 3.1. Gratuit, fără cheie API.

Toate cele opt endpointuri

API de parfumuri similare

GET /api/v1/similar?perfume= primește numele unui parfum din index și returnează parfumurile cele mai apropiate de el. Fiecare rezultat spune ce note și acorduri are în comun și cât de apropiat este: „very close” = foarte apropiat, „similar vibe” = atmosferă similară sau „same spirit” = același spirit. Sunt arătate două rezultate din paisprezece, prescurtate, din 21 octombrie 2026.

curl "https://mcp.10ml.com/api/v1/similar?perfume=Creed+Aventus&limit=2"
{
  "results": [
    {
      "perfume": {
        "name": "Club de Nuit Intense Man Parfum",
        "house": "Armaf",
        "family": "Fruity woody"
      },
      "closeness": "very close",
      "shared_notes": ["pineapple", "bergamot", "apple", "black currant", "birch", "jasmine"],
      "shared_accords": ["fruity", "woody", "smoky", "fresh"],
      "why": "shares pineapple, bergamot, apple, black currant"
    },
    {
      "perfume": {
        "name": "Club de Nuit Intense Man EDT",
        "house": "Armaf",
        "family": "Fruity woody"
      },
      "closeness": "similar vibe",
      "shared_notes": ["pineapple", "bergamot", "apple", "black currant", "birch", "jasmine"],
      "shared_accords": ["fruity", "woody", "smoky", "musky"],
      "why": "shares pineapple, bergamot, apple, black currant"
    }
  ],
  "total": 14,
  "source": "10ML Fragrance Index"
}

Transmite house= când un nume este ambiguu, gender= pentru a păstra parfumurile pentru bărbați, pentru femei sau unisex, other_houses_only=true pentru a exclude casa parfumului de pornire, iar limit= și cursor= pentru paginare.

Orientează rezultatul

steer= mută rezultatul într-o singură direcție față de parfumul de pornire: fresher, sweeter, darker, lighter, longer_lasting sau more_projection. Ultimele două cer un parfum care se află în index. Motivul din fiecare rezultat numește direcția.

curl "https://mcp.10ml.com/api/v1/similar?perfume=Creed+Aventus&steer=fresher&limit=2"
{
  "target": {
    "name": "Aventus",
    "house": "Creed"
  },
  "results": [
    {
      "perfume": {
        "name": "Club de Nuit Intense Man EDT",
        "house": "Armaf",
        "gender": "men",
        "family": "Fruity woody",
        "accords": ["citrus", "fruity", "smoky"]
      },
      "closeness": "very close",
      "shared_notes": ["pineapple", "bergamot", "apple", "black currant", "birch", "jasmine"],
      "why": "shares pineapple, bergamot, apple, black currant; fresher than the starting point"
    },
    {
      "perfume": {
        "name": "Club de Nuit Intense Man Parfum",
        "house": "Armaf",
        "gender": "men",
        "family": "Fruity woody",
        "accords": ["fruity", "smoky", "woody"]
      },
      "closeness": "very close",
      "shared_notes": ["pineapple", "bergamot", "apple", "black currant", "birch", "jasmine"],
      "why": "shares pineapple, bergamot, apple, black currant; fresher than the starting point"
    }
  ],
  "total": 1989,
  "source": "10ML Fragrance Index"
}

Parfumuri similare doar din note

Pentru un parfum care nu se află în index, transmite notes= și accords= în loc de un nume. Rezultatul ordonează indexul după acea listă.

curl "https://mcp.10ml.com/api/v1/similar?notes=vanilla,saffron&limit=2"
{
  "target": {
    "name": "your notes",
    "notes": ["vanilla", "saffron"]
  },
  "results": [
    {
      "perfume": {
        "name": "Vanille & Ambre",
        "house": "Berdoues",
        "gender": "unisex",
        "family": "Vanilla amber",
        "accords": ["vanilla", "amber", "sweet"]
      },
      "closeness": "very close",
      "shared_notes": ["vanilla", "saffron"],
      "why": "shares vanilla, saffron"
    },
    {
      "perfume": {
        "name": "Liquid Brun",
        "house": "French Avenue",
        "gender": "unisex",
        "family": "Gourmand spicy",
        "accords": ["warm spicy", "sweet", "vanilla"]
      },
      "closeness": "very close",
      "shared_notes": [],
      "why": "a similar overall profile"
    }
  ],
  "total": 2612,
  "source": "10ML Fragrance Index"
}

Alternative de la alte case

GET /api/v1/alternatives?perfume= returnează alternativele editorilor la un parfum celebru, întotdeauna de la alte case, fiecare cu motivul pentru care este apropiat. closeness= păstrează doar „very close” (foarte apropiat), „similar vibe” (atmosferă similară) sau „same spirit” (același spirit).

curl "https://mcp.10ml.com/api/v1/alternatives?perfume=Creed+Aventus&limit=2"
{
  "total": 5,
  "original": {
    "name": "Creed Aventus",
    "id": "creed-aventus-edp"
  },
  "alternatives": [
    {
      "name": "Armaf Club de Nuit Intense Man",
      "closeness": "very close",
      "why": "Pineapple, lemon, birch smoke and musk make it smell similar, a popular alternative at a different weight.",
      "id": "armaf-club-de-nuit-intense-man-parfum",
      "house": "Armaf",
      "source": "editors"
    },
    {
      "name": "Al Haramain L'Aventure",
      "closeness": "very close",
      "why": "Fruity-smoky opening over woods and musk follows the same blueprint.",
      "id": "al-haramain-laventure",
      "house": "Al Haramain",
      "source": "editors"
    }
  ],
  "source": "10ML Fragrance Index"
}

Recomandări după gustul unei persoane

Alegerile după gust nu sunt o rută REST: vin de la instrumentul recommend_perfumes al serverului MCP. Acesta primește parfumurile care îi plac sau nu îi plac unei persoane, notele pe care le preferă sau le evită, plus gender, season, occasion, style și familia, și spune de ce pentru fiecare alegere. Endpointul MCP https://mcp.10ml.com/mcp răspunde și la un simplu POST JSON-RPC, deci îl poate apela orice cod. Răspunsul de mai jos este structuredContent din răspuns, prescurtat.

curl -X POST https://mcp.10ml.com/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"recommend_perfumes","arguments":{"likes":["Dior Sauvage"],"avoided_notes":["patchouli"],"season":"summer","limit":2}}}'
{
  "total": 3916,
  "picks": [
    {
      "perfume": {
        "name": "L'Immensité",
        "house": "Louis Vuitton",
        "gender": "men",
        "family": "Aromatic aquatic",
        "accords": ["fresh", "aquatic", "amber"],
        "key_notes": ["sage", "labdanum", "ambroxan", "amber", "ginger"]
      },
      "why": "shares bergamot, labdanum, ambroxan with Sauvage Eau de Parfum; suits summer"
    },
    {
      "perfume": {
        "name": "Jean Lowe Immortel",
        "house": "Maison Alhambra",
        "gender": "men",
        "family": "Fresh aromatic",
        "accords": ["fresh", "aromatic", "woody"],
        "key_notes": []
      },
      "why": "suits summer"
    }
  ],
  "taste": {
    "liked_perfumes": ["Sauvage Eau de Parfum"],
    "liked_notes": [],
    "avoided_notes": ["patchouli"]
  },
  "source": "10ML Fragrance Index"
}

Un asistent face același apel pentru tine: întreabă-l pe Claude sau ChatGPT „parfumul meu de semnătură este Dior Sauvage, ce urmează?” după ce ai adăugat serverul MCP de parfumuri.

Filtrează după note, sezon și ocazie

GET /api/v1/perfumes listează parfumuri după notes_include, notes_exclude, accords, family, gender, season, occasion și style, precum și după text liber. Exemplul de mai jos păstrează parfumurile care au și bergamotă, și ambroxan.

curl "https://mcp.10ml.com/api/v1/perfumes?notes_include=bergamot,ambroxan&limit=2"
{
  "total": 90,
  "results": [
    {
      "name": "Imagination",
      "house": "Louis Vuitton",
      "family": "Citrus woody",
      "key_notes": ["ginger", "cinnamon", "amberwood", "ambroxan", "citron"]
    },
    {
      "name": "L'Immensité",
      "house": "Louis Vuitton",
      "family": "Aromatic aquatic",
      "key_notes": ["sage", "labdanum", "ambroxan", "amber", "ginger"]
    }
  ],
  "filters": {
    "notes_include": "bergamot, ambroxan"
  },
  "relaxed": false,
  "source": "10ML Fragrance Index"
}

Ce rută pentru ce întrebare

ÎntrebareaApelul
Ce parfumuri seamănă cu acesta?GET /api/v1/similar?perfume=
Ca acesta, dar mai proaspăt, mai dulce sau mai închis?GET /api/v1/similar?perfume=&steer=
Știu doar notele.GET /api/v1/similar?notes=
Care sunt alternativele de la alte case?GET /api/v1/alternatives?perfume=
Parfumuri cu aceste note pentru acest sezon?GET /api/v1/perfumes?notes_include=&season=
Ce se potrivește cu ce iubește și ce evită această persoană?MCP tool recommend_perfumes

Indexul are peste 6.000 de parfumuri și 285 de note. Pagina API-ului pentru parfumuri documentează fiecare endpoint, iar ghidul despre alternativa API Fragrantica cartografiază celelalte date pe care le caută dezvoltatorii.

Întrebări

Există un API de recomandare parfumuri?

Da. API-ul 10ML Fragrance Index recomandă prin trei rute gratuite: /similar pentru parfumuri asemănătoare cu unul pe care îl cunoști, /alternatives pentru alternative de la alte case și /perfumes pentru filtre după note, sezon și ocazie. Alegerile după parfumurile și notele pe care o persoană le iubește sau le evită vin de la instrumentul recommend_perfumes de la https://mcp.10ml.com/mcp. Fără cheie API.

Există un API de similaritate între parfumuri?

Da: GET https://mcp.10ml.com/api/v1/similar?perfume=Creed+Aventus returnează cele mai apropiate parfumuri, fiecare cu notele și acordurile pe care le are în comun și cât de apropiat este („very close” = foarte apropiat, „similar vibe” = atmosferă similară, „same spirit” = același spirit). steer= mută rezultatul spre fresher, sweeter, darker, lighter, longer_lasting sau more_projection.

Cum se măsoară similaritatea?

După notele, acordurile și stilul comune. Fiecare rezultat enumeră ce are în comun și spune cât de apropiat este. Este o comparație a parfumurilor în sine, nu o evaluare din recenzii.

Pot obține parfumuri similare pentru un parfum care nu se află în index?

Da. Transmite notele și acordurile lui la /similar în loc de un nume, de exemplu notes=vanilla,saffron, iar indexul este ordonat după acea listă.

Pot obține recomandări după gustul unui utilizator prin REST?

Deocamdată nu pe o rută REST. Instrumentul recommend_perfumes se află pe endpointul MCP, care răspunde și la un simplu POST JSON-RPC, așa cum arată exemplul de mai sus. Rutele REST acoperă parfumuri similare, alternative și filtre.

Este gratuit?

Da. Nu există cheie API, cont sau înregistrare. Nu există o limită fixă de cereri (vezi termenii), așa că păstrează în cache ce descarci, ține un ritm rezonabil și anunță-ne înainte de un volum mare la contact@10ml.com.