API reference
Orders
Order endpoints handle the complete order lifecycle, from creation to tracking. Supports both doorstep and season order fulfillment.
GET /Carts
Retrieve saved shopping carts created via the API or B2B portal.
Parameters
No query parameters required beyond standard headers.
Refresh Schedule
Data is updated in 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}/Carts`, {
headers: { Authorization: apiKey, language: 'en' },
})
const carts = await res.json()
Response
[
{
"CartId": 0,
"PONumber": "string",
"Note": "string",
"Items": [
{
"VariantNo": "string",
"Quantity": 0,
"Note": "string"
}
]
}
]
POST /Carts
Create a new shopping cart for customer continuation. The system tracks the cart origin for reference.
Payload
All fields marked with * are optional.
{
*"PONumber": "string",
*"Note": "string",
"Items": [{
"Sku": "020056-07",
"Quantity": 0,
*"Note": "string"
}]
}
Important
The sku variable could be either the HLC variant number, UPC, EAN or Vendor Number.
Example
Request
const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY
const res = await fetch(`${baseUrl}/Carts/Create`, {
method: 'POST',
headers: {
Authorization: apiKey,
language: 'en',
'Content-Type': 'application/json',
},
body: JSON.stringify({
cartName: 'Spring 2026 Order',
items: [
{ variantNo: '020056-07', quantity: 5 },
{ variantNo: '030012-M', quantity: 3 },
],
}),
})
const cart = await res.json()
Response
{
"CartId": 0
}
POST /Orders/Prices
Retrieve order pricing for validation before order submission.
Important
Originally introduced in API version 4.0, now available across all API versions.
Payload
{
"OrderLines": [
{
"Sku": "string",
"Quantity": 0
}
]
}
Example
Request
const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY
const res = await fetch(`${baseUrl}/Orders/Prices`, {
method: 'POST',
headers: {
Authorization: apiKey,
language: 'en',
'Content-Type': 'application/json',
},
body: JSON.stringify({
OrderLines: [
{
Sku: '500027-01',
Quantity: 1,
},
{
Sku: '620185-05',
Quantity: 2,
},
{
Sku: '030152-04',
Quantity: 10,
},
],
}),
})
const order = await res.json()
Response
{
"ResponseLines": [
{
"LineTotal": 0,
"ItemPrice": 0,
"OriginalPrice": 0,
"Sku": "string",
"Quantity": 0
}
],
"OrderSubTotal": 0
}
GET /Orders
Retrieve order history with line item details.
Parameters
The following request parameters are available:
| Parameter | Description |
|---|---|
| dateFrom | Starting date from which orders will be returned. Supported formats: 'mm/dd/yyyy' and 'yyyy-mm-dd'. |
| dateTo | Ending date up to which orders will be returned. Supported formats: 'mm/dd/yyyy' and 'yyyy-mm-dd'. |
Refresh Schedule
Data is refreshed 4 times daily.
Example
Request
const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY
const res = await fetch(
`${baseUrl}/Orders?dateFrom=2026-01-01&dateTo=2026-01-31`,
{ headers: { Authorization: apiKey, language: 'en' } },
)
const orders = await res.json()
Response
[{
"OrderId": 0,
"AccountNo": "string",
"OrderNumber": "string",
"OrderDate": "2017-03-21T16:39:36.950Z",
"OrderDateText": "string",
"OrderDateHourText": "string",
"StoreName": "string",
"ShippingAddress": {
"Street": "string",
"City": "string",
"State": "string",
"PostalCode": "string"
},
"CartName": "string",
"PoNumber": "string",
"LanguageId": "string",
"OrderType": "string",
"OrderStatus": "string" (Processing, Invoiced),
"SubTotal": 0,
"PaymentTerms": "string",
"PaymentMethod": "string",
"SubmittedBy": "string",
"NumShipments": 0,
"OrderLines": [{
"LineId": 0,
"VariantNo": "string",
"Description": "string",
"Qty": 0,
"NetPrice": 0,
"DisplayNetPrice": "string",
"Note": "string",
"NetAmount": 0,
"DisplayNetAmount": "string",
"KitVariantNo": "string",
"KitSeqNo": "string",
"LabelPrice": 0,
"LabelPriceFormatted": "string",
"DealerBarcode": "string"
}]
}]
POST /Orders/Create/FulFillment
Create fulfillment orders.
Important
This endpoint is deprecated but remains functional for v3.0 compatibility. Use /Orders/FulFillment for v4.0+ implementations. Request body schemas differ between versions.
Parameters
No query parameters required. Request body contains order details.
Payload
All fields marked with * are optional.
{
*"OrderOptions":{
"PONumber": "string",
"Note": "string"
},
"ShippingOptions":{
*"CarrierAccountNumber": "string",
"SignatureRequired": false|true,
*"DocumentLanguage": "en|fr",
"DeliveryAddress":{
"ContactName": "string",
"Street": "string",
"City": "string",
"State": "string",
"ZipCode": "string",
"CountryCode": "ca|us",
*"PrimaryPhoneNumber": "phone"
}
},
"ReturnOptions":{
*"ReturnAddressID": 1
},
"Items":[{
"Sku": "020056-07",
"Quantity": 0,
*"Note": "string"
}]
}
- If ReturnAddressID is not sent, the service will take by default the address that is set on the My Account > Doorstep Delivery preferences page. Otherwise, the ID should be retrieved by calling the Account/Addresses function, and taking the ID of the address of Type Shipping that you want as a return address.
- The State of the DeliveryAddress must be the abbreviated (2 letters) code. Please refer to the State Codes table below.
- Please be advised that **the Note in the OrderOptions is the equivalent of the Special Processing Instructions ** in the cart when submitting an order through the website. This means that one of our team members will be required to personally review this order. This may cause a delay in processing, and ultimately, in delivery.
Example
Request
const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY
const res = await fetch(`${baseUrl}/Orders/Create/FulFillment`, {
method: 'POST',
headers: {
Authorization: apiKey,
language: 'en',
'Content-Type': 'application/json',
},
body: JSON.stringify({
items: [{ variantNo: '020056-07', quantity: 2 }],
shippingAddress: {
name: 'John Doe',
address1: '123 Main St',
city: 'Springfield',
state: 'IL',
zip: '62701',
},
}),
})
const order = await res.json()
Response
{
"CartId": 123456
}
POST /Orders/FulFillment
Create fulfillment orders.
Important
Available in API version 4.0 and later.
Parameters
No query parameters required. Request body contains order details.
Payload
{
"ShippingAddress": {
"Name": "string",
"Street": "string",
"City": "string",
"StateCode": "None",
"ZipCode": "string",
"CountryCode": "None",
"PrimaryPhoneNumber": "string",
"IsResidential": true
},
"Note": "string",
"PurchaseOrderNumber": "string",
"SignatureRequired": true,
"DocumentLanguage": "string",
"OrderLines": [
{
"Sku": "string",
"Quantity": 0,
"Note": "string",
"Warehouse": "string"
}
]
}
- If ReturnAddressID is not sent, the service will take by default the address that is set on the My Account > Doorstep Delivery preferences page. Otherwise, the ID should be retrieved by calling the Account/Addresses function, and taking the ID of the address of Type Shipping that you want as a return address.
- The State of the DeliveryAddress must be the abbreviated (2 letters) code. Please refer to the State Codes table below.
- Please be advised that **the Note in the OrderOptions is the equivalent of the Special Processing Instructions ** in the cart when submitting an order through the website. This means that one of our team members will be required to personally review this order. This may cause a delay in processing, and ultimately, in delivery.
Example
Request
const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY
const res = await fetch(`${baseUrl}/Orders/Create/FulFillment`, {
method: 'POST',
headers: {
Authorization: apiKey,
language: 'en',
'Content-Type': 'application/json',
},
body: JSON.stringify({
DocumentLanguage: 'en',
OrderLines: [
{
Sku: '010828-01-26',
Quantity: 1,
Note: 'Demo',
Warehouse: '',
},
],
PurchaseOrderNumber: 'PO#1000',
ShippingAddress: {
Name: 'John Doe',
Street: '1000 BestBike East',
City: 'North Vancouver',
StateCode: 'BC',
ZipCode: 'V7L 1A4',
CountryCode: 'CAN',
PrimaryPhoneNumber: '+16466756646',
isResidential: true,
},
SignatureRequired: 'true',
Note: 'THIS IS A TEST',
}),
})
const order = await res.json()
Response
{
"id": "string",
"Status": "string",
"ContactEmailAddress": "string",
"PurchaseOrderNumber": "string"
}
POST /Orders/Season
Create season orders.
Important
Originally introduced in API version 4.0, now available across all API versions.
Parameters
No query parameters required. Request body contains order details.
Payload
{
"DeliveryLocationId": 0,
"PurchaseOrderNumber": "string",
"OrderLines": [
{
"Sku": "string",
"Quantity": 0,
"Note": "string",
"Warehouse": "string"
}
],
"Note": "string"
}
Example
Request
const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY
const res = await fetch(`${baseUrl}/Orders/Create/FulFillment`, {
method: 'POST',
headers: {
Authorization: apiKey,
language: 'en',
'Content-Type': 'application/json',
},
body: JSON.stringify({
DeliveryLocationId: 1,
Note: '',
PurchaseOrderNumber: 'PO#10000',
OrderLines: [
{
Sku: '751417-01',
Quantity: 1,
Note: 'Demo',
Warehouse: '',
},
{
Sku: '891049-01',
Quantity: 1,
Note: 'Demo',
Warehouse: '',
},
],
}),
})
const order = await res.json()
Response
{
"id": "string",
"Status": "string",
"ContactEmailAddress": "string",
"PurchaseOrderNumber": "string"
}
GET /Orders/Packages
Retrieve shipment tracking information for your orders.
Parameters
The following request parameters are available:
| Parameter | Description |
|---|---|
| orderNumber | The order number to track. |
Refresh Schedule
Data is updated every 15 minutes.
Example
Request
const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY
const res = await fetch(`${baseUrl}/Orders/Tracking?orderNumber=ORD-12345`, {
headers: { Authorization: apiKey, language: 'en' },
})
const tracking = await res.json()
Response
[
{
"SalesId": "string",
"PoNumber": "string",
"OrderShippingStatus": "string",
"Packages": [
{
"PackageId": "string",
"TrackingNumber": "string",
"Carrier": "string",
"Items": [
{
"VariantNo": "string",
"Qty": 0
}
],
"ContainerTypeCode": "string"
}
],
"UnshippedQuantities": [
{
"VariantNo": "string",
"Qty": 0
}
]
}
]
GET /Orders/Tracking
Retrieve shipment tracking information for your orders.
Parameters
The following request parameters are available:
| Parameter | Description |
|---|---|
| cartIds | The cart ids of the orders to track. |
Refresh Schedule
Data is updated every 15 minutes.
Example
Request
const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY
const res = await fetch(`${baseUrl}/Orders/Tracking?orderNumber=ORD-12345`, {
headers: { Authorization: apiKey, language: 'en' },
})
const tracking = await res.json()
Response
[
{
"OrderNumber": "string",
"CartId": "string",
"Carrier": "string",
"BoxNumber": "string",
"TrackingNumber": "string",
"TrakingUrl": "string",
"PurchaseOrderNumber": "string"
}
]