List or search products
List products, or search with q. Search supports offset and caps page size at 250. Without q, use cursor for stable pagination with limit.
GET
/productsAuthorization
AuthorizationBearer token (API key) · headerrequiredOrganization API key.
Query parameters
qstringSearch text. Enables `offset` pagination.
limitintegerPage size (1–5000, default 100; max 250 with `q`).
min 1 · max 5000 · default: 100
offsetintegerSkip search hits. Only with `q`.
min 0 · max 10000 · default: 0
storestringFilter by store id. Works with and without `q`. When set, `meta.total` reflects the filtered page (not the unfiltered search estimate).
cursorstringOpaque document id for the next page. Only without `q`. Do not parse. Follow `meta.nextCursor` until it is absent.
Responses
200List of products with meta.
dataProduct[]requiredShow propertiesHide properties
Array of
ProductidstringProduct document id
externalIdstringOptional external identifier
namestringpriceintegerPrice in cents.
supplierstringSupplier id
taxCategorystringSwiss VAT category code
Allowed:
8.12.63.80categorystringCategory id
declarationsstringbarcodestringdepositProductintegerDeposit in cents.
depositProductLabelstringdescriptionstringsalePriceintegerSale price in cents.
salePercentagenumbersalePriceDateFromstring<date-time>salePriceDateTostring<date-time>costPriceintegerCost price in cents.
marginnumbershowOnScreenbooleanageRestrictionbooleanshowOnScalebooleansaleStopbooleandeactivatedbooleanopenInputbooleanimageUrlstringImage URL (read-only).
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 active items in `data` (soft-deleted rows excluded).
limitintegerrequiredApplied page size.
offsetintegerOnly for product search with `q`.
nextCursorstringOpaque cursor for the next page. Present when more results may exist. Do not parse; pass unchanged as `cursor`. Under soft-delete filtering, `returned < limit` does not mean the list is finished.
400Bad request
errorValidationErrorrequiredValidation details.
Show propertiesHide properties
formErrorsstring[]requiredfieldErrorsobjectrequired403Unauthorized
statusCodeintegerrequiredHTTP status code
messagestringrequiredHuman-readable error message
timestampstring<date-time>requiredpathstringrequiredRequest path
503Search unavailable
errorstringrequiredRequest
curl -X GET "https://dashboard.scango.ch/api/v1/products" \
-H "Authorization: Bearer YOUR_TOKEN"const response = await fetch("https://dashboard.scango.ch/api/v1/products", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_TOKEN"
}
});Response
{
"data": [
{
"id": "string",
"externalId": "string",
"name": "string",
"price": 0,
"supplier": "string",
"taxCategory": "8.1",
"category": "string",
"declarations": "string",
"barcode": "string",
"depositProduct": 0,
"depositProductLabel": "string",
"description": "string",
"salePrice": 0,
"salePercentage": 0,
"salePriceDateFrom": "2024-01-01T00:00:00Z",
"salePriceDateTo": "2024-01-01T00:00:00Z",
"costPrice": 0,
"margin": 0,
"showOnScreen": true,
"ageRestriction": true,
"showOnScale": true,
"saleStop": true,
"deactivated": true,
"openInput": true,
"imageUrl": "string",
"index": 0,
"allowStore": [
"string"
],
"hideStore": [
"string"
],
"deleted": true,
"createdate": "2024-01-01T00:00:00Z",
"lastupdate": "2024-01-01T00:00:00Z",
"instance": "string"
}
],
"meta": {
"total": 0,
"returned": 0,
"limit": 0,
"offset": 0,
"nextCursor": "string"
}
}{
"error": {
"formErrors": [
"string"
],
"fieldErrors": {}
}
}{
"statusCode": 0,
"message": "string",
"timestamp": "2024-01-01T00:00:00Z",
"path": "string"
}{
"error": "string"
}