Add Custom Field task.item.userfield.add
Scope:
taskWho can execute the method: administrator
The method task.item.userfield.add creates a custom field for a task.
When creating a custom field, it is mandatory to use the prefix UF_ in the field name FIELD_NAME. If the prefix is not specified, the system will automatically add it to the beginning of the name.
Method Parameters
Required parameters are marked with *
|
Name |
Description |
|
PARAMS* |
Set of parameters for the created field (detailed description) |
Parameter PARAMS
|
Name |
Description |
|
USER_TYPE_ID* |
Data type of the custom field. Supported values:
|
|
FIELD_NAME* |
Code of the custom field |
|
XML_ID |
External identifier |
|
EDIT_FORM_LABEL |
Label in the edit form (detailed description) |
|
LABEL |
Name of the custom field |
|
SORT |
Sorting |
|
MULTIPLE |
Multiple value. Possible values:
Applicable for types |
|
MANDATORY |
Mandatory value. Possible values:
|
|
SETTINGS |
Additional settings for the field type (detailed description) |
Parameter EDIT_FORM_LABEL
|
Name |
Description |
|
de |
Label in German |
|
en |
Label in English |
Parameter SETTINGS
The fields of the SETTINGS object depend on the USER_TYPE_ID type.
|
Name |
Description |
|
DEFAULT_VALUE |
Default value |
|
ROWS |
Number of rows in the input field |
|
Name |
Description |
|
DEFAULT_VALUE |
Default value |
|
Name |
Description |
|
DEFAULT_VALUE |
Default value. Described as an object with two parameters:
|
Code Examples
How to Use Examples in Documentation
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"PARAMS": {
"USER_TYPE_ID": "string",
"FIELD_NAME": "UF_TASK_CLIENT_REQUEST",
"XML_ID": "UF_TASK_CLIENT_REQUEST",
"EDIT_FORM_LABEL": {
"de": "Kundenanfrage",
"en": "Client request"
},
"LABEL": "Client request",
"SORT": 220,
"MULTIPLE": "N",
"MANDATORY": "Y",
"SETTINGS": {
"DEFAULT_VALUE": "Clarify the goal and expected outcome",
"ROWS": 10
}
}
}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/task.item.userfield.add
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"PARAMS": {
"USER_TYPE_ID": "string",
"FIELD_NAME": "UF_TASK_CLIENT_REQUEST",
"XML_ID": "UF_TASK_CLIENT_REQUEST",
"EDIT_FORM_LABEL": {
"de": "Kundenanfrage",
"en": "Client request"
},
"LABEL": "Client request",
"SORT": 220,
"MULTIPLE": "N",
"MANDATORY": "Y",
"SETTINGS": {
"DEFAULT_VALUE": "Clarify the goal and expected outcome",
"ROWS": 10
}
},
"auth": "**put_access_token_here**"
}' \
https://**put_your_bitrix24_address**/rest/task.item.userfield.add
try
{
const response = await $b24.callMethod(
'task.item.userfield.add',
{
PARAMS: {
USER_TYPE_ID: 'string',
FIELD_NAME: 'UF_TASK_CLIENT_REQUEST',
XML_ID: 'UF_TASK_CLIENT_REQUEST',
EDIT_FORM_LABEL: {
de: 'Kundenanfrage',
en: 'Client request'
},
LABEL: 'Client request',
SORT: 220,
MULTIPLE: 'N',
MANDATORY: 'Y',
SETTINGS: {
DEFAULT_VALUE: 'Clarify the goal and expected outcome',
ROWS: 10
}
}
}
);
const result = response.getData().result;
console.log(result);
}
catch (error)
{
console.error(error);
}
try {
$response = $b24Service
->core
->call(
'task.item.userfield.add',
[
'PARAMS' => [
'USER_TYPE_ID' => 'string',
'FIELD_NAME' => 'UF_TASK_CLIENT_REQUEST',
'XML_ID' => 'UF_TASK_CLIENT_REQUEST',
'EDIT_FORM_LABEL' => [
'de' => 'Kundenanfrage',
'en' => 'Client request'
],
'LABEL' => 'Client request',
'SORT' => 220,
'MULTIPLE' => 'N',
'MANDATORY' => 'Y',
'SETTINGS' => [
'DEFAULT_VALUE' => 'Clarify the goal and expected outcome',
'ROWS' => 10
]
]
]
);
$result = $response
->getResponseData()
->getResult();
print_r($result);
} catch (Throwable $e) {
echo $e->getMessage();
}
BX24.callMethod(
'task.item.userfield.add',
{
PARAMS: {
USER_TYPE_ID: 'string',
FIELD_NAME: 'UF_TASK_CLIENT_REQUEST',
XML_ID: 'UF_TASK_CLIENT_REQUEST',
LABEL: 'Client request',
EDIT_FORM_LABEL: {
de: 'Kundenanfrage',
en: 'Client request'
},
SORT: 220,
MULTIPLE: 'N',
MANDATORY: 'Y',
SETTINGS: {
DEFAULT_VALUE: 'Clarify the goal and expected outcome',
ROWS: 10
}
}
},
function(result)
{
if (result.error())
{
console.error(result.error());
}
else
{
console.log(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'task.item.userfield.add',
[
'PARAMS' => [
'USER_TYPE_ID' => 'string',
'FIELD_NAME' => 'UF_TASK_CLIENT_REQUEST',
'XML_ID' => 'UF_TASK_CLIENT_REQUEST',
'EDIT_FORM_LABEL' => [
'de' => 'Kundenanfrage',
'en' => 'Client request'
],
'LABEL' => 'Client request',
'SORT' => 220,
'MULTIPLE' => 'N',
'MANDATORY' => 'Y',
'SETTINGS' => [
'DEFAULT_VALUE' => 'Clarify the goal and expected outcome',
'ROWS' => 10
]
]
]
);
print_r($result);
Response Handling
HTTP Status: 200
{
"result": 1325,
"time": {
"start": 1772711476,
"finish": 1772711476.284127,
"duration": 0.28412699699401855,
"processing": 0,
"date_start": "2026-03-05T14:51:16+01:00",
"date_finish": "2026-03-05T14:51:16+01:00",
"operating_reset_at": 1772712076,
"operating": 0
}
}
Returned Data
|
Name |
Description |
|
result |
Identifier of the created custom field |
|
time |
Information about the request execution time |
Error Handling
HTTP Status: 400
{
"error": "ERROR_CORE",
"error_description": "The 'USER_TYPE_ID' field is not found."
}
|
Name |
Description |
|
error |
String error code. It may consist of digits, Latin letters, and underscores |
|
error_description |
Textual description of the error. The description is not intended to be shown to the end user in its raw form |
Possible Error Codes
|
Status |
Code |
Description |
Value |
|
|
|
The 'USER_TYPE_ID' field is not found |
The |
|
|
|
Invalid user type specified. |
An invalid or non-existent user field type is specified in the |
|
|
|
The 'FIELD_NAME' field is not found |
The |
|
|
|
The field UF_TASK_CLIENT_REQUEST for the object TASKS_TASK already exists. |
The |
|
|
|
Access denied |
Insufficient permissions to create a custom field |
Statuses and System Error Codes
HTTP Status: 20x, 40x, 50x
The errors described below may occur when calling any method.
|
Status |
Code |
Description |
|
|
|
An internal server error has occurred, please contact the server administrator or Bitrix24 technical support |
|
|
|
An internal server error has occurred, please contact the server administrator or Bitrix24 technical support |
|
|
|
The request intensity limit has been exceeded |
|
|
|
The current method is not allowed to be called using batch |
|
|
|
The maximum length of parameters passed to the batch method has been exceeded |
|
|
|
Invalid access token or webhook code |
|
|
|
The methods must be called using the HTTPS protocol |
|
|
|
The REST API is blocked due to overload. This is a manual individual block, to remove it you need to contact Bitrix24 technical support |
|
|
|
The REST API is available only on commercial plans |
|
|
|
The user whose access token or webhook was used to call the method lacks permissions |
|
|
|
The manifest is not available |
|
|
|
The request requires higher privileges than those provided by the webhook token |
|
|
|
The provided access token has expired |
|
|
|
The user does not have access to the application. This means that the application is installed, but the account administrator has allowed access to this application only for specific users |
|
|
|
The public part of the site is closed. To open the public part of the site on an on-premise installation, disable the option "Temporary closure of the public part of the site". Path to the setting: Desktop > Settings > Product Settings > Module Settings > Main Module > Temporary closure of the public part of the site |
Continue Learning
- Custom Fields in Tasks: Overview of Methods
- Update Custom Field task.item.userfield.update
- Get User Field of Task by ID task.item.userfield.get
- Get a List of Custom Fields task.item.userfield.getlist
- Delete User Field `task.item.userfield.delete`
- Get a List of Available Data Types for task.item.userfield.gettypes
- Get Custom Field Data with task.item.userfield.getfields