Fragrance search, as an API
Sillage takes a description of a smell in ordinary words and returns fragrances that match it, out of 102,082. This page is about opening that up.
What this is, and what it is not
A table of fragrances and their notes can be scraped from several places. Matching “something warm and sweet for the evening, not too heavy” to real bottles cannot, and that is the part we built: an embedding of every fragrance in the catalogue, a step that reads the query, and a ranking tuned against a fixed set of questions whose right answers we already know. We are happy to show anyone that test set and how the ranking scores on it.
So what is on offer is answers rather than a database dump.
Endpoints we have in mind
GET /v1/search?q=the main one
A description in plain words, back a ranked list of fragrances. This is the endpoint the rest exists to support.
POST /v1/matchfor shops
Send your product lines the way they are written on your site — Dior Sauvage EDT 100ml — and get our fragrance IDs back. Once your shelf is mapped, search runs over your own stock instead of ours. Every result says which rule matched it, and an ambiguous one is returned as ambiguous rather than as a guess: a wrong mapping puts the wrong bottle on your product page, which is worse than no mapping at all.
GET /v1/fragrance/{id}
One fragrance: notes by layer, accords, gender, the seasons it suits, longevity and sillage where we hold them.
GET /v1/fragrance/{id}/similar
Fragrances built from some of the same materials, with the count of notes they share. Sharing materials is not the same as being a copy and this endpoint does not claim otherwise — it is a composition comparison, not a verdict.
GET /v1/notes/{id}
What a material actually smells like, in a sentence a shopper can read. Where the material is a plant, its botanical name; where IFRA restricts it, which Standard and why.
GET /v1/fragrance/{id}/description
A written description of the fragrance. We generated these, and they say so.
GET /v1/dupes/{id}small
Where a brand has publicly said one of its fragrances is inspired by another, the quote, the date we read it and a link to the page it appeared on. Reported speech throughout: these are the brands' claims, not our conclusions, and we have not compared any two fragrances ourselves. It is 93 claims from 2 brands so far, which is small, and we would rather say so than round it up.
What a response looks like
GET /v1/search?q=warm+sweet+vanilla+for+the+evening&limit=3
{
"results": [
{ "id": 33521, "name": "Tihota", "brand": "Indult",
"notes": ["Tahitian Vanilla", "Sugar Cane", "Tonka Bean", "White Musk"] },
{ "id": 44390, "name": "Spicebomb Extreme", "brand": "Viktor&Rolf",
"notes": ["Vanilla", "Tobacco", "Cinnamon", "Cumin", "Bourbon Whiskey"] }
]
}
Real rows from the catalogue, shortened. The ordering is the thing being sold; the fields are what you need to render a card.
Tell us what you need
We are writing this now, and none of it is fixed — which is the reason to say something while it is still cheap to change. What are you building, and what would it have to answer? A line is plenty.