Recommendation API V3

Integrate Unbxd Recommendations API V3 to deliver personalized product recommendations across your ecommerce store.

Overview

The Recommendations API lets you interact with the Unbxd platform and implement all recommendation-related functionality. Unbxd Recommendations are a set of widgets — both pre-defined and customizable. It is designed to showcase personalised product suggestions to shoppers on your web store.

This is the v3.0 successor to the v2.0 /items endpoint. It supports all existing functionality plus variants, store filtering, and a listing mode. The API communicates over HTTP and HTTPS. We recommend using HTTPS.

Endpoint

All recommendation requests use a single GET endpoint. The path includes your API key and site key as path parameters.

Base URL: Method GET

recommendations.unbxd.io/v3.0/{apikey}/{sitekey}/recommendation

This API call fetches recommendations for the corresponding page type for your website.

Authentication

The API uses an API Key and a Site Key to authenticate recommendation requests. These keys are generated at the time of account creation and can be accessed within the Console.

To access your API key, log in to the Netcore Unbxd Recs console and naviagate to User Management > Configure Site > Keys.

Both keys are passed directly in the URL path.

Path Parameters

The following parameters are embedded directly in the endpoint URL path.

ParameterDescriptionRequired
{sitekey}Unique site key for each siteRequired
{apikey}Unique API key for each siteRequired

Request Parameters

Pass these as query string parameters in the request URL.

Field NameTypeRequiredDescription
pageTypeString (enumerated)RequiredPage type for which recommendations are requested. Must be one of: HOME, CATEGORY, PRODUCT, CART, BRAND, JOURNEY.
widgetString (repeated)OptionalWidget IDs to return. Repeat for multiple widgets (e.g., widget=W1&widget=W2). If omitted, all activated widgets are returned.
idString (repeated)ConditionalUnique ID of the product. Repeat for multiple (e.g., id=pid1&id=pid2). Required for PRODUCT and CART page types.
uidStringOptionalUnique visitor ID obtained from the Unbxd userId browser cookie. Applicable to all page types.
catlevel1NameStringConditionalFirst level category name. Required for CATEGORY page type.
catlevel2NameStringConditionalSecond level category name. Required for CATEGORY page type.
catlevel3NameStringConditionalThird level category name. Required for CATEGORY page type.
catlevel4NameStringConditionalFourth level category name. Required for CATEGORY page type.
fieldsString (repeated)OptionalProduct fields to include in the response. Overrides dimension mapping set in the Console.
templateBooleanOptionalInclude template/layout data in the response. Default: false.
debugBooleanOptionalInclude debug diagnostics in the response. Default: false.
netcoreIdStringOptionalNetcore user identifier.
variantsBooleanOptionalEnable product variants in the response. (New in v3.0)
variants.countIntegerOptionalNumber of variants to return per product. (New in v3.0)
store.idStringOptionalFilter recommendations by store ID. (New in v3.0)

Request Headers

HeaderDescriptionDefault
unbxd-device-typeDevice type identifierdesktop-browser

Response Structure

The top-level response object contains the following fields.

  • response.widgets[]: Array of widget responses. Always present. See Experience Response for the structure of each widget object.
  • response.globalTemplateData: Global template assets (buttons, boutiques). Only present when template=true is passed in the request.
  • error: Array of error strings. Only present when errors occur.
  • recsMetaData Request: metadata including queryParams (echoed back) and qtime in milliseconds. Always present.
  • debug Debug diagnostics. Only present when debug=true is passed in the request.

Experience Response

Each object inside response.widgets[] represents a single widget and contains the following fields.

ParameterDescriptionAlways Present
widgetIdWidget identifierYes
widgetPlacementIdPlacement identifierYes
countNumber of recommendations returnedYes
widgetTitleDisplay title for the widgetYes
recommendationsList of product items. Fields within each product are dynamic and based on the catalog configuration.Yes
templateDataTemplate layout data. Only present when template=true is passed in the request.No

Page Type API Calls

The table below shows the v3.0 API call for each supported page type.

MethodUse CaseDescriptionEndpoint
GETHome PageRecommendations for the home pagehttps://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=HOME&uid=<uid>
GETCategory PageRecommendations based on category hierarchyhttps://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=CATEGORY&catlevel1Name=<cat1>&catlevel2Name=<cat2>&catlevel3Name=<cat3>&catlevel4Name=<cat4>&uid=<uid>
GETPDP (Product Detail Page)Recommendations for a specific producthttps://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=PRODUCT&id=<pid>&uid=<uid>
GETCart Page (by UID)Recommendations based on carted products via UIDhttps://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=CART&uid=<uid>
GETCart Page (by PID)Recommendations based on product IDshttps://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=CART&id=<pid1>&id=<pid2>&uid=<uid>
GETBrand PageRecommendations for a specific brandhttps://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=BRAND&brand=<brand>&uid=<uid>
GETJourney / EmailRecommendations for email or journey campaignshttps://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=JOURNEY&widget=<widgetId>
GETWith Variants (New in v3.0)Includes product variants in the responsehttps://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=PRODUCT&id=<pid>&uid=<uid>&variants=true&variants.count=2
GETStore Filtering (New in v3.0)Filters recommendations by storehttps://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=HOME&uid=<uid>&widget=<widgetId>&store.id=<storeId>

Sample Response

The following is a full sample response from the API, including widget recommendations, template data, global template data, and request metadata.

{
  "response": {
    "widgets": [
      {
        "widgetId": "widget1",
        "widgetPlacementId": "widget1",
        "count": 3,
        "recommendations": [
          {
            "analyticsData": {
              "disliked": false,
              "favourited": false,
              "liked": false
            },
            "brand": ["Kincrome"],
            "brandimageurl": "https://www.outbackequipment.com.au/assets/connect/images/brands/kincrome_133844.webp",
            "categoryPath1": ["4x4 & Touring"],
            "categoryPath2": ["Tools & Garage"],
            "categoryPath3": ["Tool Kits"],
            "categoryPath4": ["Portable Tool Kits"],
            "clearance": "false",
            "hasVariants": "false",
            "imageUrl": [
              "https://www.outbackequipment.com.au/assets/full/K1870.webp?ts=1754508381",
              "https://www.outbackequipment.com.au/assets/alt_10/K1870.jpg?ts=1689905920"
            ],
            "perc_off_rrp_a": 25,
            "preorder": "false",
            "price": 559,
            "price_a": 559,
            "price_c": 751,
            "productUrl": "https://www.outbackequipment.com.au/kincrome-portable-automotive-toolkit-150-piece-1-2",
            "promotion_end_utc": "2026-05-04T23:59:00Z",
            "promotion_price_a": 558.5,
            "promotion_start_utc": "2026-04-13T23:30:00Z",
            "sale": "true",
            "sku": "K1870",
            "title": "Kincrome Portable Automotive Toolkit 150 Piece 1/2\" Drive",
            "unbxdAvailability": "true",
            "uniqueId": "566793"
          },
          {
            "analyticsData": {
              "disliked": false,
              "favourited": false,
              "liked": false
            },
            "brand": ["Campfire"],
            "categoryPath1": ["Camping & Outdoors", "Marketing Categories"],
            "categoryPath2": ["Kitchen & Cooking", "In Stock & Ready To Ship"],
            "categoryPath3": ["Camp Ovens"],
            "categoryPath4": ["Cast Iron Camp Ovens"],
            "clearance": "false",
            "hasVariants": "false",
            "perc_off_rrp_a": 29,
            "preorder": "false",
            "price": 119.99,
            "price_a": 119.99,
            "price_c": 169.99,
            "productUrl": "https://www.outbackequipment.com.au/10-quart-oval-camp-oven",
            "promotion_end_utc": "2026-05-04T23:59:00Z",
            "promotion_price_a": 119.49,
            "promotion_start_utc": "2026-04-13T23:30:00Z",
            "sale": "true",
            "sku": "P92OVL-09",
            "title": "Campfire 10 Quart Oval Cast Iron Camp Oven",
            "unbxdAvailability": "true",
            "uniqueId": "466989"
          },
          {
            "analyticsData": {
              "disliked": false,
              "favourited": false,
              "liked": false
            },
            "avg_review": 4.7,
            "brand": ["Hard Korr"],
            "categoryPath1": ["Sale", "Camping & Outdoors", "Electrical"],
            "categoryPath2": ["Camping & Outdoor", "Lighting"],
            "categoryPath3": ["Lanterns", "Tent Lights"],
            "clearance": "false",
            "hasVariants": "false",
            "perc_off_rrp_a": 23,
            "preorder": "false",
            "price": 99.99,
            "price_a": 99.99,
            "price_c": 129,
            "productUrl": "https://www.outbackequipment.com.au/hard-korr-dual-colour-universal-led-lantern-with-i",
            "promotion_end_utc": "2026-05-04T23:59:00Z",
            "promotion_price_a": 99,
            "promotion_start_utc": "2026-04-13T23:30:00Z",
            "review_count": 20,
            "sale": "true",
            "sku": "HKUNILITH4",
            "title": "Hard Korr Dual Colour Universal LED Lantern with Inbuilt Lithium Battery 4 Pack",
            "unbxdAvailability": "true",
            "uniqueId": "323582"
          }
        ],
        "widgetTitle": "CATEGORY TOP SELLERS",
        "templateData": {
          "uuid": "5e6a2f4d-1e75-436e-9e52-b8562370e135",
          "scriptUrl": "https://d3oudgusdzf61y.cloudfront.net/recs_templates/...",
          "device": "desktop browser",
          "format": "json",
          "name": "Cart-desktop-page",
          "conf": {
            "header": {
              "alignment": "left",
              "type": "text",
              "text": {
                "size": { "unit": "px", "value": "16" },
                "style": "bold"
              }
            },
            "css": ".unbxd-recs-container .unx-slick .slick-track{display:flex!important} ...",
            "products": {
              "currency": "$",
              "fields": [
                { "catalogKey": "image_url",      "display": "Images", "sequence": 1, "unbxdDimensionKey": "imageUrl" },
                { "catalogKey": "product_rating",  "display": "Rating", "sequence": 2, "unbxdDimensionKey": "rating" },
                { "catalogKey": "product_title",   "display": "Title",  "sequence": 3, "unbxdDimensionKey": "title" },
                { "catalogKey": "product_price",   "display": "Price",  "sequence": 4, "unbxdDimensionKey": "price" }
              ],
              "fieldsCount": 3,
              "max": 18,
              "visible": 8,
              "visibleOn": { "desktop": 4, "mobile": 2 }
            },
            "templateType": "standard_widget",
            "customProperties": {
              "basedOn": "",
              "button": { "content": "", "name": "", "position": "" },
              "widgetCondition": { "Listenon": "", "callback": "", "event": "" },
              "widgetType": 1
            },
            "numRecs": "6",
            "maxRecs": "18",
            "addonDetails": {},
            "width": { "unit": "px", "value": "900" },
            "assets": [
              { "tag": "next_arrow",   "src": "https://d3m8huu8gvuyn3.cloudfront.net/rex_template_content/static/images/recs-slider-next.svg" },
              { "tag": "prev_arrow",   "src": "https://d3m8huu8gvuyn3.cloudfront.net/rex_template_content/static/images/recs-slider-prev.svg" },
              { "tag": "full_rating",  "src": "https://d3m8huu8gvuyn3.cloudfront.net/rex_template_content/static/images/full-star.svg" },
              { "tag": "half_rating",  "src": "https://d3m8huu8gvuyn3.cloudfront.net/rex_template_content/static/images/half-star.svg" },
              { "tag": "empty_rating", "src": "https://d3m8huu8gvuyn3.cloudfront.net/rex_template_content/static/images/empty-star.svg" }
            ],
            "orientation": "horizontal"
          }
        }
      },
      {
        "widgetId": "widget2",
        "widgetPlacementId": "widget2",
        "count": 0,
        "recommendations": [],
        "widgetTitle": null
      },
      {
        "widgetId": "widget3",
        "widgetPlacementId": "widget3",
        "count": 0,
        "recommendations": [],
        "widgetTitle": null
      }
    ],
    "globalTemplateData": {
      "addOnAssets": {
        "dislikeButton": {
          "selectedIconSrc":   "https://d3oudgusdzf61y.cloudfront.net/global_addons/dislike1/dislikeSelected.svg",
          "unselectedIconSrc": "https://d3oudgusdzf61y.cloudfront.net/global_addons/share2/share2.svg"
        }
      }
    }
  },
  "recsMetaData": {
    "qtime": 1660,
    "queryParams": {
      "catlevel1Name": ["4x4 & Touring"],
      "pageType":      ["CATEGORY"],
      "template":      ["true"],
      "uid":           ["uid-1773808901754-25588"]
    }
  }
}

Migration from V2

The following table summarises every breaking change between v2.0 and v3.0. All other behaviour remains the same.

Changev2.0v3.0
Endpoint path/v2.0/{apikey}/{site}/items/v3.0/{apikey}/{site}/recommendation
Widget parameter namewidgets (plural)widget (singular, repeated)
Response wrapperFlat widget map (WIDGET1: {...})response.widgets[] array with widgetId field
Response metadataMinimalrecsMetaData with query params echo and qtime
Variants supportNot supportedvariants=true&variants.count=N
Store filteringNot supportedstore.id=<storeId>