List or search products
List products, or search with q.
Without q, products are ordered by name; page with cursor. With q, results are ranked by relevance and paged with offset; limit is capped at 250. A q that looks like a barcode (at least 8 letters, digits, - or _, including a digit) matches barcode and barcodeAliases exactly instead of searching text.
Search results carry a reduced set of fields: id, name, price, barcode, supplier, category, externalId, taxCategory, margin, imageUrl, allowStore, hideStore, the sale fields, deactivated, ageRestriction, showOnScreen, openInput and showOnScale. Fetch a product by id for the full record.
/productsAuthorizationBearer token (API key) · headerrequiredOrganization API key.
qstringSearch text. Switches to search: offset paging, limit capped at 250.
limitintegerPage size (1–5000, default 100). With q, values above 250 are reduced to 250; meta.limit shows the applied value.
offsetintegerNumber of search hits to skip. Only with q; ignored otherwise.
storestringOnly products visible in this store (store id). Works with and without q. With q, meta.total then counts the filtered page instead of estimating all matches.
cursorstringmeta.nextCursor from the previous page. Only without q (sending both returns 400). Do not parse it; an unknown cursor starts again at the first page.
List of products with meta.
dataProduct[]requiredShow propertiesHide properties
ProductidstringrequiredProduct document id
externalIdstringOptional external identifier
namestringpriceintegerPrice in cents.
supplierstringSupplier id
taxCategorystringSwiss VAT category code
8.12.63.80categorystringCategory id
declarationsstringbarcodestringbarcodeAliasesobject[]Optional additional EANs. Absent when unused. Empty array is not persisted. Available when the barcode aliases feature is enabled for the organization.
Show propertiesHide properties
objectcodestringrequiredAdditional EAN, lowercased like barcode
quantitynumberBase units represented by this code. Defaults to 1.
priceintegerOptional pack price in cents
labelstringexternalIdstringOptional external article ID
depositProductintegerDeposit in cents.
depositProductLabelstringdescriptionstringsalePriceintegerSale price in cents.
salePercentagenumbersalePriceDateFromstring<date-time>salePriceDateTostring<date-time>costPriceintegerCost price in cents.
marginnumbershowOnScreenbooleanageRestrictionbooleanshowOnScalebooleansaleStopbooleandeactivatedbooleanopenInputbooleanimageUrlstringImage URL. Set via product create/update or POST /products/{productId}/image. Empty string on update clears the field and deletes org-owned storage.
indexintegerallowStorestring[]Allowed store ids (read-only).
hideStorestring[]Hidden store ids (read-only).
deletedbooleanSoft-deleted when true.
createdatestring<date-time>lastupdatestring<date-time>instancestringOrganization id when present
metaListMetarequiredList metadata. returned is the length of data. Soft-deleted catalog rows are omitted from list results, so returned may be less than limit even when more active items exist. When nextCursor is present, more pages may exist — keep paging until nextCursor is absent.
Show propertiesHide properties
totalintegerrequiredWith product search (q) without store: estimated match count. With store: equals returned after store visibility filtering. Otherwise equals returned. Soft-deleted items are omitted, so a page may be shorter than limit even when more active items exist.
returnedintegerrequiredNumber of items in data. With includeDeleted=true (orders), deleted orders count too.
limitintegerrequiredApplied page size.
offsetintegerOnly for product search with q.
nextCursorstringOpaque cursor for the next page; pass it unchanged as cursor. Present when more results may exist. Soft-deleted rows are filtered out after reading, so a page can be shorter than limit while nextCursor is set. Never returned for categories, suppliers and stores, which are not paginated.
Invalid query parameters.
errorValidationErrorrequiredValidation details.
Show propertiesHide properties
formErrorsstring[]requiredfieldErrorsobjectrequiredMissing, unknown or inactive API key, or a Read key on a write operation.
statusCodeintegerrequiredHTTP status code
messagestringrequiredHuman-readable error message
timestampstring<date-time>requiredWhen the error occurred (UTC).
pathstringrequiredRequest URL (path and query string).
Product search is temporarily unavailable.
errorstringrequired