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:
| Parameter | Description |
|---|---|
| dateFrom | Starting date from which the content will be returned. The following formats are supported 'mm/dd/yyyy' and 'yyyy-mm-dd'. |
| skus | Filter the result by skus. Example of a valid filter : ?skus=460181-S-001,460181-M-001 or ?skus=460181 or ?skus=4601 |
| categories | Filter the result by categories. Example of a valid filter : ?categories=Apparel,Bikes<br/><br/>Download the mapping table |
| brands | Filter the result by brands. Example of a valid filter : ?brands=Evo,Eclypse |
| status | Filter 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} |
| prices | Filter the result by price type. Possible values are {0 = Base (original price), 1 = Sale, 2 = Closeout, 3 = MAP, 4 = MSRP, 5 = Program}. |
| barcodes | Filter the result by barcode (EAN/UPC). Multiple comma-separated barcodes can be requested. |
| mfgPartNumbers | Filter 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:
| Parameter | Description |
|---|---|
| dateFrom | Starting 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 |
| skus | Filter the result by skus. Example of a valid filter : ?skus=460181-S-001,460181-M-001 or ?skus=460181 or ?skus=4601 |
| status | Filter the result by variant status. Possible values are {8 = Discontinued by HLC, 9 = Discontinued by the supplier, [7, 10, 13] = Active, 11 = Inactive} |
| mfgPartNumbers | Filter 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:
| Parameter | Description |
|---|---|
| skus | Filter 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
| Parameter | Description |
|---|---|
| skus | Filter 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
}
]
}
]