Products
Read catalog data scoped to the key's location for pricing. Stock totals are summed across all company locations. totalStock is physical on-hand. availableStock is max(0, physical − active unexpired reserved). Which products are visible depends on Developer settings (all vs selective by product, category, or model).
/productsList and filter products.
Query parameters
| Name | Description |
|---|---|
| q | Search name, SKU, or barcode |
| sku | Filter by SKU |
| name | Filter by product name |
| barcode | Filter by barcode |
| page | Page number (default 1) |
| limit | Page size, max 50 (default 20) |
Response fields (each item in data)
| Field | Description |
|---|---|
| sku | Stock keeping unit |
| barcode | Product barcode (nullable) |
| category | Category id and name (nullable) |
| model | Shared product model id and name (nullable) |
| totalStock | Physical on-hand summed across company locations |
| availableStock | Sellable stock: max(0, totalStock − active unexpired reserved) |
| units | Sellable units with scale and default flag |
Example product object
{
"id": "01H…",
"name": "Premium paint",
"sku": "PP-001",
"barcode": "1234567890123",
"description": "Interior matte",
"category": {
"id": "01H…",
"name": "Paints"
},
"model": {
"id": "01H…",
"name": "Premium Interior Matte"
},
"priceExTax": 100,
"priceIncTax": 108,
"totalStock": 42,
"availableStock": 40,
"imageUrl": "https://…",
"hasDatasheets": true,
"datasheetCount": 2,
"units": [
{
"id": "01H…",
"name": "Each",
"scale": 1,
"isDefault": true
}
]
}curl -s "https://equitypos.com/api/v1/public/products?q=paint&limit=10" \
-H "Authorization: Bearer YOUR_KEY"/products/:productIdSingle product with SKU, barcode, category, model, units, prices (ex/inc tax), total stock, available stock, image URL, and datasheet metadata. Returns 404 if the product is outside your configured catalog scope.
/filesProduct imageUrl values point here. Use the same Authorization: Bearer header as other public routes. Query parameter: key (S3 object key, e.g. from the URL path in a legacy download link).
curl -sL "https://www.equitypos.com/api/v1/public/files?key=product-photos/..." \
-H "Authorization: Bearer YOUR_KEY" \
-o product.png
# Save using the response Content-Type and the key extension (.png or .jpeg).
# Do not assume JPEG — pizza cutouts are transparent PNGs./products/:productId/datasheetsReturns model and product attachments with download URLs.
{
"data": [
{
"source": "model",
"id": "...",
"url": "https://...",
"name": "Spec sheet",
"contentType": null
}
]
}