API reference

Catalog

Catalog endpoints provide access to product data, including brands, categories, products, variants, inventory, images, and pricing.


GET /Catalog/Brands

Retrieve the complete list of brands.

Parameters

No parameters required.

Refresh Schedule

Brands is refreshed once per day.

Example

Request

const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY

const res = await fetch(`${baseUrl}/Catalog/Brands`, {
  headers: { Authorization: apiKey, language: 'en' },
})

const brands = await res.json()

Response

{[{
  "Id": 0,
  "Name": "string"
}]}

GET /Catalog/Categories

Retrieve the hierarchical category tree including primary, sub, and tertiary levels.

Parameters

No parameters required.

Refresh Schedule

Categories are refreshed once per day.

Example

Request

const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY

const res = await fetch(`${baseUrl}/Catalog/Categories`, {
  headers: { Authorization: apiKey, language: 'en' },
})

const categories = await res.json()

Response

{[{
  "CategoryId": 0,
  "CategoryName": "string",
  "SubCategories": [{
                     "CategoryId": 0,
                     "CategoryName": "string",
                     "SubCategories": [{}]
                   }]
}]}

GET /Catalog/Products

Retrieve products and their variants.

Important

We recommand that you get all the products and cache them.

Parameters

The following request parameters are available:

ParameterDescription
dateFromStarting date from which the content will be returned. The following formats are supported 'mm/dd/yyyy' and 'yyyy-mm-dd'.
skusFilter the result by skus. Example of a valid filter : ?skus=460181-S-001,460181-M-001 or ?skus=460181 or ?skus=4601
categoriesFilter the result by categories. Example of a valid filter : ?categories=Apparel,Bikes<br/><br/>Download the mapping table
brandsFilter the result by brands. Example of a valid filter : ?brands=Evo,Eclypse
statusFilter the result by variant status. Possible values are {8 = Discontinued by HLC, 9 = Discontinued by the supplier, 7 = Active /Automatically includes status IDs 10 and 13, which also mean Active but cannot be retrieved individually/ , 11 = Inactive}
pricesFilter the result by price type. Possible values are {0 = Base (original price), 1 = Sale, 2 = Closeout, 3 = MAP, 4 = MSRP, 5 = Program}.
barcodesFilter the result by barcode (EAN/UPC). Multiple comma-separated barcodes can be requested.
mfgPartNumbersFilter the result by manufacturing part number. Multiple comma-separated numbers can be requested.

Refresh Schedule

Products are updated one once per day.

Example

Request

const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY

const res = await fetch(`${baseUrl}/Catalog/Products`, {
  headers: { Authorization: apiKey, language: 'en' },
})

const products = await res.json()

Response

{[{
  "ProductNo": "string",
  "Name": "string",
  "Description": "string",
  "BrandId": 0,
  "Brand": "string",
  "DateCreated": "2018-11-20T20:54:07.239Z",
  "DateLastModified": "2018-11-20T20:54:07.239Z",
  "Taxable": true,
  "Variants": [{
                "VariantNo": "string",
                "Description": "string",
                "StatusId": 0,
                "StatusDesc": "string",
                "UPC": "string",
                "EAN": "string",
                "Config": "string",
                "SizeId": "string",
                "ColorId": "string",
                "ProductDimensionGroup": "string",
                "Dimensions": {
                               "Weight": 0,
                               "Length": 0,
                               "Width": 0,
                               "Height": 0
                              },
                "MFGPartNumber": "string",
                "GroundOnly": true,
                "DateLastModified": "2018-11-20T20:54:07.239Z",
                "Attributes": [{
                                "Name": "string",
                                "Value": "string"
                              }],
                "Prices": [{
                             "Amount": 0,
                             "TypeId": 0,
                             "Type": "string",
                             "QtyBreak": 0
                           }],
                "Images": [{
                             "Format": "string",
                             "Url": "string"
                           }],
                "CanBeFulFilled": true
               }],
  "Categories": [{
                  "CategoryId": 0,
                  "CategoryName": "string",
                  "Level": 0
                }]
}]}

GET /Catalog/Products/Inventory

Retrieve inventory levels by SKU.

Important

Inventory data is near real-time. Rate limiting applies to prevent API abuse. Excessive polling (e.g., checking individual SKUs every 5 minutes) will result in throttling or account penalties.

Parameters

The following request parameters are available:

ParameterDescription
dateFromStarting date from which the content will be returned. The following formats are supported 'mm/dd/yyyy' and 'yyyy-mm-dd'.<br/><br/>The dateFrom parameter value is checked against an internal date representing the variant's last quantity update. This means that only quantities modified after the dateFrom value will be returned.<br/><br/>The time of day (hh:mm:ss) can also be set to reduce even more the scope of data that will be retrieved. So for example, this date and time would be valid: 2021-02-10 11:50:00
skusFilter the result by skus. Example of a valid filter : ?skus=460181-S-001,460181-M-001 or ?skus=460181 or ?skus=4601
statusFilter the result by variant status. Possible values are {8 = Discontinued by HLC, 9 = Discontinued by the supplier, [7, 10, 13] = Active, 11 = Inactive}
mfgPartNumbersFilter the result by manufacturing part number. Multiple comma-separated numbers can be requested.

Refresh Schedule

Data is updated in near real-time.

Example

Request

const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY

const res = await fetch(`${baseUrl}/Catalog/Products/Inventory?sku=020056-07`, {
  headers: { Authorization: apiKey, language: 'en' },
})

const inventory = await res.json()

Response

[{
  "VariantId": 0,
  "VariantNo": "string",
  "ProductId": 0,
  "AddedToWatchList": true,
  "StatusId": 0,
  "StatusDescription": "string",
  "WarehousesQuantities": [{
                            "Id": 0,
                            "Name": "string",
                            "QtyAvailable": 0
                            "NextDueDate": "2018-11-23T21:07:27.976Z"
                          }],
  "TotalQtyAvailable": 0
  "NextDueDate": "2018-11-23T21:07:27.976Z" (Lowest Date)
}]

GET /Catalog/Products/Images

Retrieve CDN URLs for product variant images.

Parameters

The following request parameters are available:

ParameterDescription
skusFilter the result by skus. Example of a valid filter : ?skus=460181-S-001,460181-M-001 or ?skus=460181 or ?skus=4601

Refresh Schedule

Images is refreshed once per day.

Example

Request

const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY

const res = await fetch(`${baseUrl}/Catalog/Products/Images?sku=020056-07`, {
  headers: { Authorization: apiKey, language: 'en' },
})

const images = await res.json()

Response

{[{
  "VariantNo": "string",
  "ProductNo": "string",
  "Images": [{
              "Format": "string",
              "Url": "string"
            }]
}]}

GET /Catalog/Products/Prices

Retrieve pricing information for specific SKUs.

Important

Prices returned by this endpoint may not reflect the final checkout price due to additional promotions or discounts. Always validate final pricing using the /Orders/Prices endpoint before completing an order.

Parameters

ParameterDescription
skusFilter the result by skus. Example of a valid filter : ?skus=460181-S-001,460181-M-001 or ?skus=460181 or ?skus=4601

Refresh Schedule

Data is refreshed once per day.

Example

Request

const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY

const res = await fetch(`${baseUrl}/Catalog/Products/Prices?sku=020056-07`, {
  headers: { Authorization: apiKey, language: 'en' },
})

const prices = await res.json()

Response

[
  {
    "VariantNo": "string",
    "ProductNo": "string",
    "Prices": [
      {
        "Price": 0,
        "PriceTypeId": 0,
        "PriceTypeDesc": "string",
        "QtyBreak": 0
      }
    ]
  }
]
Previous
Authentication
Next
Orders