For one software, returns counts and per-computer lists for every license × usage bucket (licensed/unlicensed/expired × using/unused/underutilized) over the last N days. Supports filtering by domain, branch office, custom group and OS platform. Per-bucket items carry only resourceID, resourceName and domainNetbiosName. lastNDays is optional and defaults to 90; if supplied it is clamped to 90 (InvSoftwareMeteringUsage retention).
https://{server-hostname}:8383/dcapi/inventory/software/{softwareID}/license/usageInsights
Inventory.READCopied!
Authorization: d92d4xxxxxxxxxxxxx15f52
Software identifier. Obtain from the response of the Get Installed Software List API.
curl --request GET \
--url https://appdomain/dcapi/inventory/software/{softwareID}/license/usageInsights \
--header 'Accept: application/licenseUsageInsightsResponse.v1+json' \
--header 'Authorization: d92d4xxxxxxxxxxxxx15f52'Time window used for usage aggregation. Contains lastNDays (int) - number of days back from now (defaults to 90 when not supplied; clamped to 1-90 since InvSoftwareMeteringUsage retains 90 days)
Echo of the path parameter
Display name from InvSW.DISPLAY_NAME
Version from InvSW.SOFTWARE_VERSION
Software type label - COMMERCIAL, NON_COMMERCIAL or UNIDENTIFIED
True if at least one metering rule exists for this software
Configured metering rules for this software. Each rule carries appDefinitionID, ruleName, fileName, osPlatform and status (boolean - true when the rule is enabled)
License block - purchased (boolean), totalCopies, installedCopies, remainingCopies, compliantStatus (IN_COMPLIANCE/OVER_LICENSED/UNDER_LICENSED/NOT_AVAILABLE), isExpired (boolean) and nested license object (licenseID, licenseOwner, totalCopies, details[]). When no license is purchased, license is null
Integer counts summarising the software's license and usage posture across managed computers, broken down into named buckets (totalInstalled, licensedInstalled, unlicensedInstalled, licensedUsing, licensedUnused, licensedUnderutilized, unlicensedUsing, licensedExpiredButUsing). Each bucket value is the number of computers matching that condition, mirroring the per-computer lists under the computers key.
Map of bucket name to {total, items[]} where each item carries resourceID, resourceName and domainNetbiosName. Buckets: licensedUsing, licensedUnused, licensedUnderutilized, unlicensedUsing, unlicensedInstalled, licensedExpiredButUsing. Every bucket is always present (empty buckets return {total:0, items:[]})
Optional advisory message - present only when lastNDays was clamped
CUSTOMER_HEADER_MISSING - MSP environment requires X-Customer header
Missing customer header error message
UAC_UNAUTHORIZED - user lacks the required uem-roles or credentials are missing
Authentication or authorization failure reason
RESOURCE_NOT_AVAILABLE - the specified resourceID does not exist or is not accessible
Resource not found message
INTERNAL_ERROR - unexpected exception in the service layer
Internal server error message
License × usage insights for a software
{
"meteringConfigured": true,
"license": {
"license": {
"totalCopies": 5,
"details": [
{
"expiryDate": 0,
"purchaseDate": 0,
"noOfCopies": 5,
"licenseName": "SampleLicense_001",
"licenseDetailsID": 1
}
],
"licenseID": 1,
"licenseOwner": "SampleOwner"
},
"purchased": true,
"totalCopies": 5,
"compliantStatus": "IN_COMPLIANCE",
"remainingCopies": 2,
"isExpired": false,
"installedCopies": 3
},
"softwareID": 23,
"softwareName": "Beyond Compare 5.2.0",
"meteringRules": [
{
"fileName": "BCompare.exe",
"appDefinitionID": 9001,
"ruleName": "BeyondCompare-Win",
"osPlatform": 1,
"status": true
}
],
"counts": {
"licensedExpiredButUsing": 0,
"unlicensedInstalled": 0,
"licensedUnused": 1,
"unlicensedUsing": 0,
"totalInstalled": 3,
"licensedUnderutilized": 0,
"licensedUsing": 2,
"licensedInstalled": 3
},
"window": {
"lastNDays": 30
},
"swType": "COMMERCIAL",
"softwareVersion": "5.2.0.31950",
"computers": {
"licensedExpiredButUsing": {
"total": 0,
"items": []
},
"licensedUnused": {
"total": 1,
"items": [
{
"resourceID": 303,
"resourceName": "sample-computer-3",
"domainNetbiosName": "WORKGROUP"
}
]
},
"unlicensedInstalled": {
"total": 0,
"items": []
},
"unlicensedUsing": {
"total": 0,
"items": []
},
"licensedUnderutilized": {
"total": 0,
"items": []
},
"licensedUsing": {
"total": 2,
"items": [
{
"resourceID": 301,
"resourceName": "sample-computer-1",
"domainNetbiosName": "WORKGROUP"
},
{
"resourceID": 302,
"resourceName": "sample-computer-2",
"domainNetbiosName": "WORKGROUP"
}
]
}
}
}
Invalid query parameter
{
"error_description": "lastNDays must be an integer",
"error_code": "INVALID_DATA"
}
Caller is not an Inventory Admin or is not managing all computers
{
"error_description": "Unauthorized access",
"error_code": "UAC_UNAUTHORIZED"
}
Software not found for the caller
{
"error_description": "The specified resource was not found",
"error_code": "RESOURCE_NOT_AVAILABLE"
}
Server error
{
"error_description": "Internal server error",
"error_code": "INTERNAL_ERROR"
}
![]()
Duration: 1 minute | Threshold: 30 | Lock period: 5 minutes
Duration - Time window for the threshold.
Threshold - Number of API calls allowed within the specified duration.
Lock Period - Wait time before consecutive API requests.
© 2026, Zoho Corporation Pvt. Ltd. All Rights Reserved.
© 2026, Zoho Corporation Pvt. Ltd. All Rights Reserved.