Developer docs menu

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.

POST

Add stock

/api/v1/inventory/add-stock

Scope: Scalar360.inventory.CREATE

Body fieldTypeRequiredNotes
itemIdstring (uuid)Yes
quantitynumberYesrequired, >= 1
Example request
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}'
GET

Barcode preview

/api/v1/inventory/barcode-preview

Scope: Scalar360.inventory.READ

ParameterInTypeRequired
valuequerystringYes
typequerystring (default CODE_128)No
Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/barcode-preview" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

List categories

/api/v1/inventory/categories

Scope: Scalar360.inventory.READ

ParameterInTypeRequired
qquerystringNo
Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/categories" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Create category

/api/v1/inventory/categories

Scope: Scalar360.inventory.CREATE

Body fieldTypeRequiredNotes
namestring
displayOrderinteger
activeboolean
Example request
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}'
PUT

Update category

/api/v1/inventory/categories/{id}

Scope: Scalar360.inventory.UPDATE

ParameterInTypeRequired
idpathstring (uuid)Yes
Body fieldTypeRequiredNotes
namestring
displayOrderinteger
activeboolean
Example request
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

Delete category

/api/v1/inventory/categories/{id}

Scope: Scalar360.inventory.DELETE

ParameterInTypeRequired
idpathstring (uuid)Yes
Example request
curl -X DELETE "https://api.scalar360.com/api/v1/inventory/categories/{id}" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

List custom fields

/api/v1/inventory/custom-fields

Scope: Scalar360.inventory.READ

ParameterInTypeRequired
activeOnlyqueryboolean (default false)No
Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/custom-fields" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Create custom field

/api/v1/inventory/custom-fields

Scope: Scalar360.inventory.CREATE

Body fieldTypeRequiredNotes
labelstringYesrequired, not blank
fieldTypeenum: TEXT | NUMBER | DATE | SELECT | PHONE | FILE
optionsstring
requiredboolean
activeboolean
sortOrderinteger
Example request
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"}'
PUT

Update custom field

/api/v1/inventory/custom-fields/{id}

Scope: Scalar360.inventory.UPDATE

ParameterInTypeRequired
idpathstring (uuid)Yes
Body fieldTypeRequiredNotes
labelstringYesrequired, not blank
fieldTypeenum: TEXT | NUMBER | DATE | SELECT | PHONE | FILE
optionsstring
requiredboolean
activeboolean
sortOrderinteger
Example request
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

Delete custom field

/api/v1/inventory/custom-fields/{id}

Scope: Scalar360.inventory.DELETE

ParameterInTypeRequired
idpathstring (uuid)Yes
Example request
curl -X DELETE "https://api.scalar360.com/api/v1/inventory/custom-fields/{id}" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

Dashboard

/api/v1/inventory/dashboard

Scope: Scalar360.inventory.READ

Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/dashboard" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

List items

/api/v1/inventory/items

Scope: Scalar360.inventory.READ

ParameterInTypeRequired
qquerystringNo
pagequeryintegerNo
pageSizequeryintegerNo
trackInventoryqueryboolean (default true)No
lowStockqueryboolean (default false)No
sortByquerystringNo
sortDirquerystringNo
startDatequerystring (date)No
endDatequerystring (date)No
Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/items" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Create item

/api/v1/inventory/items

Scope: Scalar360.inventory.CREATE

Body fieldTypeRequiredNotes
namestringYesrequired, not blank
skustringYesrequired, not blank
barcodestring
autoGenerateBarcodeboolean
customFieldsmap of string
categorystring
hsnstring
pricenumber>= 0
costnumber>= 0
gstRatenumber>= 0
unitstring
purchaseUnitstring
uomConversionnumber
onHandnumber>= 0
openingStocksarray of object
openingStocks[].warehouseIdstring (uuid)
openingStocks[].qtynumber>= 0
reorderLevelnumber>= 0
trackInventoryboolean
Example request
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

Get item

/api/v1/inventory/items/{id}

Scope: Scalar360.inventory.READ

ParameterInTypeRequired
idpathstring (uuid)Yes
Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/items/{id}" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
PUT

Update item

/api/v1/inventory/items/{id}

Scope: Scalar360.inventory.UPDATE

ParameterInTypeRequired
idpathstring (uuid)Yes
Body fieldTypeRequiredNotes
namestringYesrequired, not blank
skustringYesrequired, not blank
barcodestring
autoGenerateBarcodeboolean
customFieldsmap of string
categorystring
hsnstring
pricenumber>= 0
costnumber>= 0
gstRatenumber>= 0
unitstring
purchaseUnitstring
uomConversionnumber
onHandnumber>= 0
openingStocksarray of object
openingStocks[].warehouseIdstring (uuid)
openingStocks[].qtynumber>= 0
reorderLevelnumber>= 0
trackInventoryboolean
Example request
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"}'
POST

Generate barcode

/api/v1/inventory/items/{id}/barcode

Scope: Scalar360.inventory.CREATE

ParameterInTypeRequired
idpathstring (uuid)Yes
Example request
curl -X POST "https://api.scalar360.com/api/v1/inventory/items/{id}/barcode" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

Get item image

/api/v1/inventory/items/{id}/image

Scope: Scalar360.inventory.READ

ParameterInTypeRequired
idpathstring (uuid)Yes
Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/items/{id}/image" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Upload item image

/api/v1/inventory/items/{id}/image

Scope: Scalar360.inventory.CREATE

ParameterInTypeRequired
idpathstring (uuid)Yes

Request body: multipart/form-data with a file field.

Example request
curl -X POST "https://api.scalar360.com/api/v1/inventory/items/{id}/image" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -F "file=@/path/to/file"
POST

Remove item image

/api/v1/inventory/items/{id}/image/remove

Scope: Scalar360.inventory.CREATE

ParameterInTypeRequired
idpathstring (uuid)Yes
Example request
curl -X POST "https://api.scalar360.com/api/v1/inventory/items/{id}/image/remove" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Adjust stock

/api/v1/inventory/items/{id}/stock-adjustments

Scope: Scalar360.inventory.CREATE

ParameterInTypeRequired
idpathstring (uuid)Yes
Body fieldTypeRequiredNotes
qtynumberYesrequired
warehouseIdstring (uuid)
typestring
reasonstring
referencestring
unitCostnumber>= 0
Example request
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}'
GET

List movements

/api/v1/inventory/items/{id}/stock-movements

Scope: Scalar360.inventory.READ

ParameterInTypeRequired
idpathstring (uuid)Yes
Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/items/{id}/stock-movements" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

Get item custom field file

/api/v1/inventory/items/{itemId}/custom-fields/{fieldKey}/file

Scope: Scalar360.inventory.READ

ParameterInTypeRequired
itemIdpathstring (uuid)Yes
fieldKeypathstringYes
Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/items/{itemId}/custom-fields/{fieldKey}/file" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Upload item custom field file

/api/v1/inventory/items/{itemId}/custom-fields/{fieldKey}/upload

Scope: Scalar360.inventory.CREATE

ParameterInTypeRequired
itemIdpathstring (uuid)Yes
fieldKeypathstringYes

Request body: multipart/form-data with a file field.

Example request
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"
POST

Import items

/api/v1/inventory/items/import

Scope: Scalar360.inventory.CREATE

ParameterInTypeRequired
warehouseIdquerystring (uuid)Yes
stockModequerystringNo

Request body: multipart/form-data with a file field.

Example request
curl -X POST "https://api.scalar360.com/api/v1/inventory/items/import" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -F "file=@/path/to/file"
GET

Item import template

/api/v1/inventory/items/import-template

Scope: Scalar360.inventory.READ

ParameterInTypeRequired
formatquerystring (default csv)No
Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/items/import-template" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

List label templates

/api/v1/inventory/label-templates

Scope: Scalar360.inventory.READ

Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/label-templates" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Create label template

/api/v1/inventory/label-templates

Scope: Scalar360.inventory.CREATE

Body fieldTypeRequiredNotes
namestringYesrequired, not blank
pageTypestring
labelWidthMmnumber
labelHeightMmnumber
columnsinteger
marginTopMmnumber
marginLeftMmnumber
hGapMmnumber
vGapMmnumber
symbologystring
fieldsarray of string
showBorderboolean
Example request
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"}'
PUT

Update label template

/api/v1/inventory/label-templates/{id}

Scope: Scalar360.inventory.UPDATE

ParameterInTypeRequired
idpathstring (uuid)Yes
Body fieldTypeRequiredNotes
namestringYesrequired, not blank
pageTypestring
labelWidthMmnumber
labelHeightMmnumber
columnsinteger
marginTopMmnumber
marginLeftMmnumber
hGapMmnumber
vGapMmnumber
symbologystring
fieldsarray of string
showBorderboolean
Example request
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

Delete label template

/api/v1/inventory/label-templates/{id}

Scope: Scalar360.inventory.DELETE

ParameterInTypeRequired
idpathstring (uuid)Yes
Example request
curl -X DELETE "https://api.scalar360.com/api/v1/inventory/label-templates/{id}" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Print labels

/api/v1/inventory/labels

Scope: Scalar360.inventory.CREATE

Body fieldTypeRequiredNotes
itemsarray of object
items[].itemIdstring (uuid)
items[].qtyinteger
templateIdstring (uuid)
pageTypestring
labelWidthMmnumber
labelHeightMmnumber
columnsinteger
marginTopMmnumber
marginLeftMmnumber
hGapMmnumber
vGapMmnumber
symbologystring
fieldsarray of string
showBorderboolean
startOffsetinteger
Example request
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}'
POST

Reconcile on hand

/api/v1/inventory/reconcile-onhand

Scope: Scalar360.inventory.CREATE

Example request
curl -X POST "https://api.scalar360.com/api/v1/inventory/reconcile-onhand" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

Get stock settings

/api/v1/inventory/stock-settings

Scope: Scalar360.inventory.READ

Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/stock-settings" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
PUT

Update stock settings

/api/v1/inventory/stock-settings

Scope: Scalar360.inventory.UPDATE

Example request
curl -X PUT "https://api.scalar360.com/api/v1/inventory/stock-settings" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
GET

List units

/api/v1/inventory/units

Scope: Scalar360.inventory.READ

ParameterInTypeRequired
qquerystringNo
Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/units" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Create unit

/api/v1/inventory/units

Scope: Scalar360.inventory.CREATE

Body fieldTypeRequiredNotes
namestring
displayOrderinteger
activeboolean
Example request
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}'
PUT

Update unit

/api/v1/inventory/units/{id}

Scope: Scalar360.inventory.UPDATE

ParameterInTypeRequired
idpathstring (uuid)Yes
Body fieldTypeRequiredNotes
namestring
displayOrderinteger
activeboolean
Example request
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

Delete unit

/api/v1/inventory/units/{id}

Scope: Scalar360.inventory.DELETE

ParameterInTypeRequired
idpathstring (uuid)Yes
Example request
curl -X DELETE "https://api.scalar360.com/api/v1/inventory/units/{id}" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

List valuation

/api/v1/inventory/valuation

Scope: Scalar360.inventory.READ

ParameterInTypeRequired
qquerystringNo
pagequeryintegerNo
pageSizequeryintegerNo
methodquerystring (default avg)No
sortByquerystringNo
sortDirquerystringNo
startDatequerystring (date)No
endDatequerystring (date)No
Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/valuation" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

List warehouses

/api/v1/inventory/warehouses

Scope: Scalar360.inventory.READ

Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/warehouses" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Create warehouse

/api/v1/inventory/warehouses

Scope: Scalar360.inventory.CREATE

Body fieldTypeRequiredNotes
namestringYesrequired, not blank
codestring
Example request
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"}'
PUT

Update warehouse

/api/v1/inventory/warehouses/{id}

Scope: Scalar360.inventory.UPDATE

ParameterInTypeRequired
idpathstring (uuid)Yes
Body fieldTypeRequiredNotes
namestringYesrequired, not blank
codestring
Example request
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

Delete warehouse

/api/v1/inventory/warehouses/{id}

Scope: Scalar360.inventory.DELETE

ParameterInTypeRequired
idpathstring (uuid)Yes
Example request
curl -X DELETE "https://api.scalar360.com/api/v1/inventory/warehouses/{id}" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Import warehouse items

/api/v1/inventory/warehouses/{id}/import

Scope: Scalar360.inventory.CREATE

ParameterInTypeRequired
idpathstring (uuid)Yes
stockModequerystringNo

Request body: multipart/form-data with a file field.

Example request
curl -X POST "https://api.scalar360.com/api/v1/inventory/warehouses/{id}/import" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -F "file=@/path/to/file"
GET

List warehouse stock

/api/v1/inventory/warehouses/{id}/stock

Scope: Scalar360.inventory.READ

ParameterInTypeRequired
idpathstring (uuid)Yes
qquerystringNo
pagequeryintegerNo
pageSizequeryintegerNo
sortByquerystringNo
sortDirquerystringNo
startDatequerystring (date)No
endDatequerystring (date)No
Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/warehouses/{id}/stock" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Assign unassigned stock

/api/v1/inventory/warehouses/assign

Scope: Scalar360.inventory.CREATE

Body fieldTypeRequiredNotes
warehouseIdstring (uuid)Yes
itemIdsarray of string (uuid)Yesrequired, not empty
referencestring
Example request
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"]}'
GET

Warehouse import template

/api/v1/inventory/warehouses/import-template

Scope: Scalar360.inventory.READ

ParameterInTypeRequired
formatquerystring (default csv)No
Example request
curl -X GET "https://api.scalar360.com/api/v1/inventory/warehouses/import-template" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Transfer stock

/api/v1/inventory/warehouses/transfers

Scope: Scalar360.inventory.CREATE

Body fieldTypeRequiredNotes
itemIdstring (uuid)Yes
fromWarehouseIdstring (uuid)Yes
toWarehouseIdstring (uuid)Yes
qtynumberYesrequired, > 0
referencestring
Example request
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}'