RecomNext
Use CasesFeaturesHow it WorksWhy RecomNextPricingResourcesAPI DocsLogin

Importing the product catalog

Load items into RecomNext via direct API upserts or scheduled catalog feeds. Configure dimensions, field mapping, freshness, and embedding templates so recommendations, nextQL, and vector search work correctly.

API base URLs
Engine API base URLAdmin UI
https://api.recomnext.comhttps://admin.recomnext.com

Use the engine base URL as baseUrl in widgets and SDKs.

Catalog model

Each item has a stable externalId (your SKU or product ID), an optional top-levelcategory, and a flexible attributes object. Recommendations returnitemId, which matches externalId from ingestion.

SettingTypeDefaultDescription
externalIdstringRequired. Primary catalog key from your system.
categorystringOptional. Used in filters, diversity, and fallbacks.
attributesobjectPrice, stock, images, genres, etc. Referenced in nextQL as quoted keys.
expiresAtISO dateOptional. Catalog metadata for expiry; does not auto-delete items.
Method A — Direct API ingestion

Best for real-time updates, ERP sync, and incremental price or stock changes. Requires API key or HMAC private token — not browser public tokens.

Request
POST https://api.recomnext.com/ingestion/items
Content-Type: application/json
X-Tenant-Id: aurora-games
X-Api-Key: rnx_key_...

{
  "items": [
    {
      "externalId": "game-elden-ring",
      "category": "pc",
      "attributes": {
        "name": "Elden Ring",
        "price": 59.99,
        "stock": 120,
        "genre": ["rpg", "action"],
        "featured": true,
        "releaseDate": "2022-02-25"
      }
    },
    {
      "externalId": "game-hades",
      "category": "pc",
      "attributes": {
        "name": "Hades",
        "price": 24.99,
        "stock": 0,
        "genre": ["roguelike"]
      }
    }
  ]
}
Response
{ "upserted": 2 }
Use case
Real-time stock and price sync

Your OMS pushes deltas every few minutes. Upsert only changed SKUs in batches of 100–500. Use a global in-stock rule or scenario filter'stock' > 0 — out-of-stock items remain in catalog for analytics.

await client.ingestion.upsertItems([
  { externalId: 'game-hades', category: 'pc', attributes: { stock: 45, price: 19.99 } },
]);
Use case
New release day

Add the SKU with rich attributes before marketing goes live. Set featured: true and pair with a booster in the homepage scenario.

Method B — Catalog feeds

Best for nightly or hourly full-catalog sync from a partner API or JSON URL. One active feed per tenant.

SettingTypeDefaultDescription
sourceTypeapi | json_urlPull from REST API or static JSON URL.
itemsPathJSONPathPath to array of raw items, e.g. $.data
itemIdPathpathField for externalId, e.g. sku
mappingRulesarrayMaps source fields to attributes, category, or semantic targets.
paginationobjectnone, cursor, or limit_offset for large catalogs.
scheduleModemanual | interval | cronWhen sync runs automatically.
Example feed configuration
POST https://api.recomnext.com/catalog/feeds
{
  "sourceType": "api",
  "url": "https://catalog.auroragames.example/v1/products",
  "method": "GET",
  "itemsPath": "$.data",
  "itemIdPath": "sku",
  "pagination": {
    "mode": "cursor",
    "cursorParam": "cursor",
    "cursorPath": "$.nextCursor",
    "pageSize": 200
  },
  "mappingRules": [
    { "property": "name", "path": "title", "dataType": "string", "target": "name" },
    { "property": "price", "path": "pricing.usd", "dataType": "double", "target": "basePrice" },
    { "property": "coverUrl", "path": "media.cover", "dataType": "image", "target": "coverImage" },
    { "property": "genre", "path": "tags", "dataType": "enum", "target": "attributes", "facetable": true },
    { "property": "stock", "path": "inventory.available", "dataType": "int", "target": "attributes" }
  ]
}

Workflow: POST /catalog/feeds/:id/previewactivatesync. Items not seen in a sync can be marked available: false (see availability below).

Use case
Multi-region catalog with nested JSON

Map regional price into attributes.price_us and attributes.price_eu. SetfieldMapper.basePricePath to the region you surface in widgets, or include both inincludedProperties when fetching recs.

Dimensions

Dimensions describe attribute metadata for admin UI, faceting, and nextQL discoverability. They do not replace storing values on items — they document what 'genre' or 'platform' means.

PUT https://api.recomnext.com/catalog/tenant-settings
{
  "dimensions": [
    {
      "key": "genre",
      "type": "enum",
      "label": "Genre",
      "facetable": true,
      "filterable": true,
      "boostable": true,
      "source": "manual"
    },
    {
      "key": "platform",
      "type": "string",
      "label": "Platform",
      "filterable": true
    }
  ]
}
SettingTypeDefaultDescription
typeenum | string | number | boolean | dateHow the attribute is interpreted.
facetablebooleanEligible for search facets (with hybrid search).
filterablebooleanShown as filterable in admin and nextQL tooling.
boostablebooleanDocumented as safe for booster expressions.
sourcemanual | feedfeed dimensions can be merged from catalog feed sync.
Field mapper (mappings)

When your stored JSON is not flat attributes.*, configure paths for admin display and semantic feed targets. This does not change projection paths — use literal document paths in includedProperties.

PUT https://api.recomnext.com/catalog/tenant-settings
{
  "fieldMapper": {
    "externalIdPath": "attributes.sku",
    "namePath": "attributes.title",
    "categoryPath": "attributes.platform",
    "coverImagePath": "attributes.media.cover",
    "basePricePath": "attributes.pricing.usd",
    "taxonomyPath": "attributes.taxonomyPath"
  }
}
SettingTypeDefaultDescription
externalIdPathpathDisplay identity when not top-level externalId.
namePathpathProduct title for admin and widgets.
coverImagePathpathPrimary image URL.
basePricePathpathDefault price field for cards.
taxonomyPathpathCategory tree or breadcrumb path.
Freshness configuration

Freshness tells the engine which attribute represents item age for scenario constraintfreshnessBoostDays (ranking boost, not hard filtering).

{
  "freshness": {
    "keyPath": "attributes.releaseDate",
    "type": "date",
    "fallbackToCreatedAt": true
  }
}
Use case
Boost new releases on homepage

Set freshnessBoostDays: 14 on the homepage scenario. Items with release dates in the last 14 days get a scoring boost. For hard cutoffs, add a scenario filter like'releaseDate' > '2026-01-01' (depends on stored format).

Embedding templates

Similar-products and vector search embed item text derived from templates. After upsert, indexing runs asynchronously when a template exists.

SettingTypeDefaultDescription
slugstringTemplate identifier for category-specific overrides.
templatestringFormat string: {name}, {category}, {description}, plus attribute keys.
isDefaultbooleanTenant fallback when no category match.
appliesTostring[]Categories using this template.
POST https://api.recomnext.com/catalog/embedding-templates
{
  "name": "Games default",
  "slug": "games-default",
  "template": "{name} | {category} | genres: {genre} | {description}",
  "isDefault": true,
  "appliesTo": []
}
Use case
Category-specific templates

PC games include platform and genre; DLC items emphasize parent game name. Create templates withappliesTo: ["pc", "console"] for richer vectors on PDP similar-products.

Availability and lifecycle

Distinguish out of stock (attribute, filter with nextQL) from delisted(feed-managed available: false). Recommendations generally exclude unavailable items.

SettingTypeDefaultDescription
attributes.stocknumberBusiness stock; use filters to hide from recs.
availablebooleanSet false when item missing from feed sync.
feedManagedbooleanItem owned by active catalog feed.
Related guides
APIs and tokensScenariosnextQLAPI — tenant settings