Skip to main content

Products

Product Endpoint​

The Products API allows you to retrieve product information, including pricing, inventory levels, and metadata. You can search and filter products using various parameters.

GET/api/v1/product/

Get products by filter parameters

NameTypeRequiredDescription
formatstring❌Response format: 'json' (default) or 'xml' (BMEcat 2005 format)
product_numberstring❌Filter by single or comma-separated AXRO product numbers (e.g., 'CANL055BK' or 'CANL055BK,CANL056WH')
fskustring❌Filter by single or comma-separated foreign SKU values (fSKU)
oemstring❌Filter by single or comma-separated OEM numbers (e.g., '3016C002' or '3016C002,CF540A')
eanstring❌Filter by single or comma-separated EAN numbers (e.g., '4549292124699' or '4549292124699,4549292124706')
brandstring❌Filter by single or comma-separated brand names (e.g., 'HP,Canon,Epson')
categorystring❌Filter by single or comma-separated category IDs (e.g., '50593,50638')
pagestring❌Page number for pagination (default: 1)
limitstring❌Number of items per page (default: 100)

Example Request​

curl -X GET https://api.axro.com/api/v1/product/ \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Example Response​

{
"products": [
{
"product_number": "CANL055BK",
"ean": "4549292124699",
"oem_number": "3016C002",
"brand": "Canon",
"stock": 42,
"price": [
{
"from_quantity": 1,
"to_quantity": 5,
"price": 8599
},
{
"from_quantity": 6,
"to_quantity": 999999,
"price": 8299
}
],
"title": {
"en_GB": "Canon 055 Toner Cartridge - Black",
"de_DE": "Canon 055 Tonerkartusche - Schwarz"
},
"category": {
"id": 53,
"de": "Toner",
"en": "Toner"
},
"categories": [
{
"id": 53,
"de": "Toner",
"en": "Toner"
},
{
"id": 23,
"de": "Tinten & Toner",
"en": "Inks & Toner"
}
],
"attributes": [
{
"id": 37,
"name": "Packaging Data",
"attributes": [
{
"id": 205,
"title": "Package weight",
"value": "6.7 kg"
},
{
"id": 513,
"title": "Packaging width",
"value": "274 mm"
},
{
"id": 515,
"title": "Packaging depth",
"value": "760 mm"
},
{
"id": 517,
"title": "Packaging height",
"value": "512 mm"
},
{
"id": 519,
"title": "Type of packaging",
"value": "Box"
},
{
"id": 723,
"title": "Quantity per pack",
"value": "1 piece(s)"
}
]
},
{
"id": 35,
"name": "Weight and Dimensions",
"attributes": [
{
"id": 197,
"title": "Width",
"value": "213 mm"
},
{
"id": 199,
"title": "Height",
"value": "314 mm"
},
{
"id": 203,
"title": "Weight",
"value": "4.5 kg"
},
{
"id": 225,
"title": "Depth",
"value": "430 mm"
}
]
}
],
"modified_at": "2024-02-15T14:30:00Z"
}
],
"total_pages": 5
}

IMPORTANT Deprecation notice: Key category in response will be removed in future versions. Use categories instead!

Product attributes​

The key attributes holds the technical product data, grouped the same way it is maintained in the ERP. Every entry is a group (id, name) with its list of attributes (id, title, value). Groups are sorted by name, attributes by id.

title and value are plain strings in English and are always sent as text, also for numeric data ("4.5 kg", "430 mm"). Products without technical data return an empty list.

Hint

Depending on how you set the limit, you will most likely have to paginate.

Use the key total_pages as the maximum and create a recursive function that calls the API endpoint with the next page as the page parameter until the corresponding page is reached.

Check "Example Requests for pagination" below.

Example Request for pagination​

#!/bin/bash

URL="https://api.axro.com/api/v1/product/"
TOKEN="YOUR_TOKEN"
CURRENT_PAGE=1
HAS_MORE_PAGES=true

while [ "$HAS_MORE_PAGES" = true ]
do
echo "Fetching page $CURRENT_PAGE..."
RESPONSE=$(curl -s -X GET "$URL?page=$CURRENT_PAGE" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json")

echo $RESPONSE | jq .

# Extract total_pages
TOTAL_PAGES=$(echo $RESPONSE | jq '.total_pages')

if [ -z "$TOTAL_PAGES" ] || [ "$TOTAL_PAGES" = "null" ]; then
echo "Could not determine total pages, stopping"
HAS_MORE_PAGES=false
elif [ $CURRENT_PAGE -ge $TOTAL_PAGES ]; then
echo "Reached last page ($TOTAL_PAGES)"
HAS_MORE_PAGES=false
else
CURRENT_PAGE=$((CURRENT_PAGE + 1))
fi
done

Product Stocks Endpoint​

Bulk lookup for inventory/stock levels for many products at once.

  • Request is a JSON array.
  • Each array element must contain exactly one identifier: product_number, ean, oem, or fsku.
  • You can mix identifier types in the same request.
  • Max 5000 items per request.
  • Response is returned in the same order as the request.
  • Per-row errors are returned via the error field (other rows still succeed).
POST/api/v1/product/stocks/

Request Body​

Array of objects, each with exactly one of:

  • product_number (AXRO product number)
  • ean (EAN)
  • oem (OEM number)
  • fsku (customer-specific foreign SKU)

Example Request​

curl -X POST https://api.axro.com/api/v1/product/stocks/ \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '[
{"product_number": "CANL055BK"},
{"ean": "4549292124699"},
{"oem": "3016C002"},
{"fsku": "FSKU-999"}
]'

Example Response​

[
{"product": "CANL055BK", "stock": 42, "error": null},
{"product": "4549292124699", "stock": 10, "error": null},
{"product": "3016C002", "stock": 7, "error": null},
{"product": "FSKU-999", "stock": 0, "error": "fsku_not_found"}
]

Error codes​

  • not_found: product not found / not visible for the current customer
  • fsku_not_found: no fSKU mapping exists for the current customer

Categories Endpoint​

GET/api/v1/product/categories/

Get all available product categories

Example Request​

curl -X GET https://api.axro.com/api/v1/product/categories/ \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Example Response​

[
{
"id": 50593,
"de": "Tonerkartuschen",
"en": "Toner cartridges"
},
{
"id": 50638,
"de": "Tintenpatronen",
"en": "Ink cartridges"
},
{
"id": 51522,
"de": "Drucker",
"en": "Printers"
}
]

Brands Endpoint​

GET/api/v1/product/brands/

Get all available product brands

Example Request​

curl -X GET https://api.axro.com/api/v1/product/brands/ \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Example Response​

{
"brands": [
"Canon",
"HP",
"Epson",
"Brother",
"Samsung"
]
}

fSKU Mappings Endpoint​

Return the customer-specific foreign SKU mappings (fSKU → AXRO product_number).

Sync frequency

New and updated fSKU mappings are synchronized approximately every hour.

GET/api/v1/product/fsku/
NameTypeRequiredDescription
pagenumber❌Page number for pagination (default: 1)
limitnumber❌Number of items per page (default: 10000, max: 50000)
qstring❌Optional substring filter applied to fsku or product_number

Example Request​

curl -X GET "https://api.axro.com/api/v1/product/fsku/?page=1&limit=100" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Example Response​

{
"mappings": [
{ "fsku": "FSKU-999", "product_number": "AXRO123" },
{ "fsku": "FSKU-1000", "product_number": "AXRO124" }
],
"page": 1,
"limit": 100,
"total": 2,
"total_pages": 1
}