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.
| Parameter | Description | Required |
|---|---|---|
{sitekey} | Unique site key for each site | Required |
{apikey} | Unique API key for each site | Required |
Request Parameters
Pass these as query string parameters in the request URL.
| Field Name | Type | Required | Description |
|---|---|---|---|
| pageType | String (enumerated) | Required | Page type for which recommendations are requested. Must be one of: HOME, CATEGORY, PRODUCT, CART, BRAND, JOURNEY. |
| widget | String (repeated) | Optional | Widget IDs to return. Repeat for multiple widgets (e.g., widget=W1&widget=W2). If omitted, all activated widgets are returned. |
| id | String (repeated) | Conditional | Unique ID of the product. Repeat for multiple (e.g., id=pid1&id=pid2). Required for PRODUCT and CART page types. |
| uid | String | Optional | Unique visitor ID obtained from the Unbxd userId browser cookie. Applicable to all page types. |
| catlevel1Name | String | Conditional | First level category name. Required for CATEGORY page type. |
| catlevel2Name | String | Conditional | Second level category name. Required for CATEGORY page type. |
| catlevel3Name | String | Conditional | Third level category name. Required for CATEGORY page type. |
| catlevel4Name | String | Conditional | Fourth level category name. Required for CATEGORY page type. |
| fields | String (repeated) | Optional | Product fields to include in the response. Overrides dimension mapping set in the Console. |
| template | Boolean | Optional | Include template/layout data in the response. Default: false. |
| debug | Boolean | Optional | Include debug diagnostics in the response. Default: false. |
| netcoreId | String | Optional | Netcore user identifier. |
| variants | Boolean | Optional | Enable product variants in the response. (New in v3.0) |
| variants.count | Integer | Optional | Number of variants to return per product. (New in v3.0) |
| store.id | String | Optional | Filter recommendations by store ID. (New in v3.0) |
Request Headers
| Header | Description | Default |
|---|---|---|
| unbxd-device-type | Device type identifier | desktop-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.debugDebug 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.
| Parameter | Description | Always Present |
|---|---|---|
| widgetId | Widget identifier | Yes |
| widgetPlacementId | Placement identifier | Yes |
| count | Number of recommendations returned | Yes |
| widgetTitle | Display title for the widget | Yes |
| recommendations | List of product items. Fields within each product are dynamic and based on the catalog configuration. | Yes |
| templateData | Template 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.
| Method | Use Case | Description | Endpoint |
|---|---|---|---|
| GET | Home Page | Recommendations for the home page | https://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=HOME&uid=<uid> |
| GET | Category Page | Recommendations based on category hierarchy | https://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=CATEGORY&catlevel1Name=<cat1>&catlevel2Name=<cat2>&catlevel3Name=<cat3>&catlevel4Name=<cat4>&uid=<uid> |
| GET | PDP (Product Detail Page) | Recommendations for a specific product | https://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=PRODUCT&id=<pid>&uid=<uid> |
| GET | Cart Page (by UID) | Recommendations based on carted products via UID | https://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=CART&uid=<uid> |
| GET | Cart Page (by PID) | Recommendations based on product IDs | https://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=CART&id=<pid1>&id=<pid2>&uid=<uid> |
| GET | Brand Page | Recommendations for a specific brand | https://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=BRAND&brand=<brand>&uid=<uid> |
| GET | Journey / Email | Recommendations for email or journey campaigns | https://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=JOURNEY&widget=<widgetId> |
| GET | With Variants (New in v3.0) | Includes product variants in the response | https://recommendations.unbxd.io/v3.0/<apiKey>/<sitekey>/recommendation?pageType=PRODUCT&id=<pid>&uid=<uid>&variants=true&variants.count=2 |
| GET | Store Filtering (New in v3.0) | Filters recommendations by store | https://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.
| Change | v2.0 | v3.0 |
|---|---|---|
| Endpoint path | /v2.0/{apikey}/{site}/items | /v3.0/{apikey}/{site}/recommendation |
| Widget parameter name | widgets (plural) | widget (singular, repeated) |
| Response wrapper | Flat widget map (WIDGET1: {...}) | response.widgets[] array with widgetId field |
| Response metadata | Minimal | recsMetaData with query params echo and qtime |
| Variants support | Not supported | variants=true&variants.count=N |
| Store filtering | Not supported | store.id=<storeId> |
Updated about 2 hours ago
