Allows you to add multiple software metering rules at once (up to 500). Each rule is processed individually — successfully created rules are saved, while any that fail validation are reported back with the reason for failure.
post /dcapi/inventory/software/metering/bulk
https://{serverurl}/dcapi/inventory/software/metering/bulk
Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52
curl --request POST \
--url https://appdomains/dcapi/inventory/software/metering/bulk \
--header 'Accept: application/bulkRuleAddStatus.v1+json' \
--header 'Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52' \
--header 'Content-Type: application/bulkAddMeteringRules.v1+json' \
--data '{"rules":[{"fileName":"string","softwareID":0,"ruleName":"string","osPlatform":0}]}' {
"rules": [
{
"softwareID": 0,
"osPlatform": 0,
"ruleName": "string",
"fileName": "string",
"originalFileName": "string",
"fileVersion": "string",
"productName": "string",
"comments": "string"
}
]
}
Overall outcome - SUCCESS (all entries inserted), PARTIAL_SUCCESS (mix of inserted and failed) or FAILURE (zero inserted)
Entries inserted successfully. Each item carries softwareID, osPlatform, ruleName and the generated appDefinitionID
Entries rejected by validation or DB write (including duplicate rule names). Each item carries errorCode, errorMessage and the original input object echoed back
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
INTERNAL_ERROR - unexpected exception in the service layer
Internal server error message
Mixed bulk add outcome
{
"summary": {
"failedCount": 2,
"successCount": 1,
"totalRequested": 3
},
"failed": [
{
"input": {
"originalFileName": "Google Chrome.app",
"fileName": "Google Chrome",
"softwareID": 67890,
"comments": "Track Chrome on Mac",
"ruleName": "Chrome - Mac",
"osPlatform": 2,
"fileVersion": "",
"productName": "Google Chrome"
},
"errorMessage": "ruleName 'Chrome - Mac' is already in use",
"errorCode": "DUPLICATE_RULE_NAME"
},
{
"input": {
"originalFileName": "notepad++.exe",
"fileName": "notepad++.exe",
"softwareID": 789,
"comments": "",
"ruleName": "Notepad++ - Windows",
"osPlatform": 1,
"fileVersion": "",
"productName": "Notepad++"
},
"errorMessage": "Software 789 is not detected on osPlatform 1",
"errorCode": "OS_PLATFORM_MISMATCH"
}
],
"status": "PARTIAL_SUCCESS",
"succeeded": [
{
"softwareID": 67890,
"appDefinitionID": 9001,
"ruleName": "Chrome - Windows",
"osPlatform": 1
}
]
}
rules array missing, empty or above 500
{
"error_description": "rules array is required and must contain 1-500 entries",
"error_code": "INVALID_DATA"
}
Caller lacks Inventory_Admin role
{
"error_description": "Unauthorized access",
"error_code": "UAC_UNAUTHORIZED"
}
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.