Custom store API / Products & catalog
Products and catalog
Used to answer product questions. Search and detail are optional in v1.0; the full catalog list and categories are optional in v1.1.
Search products
/v1/products?product_name={keyword}&limit={n}product_namestringRequired
Partial match on product name
limitnumberOptional
Max 50
{
"data": [
{
"product_no": "77",
"product_name": "Wool Crew Knit",
"currency": "KRW",
"price": "42000",
"retail_price": "52000",
"display": "T",
"selling": "T",
"sold_out": "F",
"summary_description": "70% wool crew neck",
"list_image": "https://cdn.mall.example.com/products/77/main.jpg",
"product_url": "https://mall.example.com/product/77"
}
]
}Get a product
/v1/products/{product_no}Lillo calls this with embed=variants. With per-option stock (variants), LIA can answer questions like “Do you have it in M?” accurately. Lillo works out the stock level from quantity (5 or fewer counts as low).
product_nostringRequired
Product number
product_namestringRequired
Product name
price / retail_pricestringOptional
Sale price / list price
display / selling / sold_outstringOptional
Displayed, on sale, sold out — "T"/"F"
summary_descriptionstringOptional
Short description
descriptionstringOptional
Full description. HTML is fine — Lillo strips the tags
list_imagestringOptional
Absolute https URL of the main image
detail_image / additional_imagesstringOptional
Detail and additional images
product_material / origin_place_value / shipping_infostringOptional
Material, country of origin, shipping notes
variantsobject[]Optional
Per option: variant_code, options[], additional_amount, selling, use_inventory, quantity
currencystringOptional
Extension. Currency (KRW if omitted)
product_urlstringOptional
Extension. Product page URL
{
"data": {
"product_no": "77",
"product_name": "Wool Crew Knit",
"currency": "KRW",
"price": "42000",
"retail_price": "52000",
"selling": "T",
"sold_out": "F",
"description": "<p>HTML is fine — Lillo strips the tags</p>",
"list_image": "https://cdn.mall.example.com/products/77/main.jpg",
"detail_image": "https://cdn.mall.example.com/products/77/detail.jpg",
"product_material": "70% wool",
"origin_place_value": "Korea",
"shipping_info": "Ships same day for orders before 2 p.m.",
"variants": [
{ "variant_code": "P000000X000A",
"options": [{ "name": "Size", "value": "M" }],
"additional_amount": "0", "selling": "T",
"use_inventory": "T", "quantity": 3 }
]
}
}Full catalog list (v1.1)
/v1/products?since_product_no={n}&limit=100When since_product_no is present, this is a full listing rather than a search. Lillo syncs the knowledge “Products” folder from it (capabilities catalog).
- Return up to
limit(max 100) products withproduct_nogreater thansince_product_no, in ascending order. - Return everything, whether or not it's displayed or on sale — Lillo handles hidden items. The last page just returns fewer than
limit. - You can add
category,options,created_dateand the extension fieldsales_count(units sold in the last 90 days, optional). Lillo usessales_countto rank by popularity. - Lillo calls it every 6 hours (KST 00:20, 06:20, 12:20, 18:20) and right after a connection test passes. Pages are 0.6 seconds apart, up to 5,000 products per run.
- Price and stock are re-checked with the product detail call right before answering. The list is a snapshot for finding products.
{
"product_no": "77",
"product_name": "Wool Crew Knit",
"price": "42000",
"retail_price": "52000",
"display": "T",
"selling": "T",
"sold_out": "F",
"created_date": "2026-09-01T10:00:00+09:00",
"list_image": "https://cdn.mall.example.com/products/77/main.jpg",
"product_url": "https://mall.example.com/product/77",
"category": [{ "category_no": "24", "recommend": "F", "new": "T" }],
"options": { "options": [
{ "option_name": "Color",
"option_value": [{ "option_text": "Ivory" }, { "option_text": "Black" }] }
] },
"sales_count": 132
}Categories (v1.1)
/v1/categorieslimitnumberOptional
Max 100
offsetnumberOptional
Number of items to skip
{
"data": [
{ "category_no": "24", "category_name": "Knitwear",
"parent_category_no": "1", "category_depth": 2 }
]
}