API reference / Inventory
Inventory API
47 endpoints. Scopes: Scalar360.inventory.READ, .CREATE, .UPDATE, .DELETE or .ALL. All calls need Authorization: Scalar360-oauthtoken <access_token> — see Authentication.
Add stock
/api/v1/inventory/add-stock
Scope: Scalar360.inventory.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
itemId | string (uuid) | Yes | |
quantity | number | Yes | required, >= 1 |
curl -X POST "https://api.scalar360.com/api/v1/inventory/add-stock" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"itemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","quantity":100}'Barcode preview
/api/v1/inventory/barcode-preview
Scope: Scalar360.inventory.READ
| Parameter | In | Type | Required |
|---|---|---|---|
value | query | string | Yes |
type | query | string (default CODE_128) | No |
curl -X GET "https://api.scalar360.com/api/v1/inventory/barcode-preview" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"List categories
/api/v1/inventory/categories
Scope: Scalar360.inventory.READ
| Parameter | In | Type | Required |
|---|---|---|---|
q | query | string | No |
curl -X GET "https://api.scalar360.com/api/v1/inventory/categories" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create category
/api/v1/inventory/categories
Scope: Scalar360.inventory.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | ||
displayOrder | integer | ||
active | boolean |
curl -X POST "https://api.scalar360.com/api/v1/inventory/categories" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","displayOrder":1,"active":true}'Update category
/api/v1/inventory/categories/{id}
Scope: Scalar360.inventory.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | ||
displayOrder | integer | ||
active | boolean |
curl -X PUT "https://api.scalar360.com/api/v1/inventory/categories/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","displayOrder":1,"active":true}'Delete category
/api/v1/inventory/categories/{id}
Scope: Scalar360.inventory.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/inventory/categories/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"List custom fields
/api/v1/inventory/custom-fields
Scope: Scalar360.inventory.READ
| Parameter | In | Type | Required |
|---|---|---|---|
activeOnly | query | boolean (default false) | No |
curl -X GET "https://api.scalar360.com/api/v1/inventory/custom-fields" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create custom field
/api/v1/inventory/custom-fields
Scope: Scalar360.inventory.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
label | string | Yes | required, not blank |
fieldType | enum: TEXT | NUMBER | DATE | SELECT | PHONE | FILE | ||
options | string | ||
required | boolean | ||
active | boolean | ||
sortOrder | integer |
curl -X POST "https://api.scalar360.com/api/v1/inventory/custom-fields" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"label":"string"}'Update custom field
/api/v1/inventory/custom-fields/{id}
Scope: Scalar360.inventory.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
label | string | Yes | required, not blank |
fieldType | enum: TEXT | NUMBER | DATE | SELECT | PHONE | FILE | ||
options | string | ||
required | boolean | ||
active | boolean | ||
sortOrder | integer |
curl -X PUT "https://api.scalar360.com/api/v1/inventory/custom-fields/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"label":"string","fieldType":"TEXT","options":"string","required":true,"active":true,"sortOrder":1}'Delete custom field
/api/v1/inventory/custom-fields/{id}
Scope: Scalar360.inventory.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/inventory/custom-fields/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Dashboard
/api/v1/inventory/dashboard
Scope: Scalar360.inventory.READ
curl -X GET "https://api.scalar360.com/api/v1/inventory/dashboard" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"List items
/api/v1/inventory/items
Scope: Scalar360.inventory.READ
| Parameter | In | Type | Required |
|---|---|---|---|
q | query | string | No |
page | query | integer | No |
pageSize | query | integer | No |
trackInventory | query | boolean (default true) | No |
lowStock | query | boolean (default false) | No |
sortBy | query | string | No |
sortDir | query | string | No |
startDate | query | string (date) | No |
endDate | query | string (date) | No |
curl -X GET "https://api.scalar360.com/api/v1/inventory/items" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create item
/api/v1/inventory/items
Scope: Scalar360.inventory.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank |
sku | string | Yes | required, not blank |
barcode | string | ||
autoGenerateBarcode | boolean | ||
customFields | map of string | ||
category | string | ||
hsn | string | ||
price | number | >= 0 | |
cost | number | >= 0 | |
gstRate | number | >= 0 | |
unit | string | ||
purchaseUnit | string | ||
uomConversion | number | ||
onHand | number | >= 0 | |
openingStocks | array of object | ||
openingStocks[].warehouseId | string (uuid) | ||
openingStocks[].qty | number | >= 0 | |
reorderLevel | number | >= 0 | |
trackInventory | boolean |
curl -X POST "https://api.scalar360.com/api/v1/inventory/items" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","sku":"string"}'Get item
/api/v1/inventory/items/{id}
Scope: Scalar360.inventory.READ
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/inventory/items/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update item
/api/v1/inventory/items/{id}
Scope: Scalar360.inventory.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank |
sku | string | Yes | required, not blank |
barcode | string | ||
autoGenerateBarcode | boolean | ||
customFields | map of string | ||
category | string | ||
hsn | string | ||
price | number | >= 0 | |
cost | number | >= 0 | |
gstRate | number | >= 0 | |
unit | string | ||
purchaseUnit | string | ||
uomConversion | number | ||
onHand | number | >= 0 | |
openingStocks | array of object | ||
openingStocks[].warehouseId | string (uuid) | ||
openingStocks[].qty | number | >= 0 | |
reorderLevel | number | >= 0 | |
trackInventory | boolean |
curl -X PUT "https://api.scalar360.com/api/v1/inventory/items/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","sku":"string","barcode":"string","autoGenerateBarcode":true,"customFields":{},"category":"string"}'Generate barcode
/api/v1/inventory/items/{id}/barcode
Scope: Scalar360.inventory.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/inventory/items/{id}/barcode" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Get item image
/api/v1/inventory/items/{id}/image
Scope: Scalar360.inventory.READ
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/inventory/items/{id}/image" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Upload item image
/api/v1/inventory/items/{id}/image
Scope: Scalar360.inventory.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
Request body: multipart/form-data with a file field.
curl -X POST "https://api.scalar360.com/api/v1/inventory/items/{id}/image" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-F "file=@/path/to/file"Remove item image
/api/v1/inventory/items/{id}/image/remove
Scope: Scalar360.inventory.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/inventory/items/{id}/image/remove" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Adjust stock
/api/v1/inventory/items/{id}/stock-adjustments
Scope: Scalar360.inventory.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
qty | number | Yes | required |
warehouseId | string (uuid) | ||
type | string | ||
reason | string | ||
reference | string | ||
unitCost | number | >= 0 |
curl -X POST "https://api.scalar360.com/api/v1/inventory/items/{id}/stock-adjustments" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"qty":100}'List movements
/api/v1/inventory/items/{id}/stock-movements
Scope: Scalar360.inventory.READ
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/inventory/items/{id}/stock-movements" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Get item custom field file
/api/v1/inventory/items/{itemId}/custom-fields/{fieldKey}/file
Scope: Scalar360.inventory.READ
| Parameter | In | Type | Required |
|---|---|---|---|
itemId | path | string (uuid) | Yes |
fieldKey | path | string | Yes |
curl -X GET "https://api.scalar360.com/api/v1/inventory/items/{itemId}/custom-fields/{fieldKey}/file" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Upload item custom field file
/api/v1/inventory/items/{itemId}/custom-fields/{fieldKey}/upload
Scope: Scalar360.inventory.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
itemId | path | string (uuid) | Yes |
fieldKey | path | string | Yes |
Request body: multipart/form-data with a file field.
curl -X POST "https://api.scalar360.com/api/v1/inventory/items/{itemId}/custom-fields/{fieldKey}/upload" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-F "file=@/path/to/file"Import items
/api/v1/inventory/items/import
Scope: Scalar360.inventory.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
warehouseId | query | string (uuid) | Yes |
stockMode | query | string | No |
Request body: multipart/form-data with a file field.
curl -X POST "https://api.scalar360.com/api/v1/inventory/items/import" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-F "file=@/path/to/file"Item import template
/api/v1/inventory/items/import-template
Scope: Scalar360.inventory.READ
| Parameter | In | Type | Required |
|---|---|---|---|
format | query | string (default csv) | No |
curl -X GET "https://api.scalar360.com/api/v1/inventory/items/import-template" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"List label templates
/api/v1/inventory/label-templates
Scope: Scalar360.inventory.READ
curl -X GET "https://api.scalar360.com/api/v1/inventory/label-templates" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create label template
/api/v1/inventory/label-templates
Scope: Scalar360.inventory.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank |
pageType | string | ||
labelWidthMm | number | ||
labelHeightMm | number | ||
columns | integer | ||
marginTopMm | number | ||
marginLeftMm | number | ||
hGapMm | number | ||
vGapMm | number | ||
symbology | string | ||
fields | array of string | ||
showBorder | boolean |
curl -X POST "https://api.scalar360.com/api/v1/inventory/label-templates" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'Update label template
/api/v1/inventory/label-templates/{id}
Scope: Scalar360.inventory.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank |
pageType | string | ||
labelWidthMm | number | ||
labelHeightMm | number | ||
columns | integer | ||
marginTopMm | number | ||
marginLeftMm | number | ||
hGapMm | number | ||
vGapMm | number | ||
symbology | string | ||
fields | array of string | ||
showBorder | boolean |
curl -X PUT "https://api.scalar360.com/api/v1/inventory/label-templates/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","pageType":"string","labelWidthMm":100,"labelHeightMm":100,"columns":1,"marginTopMm":100}'Delete label template
/api/v1/inventory/label-templates/{id}
Scope: Scalar360.inventory.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/inventory/label-templates/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Print labels
/api/v1/inventory/labels
Scope: Scalar360.inventory.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
items | array of object | ||
items[].itemId | string (uuid) | ||
items[].qty | integer | ||
templateId | string (uuid) | ||
pageType | string | ||
labelWidthMm | number | ||
labelHeightMm | number | ||
columns | integer | ||
marginTopMm | number | ||
marginLeftMm | number | ||
hGapMm | number | ||
vGapMm | number | ||
symbology | string | ||
fields | array of string | ||
showBorder | boolean | ||
startOffset | integer |
curl -X POST "https://api.scalar360.com/api/v1/inventory/labels" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"items":[{"itemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","qty":1}],"templateId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","pageType":"string","labelWidthMm":100,"labelHeightMm":100,"columns":1}'Reconcile on hand
/api/v1/inventory/reconcile-onhand
Scope: Scalar360.inventory.CREATE
curl -X POST "https://api.scalar360.com/api/v1/inventory/reconcile-onhand" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Get stock settings
/api/v1/inventory/stock-settings
Scope: Scalar360.inventory.READ
curl -X GET "https://api.scalar360.com/api/v1/inventory/stock-settings" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update stock settings
/api/v1/inventory/stock-settings
Scope: Scalar360.inventory.UPDATE
curl -X PUT "https://api.scalar360.com/api/v1/inventory/stock-settings" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'List units
/api/v1/inventory/units
Scope: Scalar360.inventory.READ
| Parameter | In | Type | Required |
|---|---|---|---|
q | query | string | No |
curl -X GET "https://api.scalar360.com/api/v1/inventory/units" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create unit
/api/v1/inventory/units
Scope: Scalar360.inventory.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | ||
displayOrder | integer | ||
active | boolean |
curl -X POST "https://api.scalar360.com/api/v1/inventory/units" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","displayOrder":1,"active":true}'Update unit
/api/v1/inventory/units/{id}
Scope: Scalar360.inventory.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | ||
displayOrder | integer | ||
active | boolean |
curl -X PUT "https://api.scalar360.com/api/v1/inventory/units/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","displayOrder":1,"active":true}'Delete unit
/api/v1/inventory/units/{id}
Scope: Scalar360.inventory.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/inventory/units/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"List valuation
/api/v1/inventory/valuation
Scope: Scalar360.inventory.READ
| Parameter | In | Type | Required |
|---|---|---|---|
q | query | string | No |
page | query | integer | No |
pageSize | query | integer | No |
method | query | string (default avg) | No |
sortBy | query | string | No |
sortDir | query | string | No |
startDate | query | string (date) | No |
endDate | query | string (date) | No |
curl -X GET "https://api.scalar360.com/api/v1/inventory/valuation" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"List warehouses
/api/v1/inventory/warehouses
Scope: Scalar360.inventory.READ
curl -X GET "https://api.scalar360.com/api/v1/inventory/warehouses" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create warehouse
/api/v1/inventory/warehouses
Scope: Scalar360.inventory.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank |
code | string |
curl -X POST "https://api.scalar360.com/api/v1/inventory/warehouses" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'Update warehouse
/api/v1/inventory/warehouses/{id}
Scope: Scalar360.inventory.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank |
code | string |
curl -X PUT "https://api.scalar360.com/api/v1/inventory/warehouses/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","code":"string"}'Delete warehouse
/api/v1/inventory/warehouses/{id}
Scope: Scalar360.inventory.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/inventory/warehouses/{id}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Import warehouse items
/api/v1/inventory/warehouses/{id}/import
Scope: Scalar360.inventory.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
stockMode | query | string | No |
Request body: multipart/form-data with a file field.
curl -X POST "https://api.scalar360.com/api/v1/inventory/warehouses/{id}/import" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-F "file=@/path/to/file"List warehouse stock
/api/v1/inventory/warehouses/{id}/stock
Scope: Scalar360.inventory.READ
| Parameter | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | Yes |
q | query | string | No |
page | query | integer | No |
pageSize | query | integer | No |
sortBy | query | string | No |
sortDir | query | string | No |
startDate | query | string (date) | No |
endDate | query | string (date) | No |
curl -X GET "https://api.scalar360.com/api/v1/inventory/warehouses/{id}/stock" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Assign unassigned stock
/api/v1/inventory/warehouses/assign
Scope: Scalar360.inventory.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
warehouseId | string (uuid) | Yes | |
itemIds | array of string (uuid) | Yes | required, not empty |
reference | string |
curl -X POST "https://api.scalar360.com/api/v1/inventory/warehouses/assign" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"warehouseId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","itemIds":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"]}'Warehouse import template
/api/v1/inventory/warehouses/import-template
Scope: Scalar360.inventory.READ
| Parameter | In | Type | Required |
|---|---|---|---|
format | query | string (default csv) | No |
curl -X GET "https://api.scalar360.com/api/v1/inventory/warehouses/import-template" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Transfer stock
/api/v1/inventory/warehouses/transfers
Scope: Scalar360.inventory.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
itemId | string (uuid) | Yes | |
fromWarehouseId | string (uuid) | Yes | |
toWarehouseId | string (uuid) | Yes | |
qty | number | Yes | required, > 0 |
reference | string |
curl -X POST "https://api.scalar360.com/api/v1/inventory/warehouses/transfers" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"itemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","fromWarehouseId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","toWarehouseId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","qty":100}'