GET
/
v1
/
recommendations
/
product
Get product recommendations
curl --request GET \
  --url https://api.hofj.com/v1/recommendations/product \
  --header 'Authorization: Bearer <token>'
{
  "data": {
    "sourceProductId": 123,
    "locale": "<string>",
    "recommendations": [
      {
        "recommendedProductId": 123,
        "recommendedSlug": "<string>",
        "rankPosition": 123,
        "recommendationType": "<string>",
        "finalScore": 123,
        "coviewWeightedScore": 123,
        "v2pWeightedScore": 123,
        "freshnessScore": 123,
        "coviewFrequency": 123,
        "v2pFrequency": 123
      }
    ]
  },
  "meta": {
    "brand": "<string>",
    "channelId": 123,
    "cacheLoadedAt": "2023-11-07T05:31:56Z"
  }
}

Authorizations

Authorization
string
header
default:dev-internal-api-key
required

Use Authorization: Bearer <access_token> from POST /v1/oauth/token, or Authorization: Bearer <api_key>. Dev-only example key (do not use in production): see repository README.

Query Parameters

brand
string

Distribution channel brand: matches channel name or domainUrl (e.g. Weebora, weebora.com, booking.hofj.com, terrarossa.com). The resolved domain is BOTH the upstream host AND the tenant routing value. If omitted, CONTENT_DEFAULT_CHANNEL_DOMAIN must be set server-side.

locale
enum<string>

Locale for the brand site (it, en, es, fr). Injected as /{locale}/api/... on the upstream call. Defaults to CONTENT_DEFAULT_LOCALE.

Available options:
it,
en,
es,
fr
product_id
integer
required

Currently viewed product ID.

Required range: x >= 1
top_n
integer
default:10

Number of recommendations to return.

Required range: 1 <= x <= 20
slim
boolean
default:false

If true, returns lightweight items from the recommender upstream.

Response

Product recommendations

data
object
required
meta
object
required