Octogen Platform API

More Like This — one endpoint, many recommendation strategies

Give the API a product you already know — a URL or an Octogen UUID — and it returns similar products from your catalogs. A handful of parameters turn the same endpoint into distinct recommendation surfaces. Every example below is a real request shape with live results from indexed catalogs.

POSThttps://api.octogen.ai/v1/products/more-like-this

How a request becomes a query

1 · Resolve

The source product is looked up in your granted catalogs by source.url or source.uuid. Scope to one catalog with catalog, or omit it to search across everything you have access to.

2 · Compose

Facet matching is automatic. When you don't pass include_facets or exclude_facets, the server reads the source product's enriched facets — styles, tags, attributes — and matches on them for you: audience facets (product type, gender, age group) are applied as exact filters, and the rest are matched softly through their embeddings, with exact facet matching coming to this default over time. Your own facets and price_preference layer on top when you want explicit control.

3 · Retrieve & rank

Candidates are retrieved by vector similarity over the chosen embedding columns, then re-scored for final ordering. Which embeddings drive each stage is now under your control.

Embedding columns new

Every indexed product carries several embeddings. Two new request parameters — retrieval_embedding_columns (which embeddings pull candidates in) and ranking_embedding_columns (which embeddings order them) — let you mix and match. Send debug: true and the response echoes the effectiveQuery the server actually ran, so you can see exactly what any combination did.

ColumnCapturesUse it for
style_embeddingAesthetic and styling signals"Same look" — the default retrieval when the product has styles/tags
tags_embeddingDescriptive tags (details, materials, features)Pairs with style for the default strategy
attributes_embeddingStructured attributes (closure, hardware, fit…)Maximum concrete attribute overlap
embeddingGeneral-purpose product representationBroad semantic discovery; the default ranking signal
Demo 1 — Apparel
Kumi Cropped Jacket
Source product · catalog lagence_merchant

Kumi Cropped Jacket

$367.5
Type
jacket
Styles
classic, sophisticated, military-inspired, polished, preppy
Tags
cropped, 3/4 sleeves, gold buttons, embossed buttons, shoulder pads, flap pockets

The styles and tags above are Octogen enrichment — they become the query text for style/tags strategies. Every response below is live data from this catalog.

Default — same look

No tuning parameters

The server composes everything: query text from the source product's enriched styles and tags, retrieval over the style and tags embeddings, plus automatic audience facets (product type, gender, age group). This is the “same look” behavior the platform's Similar by style and tags rail uses.

Attribute-focused retrieval new

retrieval_embedding_columns

Retrieval runs over the attributes embedding, so candidates are pulled in by concrete product attributes — construction, hardware, closures, silhouette — rather than overall styling.

{
  "source": {
    "uuid": "19daa0d1-8d4a-4cb8-aaa6-11a98b005e10"
  },
  "catalog": "lagence_merchant",
  "limit": 6,
  "retrieval_embedding_columns": ["attributes_embedding"]
}

Broad semantic matches new

retrieval_embedding_columns

Retrieval runs over the general-purpose base embedding for wider, discovery-style results — the same strategy as the platform's Broad semantic matches rail.

{
  "source": {
    "uuid": "19daa0d1-8d4a-4cb8-aaa6-11a98b005e10"
  },
  "catalog": "lagence_merchant",
  "limit": 6,
  "retrieval_embedding_columns": ["embedding"]
}

Attribute retrieval, style-ranked new

retrieval + ranking

Two stages working together: candidates are retrieved by attribute closeness, then re-scored by style-embedding similarity. Maximum attribute matches, ordered by closeness of look.

{
  "source": {
    "uuid": "19daa0d1-8d4a-4cb8-aaa6-11a98b005e10"
  },
  "catalog": "lagence_merchant",
  "limit": 6,
  "retrieval_embedding_columns": ["attributes_embedding"],
  "ranking_embedding_columns": ["style_embedding"]
}

Same look, lower price

price_preference

The default “same look” strategy constrained to products priced below the source. “higher” works the same way in the other direction.

{
  "source": {
    "uuid": "19daa0d1-8d4a-4cb8-aaa6-11a98b005e10"
  },
  "catalog": "lagence_merchant",
  "limit": 6,
  "price_preference": "lower"
}
Demo 2 — Luxury resale
Epi Mabillon Backpack Tassil
Source product · catalog fashionphile

Epi Mabillon Backpack Tassil

$595
Type
backpack
Styles
luxury, minimalist
Tags
textured leather, silver-tone hardware, adjustable straps, zip closure

The styles and tags above are Octogen enrichment — they become the query text for style/tags strategies. Every response below is live data from this catalog.

Default — same look

No tuning parameters

The server composes everything: query text from the source product's enriched styles and tags, retrieval over the style and tags embeddings, plus automatic audience facets (product type, gender, age group). This is the “same look” behavior the platform's Similar by style and tags rail uses.

{
  "source": {
    "url": "https://www.fashionphile.com/products/louis-vuitton-epi-mabillon-backpack-tassil-64262"
  },
  "catalog": "fashionphile",
  "limit": 6
}

Attribute-focused retrieval new

retrieval_embedding_columns

Retrieval runs over the attributes embedding, so candidates are pulled in by concrete product attributes — construction, hardware, closures, silhouette — rather than overall styling.

{
  "source": {
    "url": "https://www.fashionphile.com/products/louis-vuitton-epi-mabillon-backpack-tassil-64262"
  },
  "catalog": "fashionphile",
  "limit": 6,
  "retrieval_embedding_columns": ["attributes_embedding"]
}

Broad semantic matches new

retrieval_embedding_columns

Retrieval runs over the general-purpose base embedding for wider, discovery-style results — the same strategy as the platform's Broad semantic matches rail.

{
  "source": {
    "url": "https://www.fashionphile.com/products/louis-vuitton-epi-mabillon-backpack-tassil-64262"
  },
  "catalog": "fashionphile",
  "limit": 6,
  "retrieval_embedding_columns": ["embedding"]
}

Attribute retrieval, style-ranked new

retrieval + ranking

Two stages working together: candidates are retrieved by attribute closeness, then re-scored by style-embedding similarity. Maximum attribute matches, ordered by closeness of look.

{
  "source": {
    "url": "https://www.fashionphile.com/products/louis-vuitton-epi-mabillon-backpack-tassil-64262"
  },
  "catalog": "fashionphile",
  "limit": 6,
  "retrieval_embedding_columns": ["attributes_embedding"],
  "ranking_embedding_columns": ["style_embedding"]
}

Same look, lower price

price_preference

The default “same look” strategy constrained to products priced below the source. “higher” works the same way in the other direction.

{
  "source": {
    "url": "https://www.fashionphile.com/products/louis-vuitton-epi-mabillon-backpack-tassil-64262"
  },
  "catalog": "fashionphile",
  "limit": 6,
  "price_preference": "lower"
}

Beyond these examples