GET
/
v1
/
recommendations
/
destination
Get destination recommendations
curl --request GET \
  --url https://api.hofj.com/v1/recommendations/destination \
  --header 'Authorization: Bearer <token>'
{
  "data": {
    "category": "<string>",
    "destination": "<string>",
    "locale": "<string>",
    "products": [
      {
        "productId": 123,
        "productSlug": "<string>",
        "rankPosition": 123,
        "combinedScore": 123,
        "viewWeightedScore": 123,
        "bookingWeightedScore": 123,
        "freshnessScore": 123,
        "totalViews": 123,
        "totalBookings": 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
destination
string
required

Destination slug, for example madrid, barcellona, or all.

top_n
integer
default:10

Number of products to return.

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

If true, returns lightweight items from the recommender upstream.

Response

Destination recommendations

data
object
required
meta
object
required