Creates a new formula column under a specified sub-module. A formula column is a computed/derived column that works like a CASE-WHEN expression — it evaluates conditions (criteria) against existing report columns and returns a configured value for each match, with a default fallback value. The response includes the newly created column's ID, resolved data type, groupability, and available aggregation options.
post /dcapi/reports/customReports/formulaColumn
https://{serverurl}/dcapi/reports/customReports/formulaColumn
Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52
Sub-module name the formula column belongs to. Must be one of: Computer, Hardware, Software (case-insensitive)
Unique display name for the formula column. Alphanumeric only (A-Z, a-z, 0-9). Max 20 characters
Default value returned when no condition matches (the ELSE branch). Alphanumeric only. Max 100 characters
Array of condition objects (1-5). Each defines a CASE-WHEN branch with criteria and result value
Result value when this condition's criteria matches. Alphanumeric only. Max 100 characters
Array of criteria filter objects for this condition (1-30 per condition)
Column ID to evaluate the criteria against. Fetch from Get Available Columns
Comparison operator (e.g., equal, not equal, contains, greater than)
Array of string values to compare against
Logical operator (AND or OR) for combining with previous criteria
Logical expression combining criteria (e.g., 1, 1 AND 2, (1 OR 2) AND 3)
curl --request POST \
--url https://appdomains/dcapi/reports/customReports/formulaColumn \
--header 'Accept: application/columnCreationStatus.v1+json' \
--header 'Authorization: Zoho-oauthtoken d92d4xxxxxxxxxxxxx15f52' \
--header 'Content-Type: application/formulaColumn.v1+json' \
--data '{"defaultValue":"NotEligible","columnDetails":[{"criteria":[{"comparator":"equal","logicalOperator":"AND","columnID":"42","searchValue":["Windows 11"]}],"value":"Eligible","criteriaPattern":"1"}],"subModuleName":"Computer","columnName":"Windows11Eligibility"}'Create a CHAR-type formula column with one condition
{
"defaultValue": "NotEligible",
"columnDetails": [
{
"criteria": [
{
"comparator": "equal",
"logicalOperator": "AND",
"columnID": "42",
"searchValue": [
"Windows 11"
]
}
],
"value": "Eligible",
"criteriaPattern": "1"
}
],
"subModuleName": "Computer",
"columnName": "Windows11Eligibility"
}
Create a formula column with multiple CASE-WHEN conditions
{
"defaultValue": "Other",
"columnDetails": [
{
"criteria": [
{
"comparator": "contains",
"logicalOperator": "AND",
"columnID": "103",
"searchValue": [
"Windows"
]
}
],
"value": "Windows",
"criteriaPattern": "1"
},
{
"criteria": [
{
"comparator": "contains",
"logicalOperator": "AND",
"columnID": "103",
"searchValue": [
"Linux"
]
},
{
"comparator": "contains",
"logicalOperator": "OR",
"columnID": "103",
"searchValue": [
"Ubuntu"
]
}
],
"value": "Linux",
"criteriaPattern": "1 OR 2"
}
],
"subModuleName": "Computer",
"columnName": "OSCategory"
}
Unique identifier of the newly created formula column
Display name of the formula column (echoed from columnName in the request)
Resolved data type of the column based on all condition values and the default value. Possible values: CHAR, BIGINT, BOOLEAN
Whether the column can be used as a group-by column in custom reports. True for CHAR and BIGINT types, false for BOOLEAN
List of aggregation functions available for this column. Varies by dataType: CHAR gets ACTUAL_VALUE, COUNT, STRING_AGG; BIGINT gets ACTUAL_VALUE, COUNT, SUM, MIN, MAX, AVG
Human-readable display name of the aggregation function (e.g., Actual Value, Count, String Aggregate)
Aggregation method identifier: ACTUAL_VALUE, COUNT, STRING_AGG, SUM, MIN, MAX, AVG
Error code for validation failure: 400 = formula column name already exists, condition limit exceeded (max 5), criteria limit exceeded (max 30), or unknown/inaccessible column ID in criteria
Human-readable message describing the specific validation failure
Error code indicating insufficient permissions
Message indicating insufficient privileges to access this resource
Precondition failed error code: 412 = maximum formula column limit (100) reached across the organization
Message indicating the formula column creation limit has been reached
Expectation failed error code: Custom Report V2 is not enabled
Message indicating Custom Report V2 feature is not active
Rate limit error code returned when the API call reached threshold
Rate limit exceeded message with retry guidance
Internal error code: unexpected failure during formula column creation (e.g., database exception)
Detailed error description for the internal server error during formula column creation
Newly created CHAR-type formula column with string aggregation options
{
"columnID": "1",
"displayName": "Windows11Eligibility",
"dataType": "CHAR",
"groupable": true,
"aggOptions": [
{
"displayValue": "Actual Value",
"method": "ACTUAL_VALUE"
},
{
"displayValue": "Count",
"method": "COUNT"
},
{
"displayValue": "String Aggregate",
"method": "STRING_AGG"
}
]
}
Newly created BIGINT-type formula column with numeric aggregation options
{
"columnID": "2",
"displayName": "ScoreCategory",
"dataType": "BIGINT",
"groupable": true,
"aggOptions": [
{
"displayValue": "Actual Value",
"method": "ACTUAL_VALUE"
},
{
"displayValue": "Count",
"method": "COUNT"
},
{
"displayValue": "Sum",
"method": "SUM"
},
{
"displayValue": "Minimum",
"method": "MIN"
},
{
"displayValue": "Maximum",
"method": "MAX"
},
{
"displayValue": "Average",
"method": "AVG"
}
]
}
Formula column name already exists
{
"errorMessage": "Formula column name already exists",
"errorCode": "400"
}
Number of conditions exceeds the maximum limit
{
"errorMessage": "Number of formula condition limit(5) exceeded",
"errorCode": "400"
}
User does not have the required role
{
"errorMessage": "User does not have the required role to access this resource",
"errorCode": "403"
}
Maximum formula column limit (100) reached
{
"errorMessage": "Maximum number of formula column limit(100) reached",
"errorCode": "412"
}
Custom Report V2 is not enabled
{
"errorMessage": "Custom Report V2 is not enabled",
"errorCode": "417"
}
Rate limit exceeded
{
"errorMessage": "Rate limit exceeded. Please retry after some time",
"errorCode": "429"
}
Unexpected failure during formula column creation
{
"errorMessage": "Internal server error while creating formula column",
"errorCode": "500"
}
![]()
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.