Get a List of Custom Fields for Leads crm.lead.userfield.list
If you are developing integrations for Bitrix24 using AI tools (Codex, Claude Code, Cursor), connect to the MCP server so that the assistant can utilize the official REST documentation.
Scope:
crmWho can execute the method: user with read access to leads
The method crm.lead.userfield.list returns a list of custom fields for leads based on a filter.
Method Parameters
|
Name |
Description |
|
filter |
Object format:
All conditions for individual fields are combined using |
|
order |
Object format:
Available fields for sorting:
By default:
|
Filterable Fields
|
Name |
Description |
|
ID |
Identifier of the custom field |
|
FIELD_NAME |
Code of the custom field |
|
USER_TYPE_ID |
Type of the custom field. Possible values:
|
|
XML_ID |
External code |
|
SORT |
Sort index |
|
MULTIPLE |
Indicates whether the custom field is multiple.
|
|
MANDATORY |
Indicates whether the custom field is mandatory. Possible values:
|
|
SHOW_FILTER |
Whether to show in the list filter. Possible values:
|
|
SHOW_IN_LIST |
Whether to show in the list. Possible values:
|
|
EDIT_IN_LIST |
Whether to allow user editing. Possible values:
|
|
IS_SEARCHABLE |
Whether the field values participate in search. Possible values:
|
|
LANG |
Language identifier. When filtering by this parameter, a set of fields with values in the specified language will be provided:
|
Code Examples
How to Use Examples in Documentation
Get a list of custom fields that:
- are multiple,
- are mandatory,
- have custom field labels in German. The filter by the
LANGparameter will additionally provide the field names in the response.
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"filter":{"MULTIPLE":"Y","MANDATORY":"Y","LANG":"de"},"order":{"USER_TYPE_ID":"ASC","SORT":"ASC"}}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.lead.userfield.list
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"filter":{"MULTIPLE":"Y","MANDATORY":"Y","LANG":"de"},"order":{"USER_TYPE_ID":"ASC","SORT":"ASC"},"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/crm.lead.userfield.list
// callListMethod: Retrieves all data at once. Use only for small selections (< 1000 items) due to high memory load.
try {
const response = await $b24.callListMethod(
'crm.lead.userfield.list',
{
filter: {
MULTIPLE: "Y",
MANDATORY: "Y",
LANG: "de",
},
order: {
USER_TYPE_ID: "ASC",
SORT: "ASC",
},
},
(progress: number) => { console.log('Progress:', progress) }
);
const items = response.getData() || [];
for (const entity of items) { console.log('Entity:', entity) }
} catch (error: any) {
console.error('Request failed', error)
}
// fetchListMethod: Retrieves data in parts using an iterator. Use for large volumes of data for efficient memory consumption.
try {
const generator = $b24.fetchListMethod('crm.lead.userfield.list', {
filter: {
MULTIPLE: "Y",
MANDATORY: "Y",
LANG: "de",
},
order: {
USER_TYPE_ID: "ASC",
SORT: "ASC",
},
}, 'ID');
for await (const page of generator) {
for (const entity of page) { console.log('Entity:', entity) }
}
} catch (error: any) {
console.error('Request failed', error)
}
// callMethod: Manual control of pagination through the start parameter. Use for precise control over request batches. Less efficient for large data than fetchListMethod.
try {
const response = await $b24.callMethod('crm.lead.userfield.list', {
filter: {
MULTIPLE: "Y",
MANDATORY: "Y",
LANG: "de",
},
order: {
USER_TYPE_ID: "ASC",
SORT: "ASC",
},
}, 0);
const result = response.getData().result || [];
for (const entity of result) { console.log('Entity:', entity) }
} catch (error: any) {
console.error('Request failed', error)
}
try {
$response = $b24Service
->core
->call(
'crm.lead.userfield.list',
[
'filter' => [
'MULTIPLE' => 'Y',
'MANDATORY' => 'Y',
'LANG' => 'de',
],
'order' => [
'USER_TYPE_ID' => 'ASC',
'SORT' => 'ASC',
],
]
);
$result = $response
->getResponseData()
->getResult();
if ($result->error()) {
echo 'Error: ' . $result->error();
} else {
echo 'Data: ' . print_r($result->data(), true);
}
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error fetching company user fields: ' . $e->getMessage();
}
BX24.callMethod(
'crm.lead.userfield.list',
{
filter: {
MULTIPLE: "Y",
MANDATORY: "Y",
LANG: "de",
},
order: {
USER_TYPE_ID: "ASC",
SORT: "ASC",
},
},
(result) => {
result.error()
? console.error(result.error())
: console.info(result.data())
;
},
);
require_once('crest.php');
$result = CRest::call(
'crm.lead.userfield.list',
[
'filter' => [
'MULTIPLE' => "Y",
'MANDATORY' => "N",
'LANG' => "de",
],
'order' => [
'USER_TYPE_ID' => "ASC",
'SORT' => "ASC",
]
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
Response Handling
HTTP Status: 200
{
"result": [
{
"ID": "5815",
"ENTITY_ID": "CRM_LEAD",
"FIELD_NAME": "UF_CRM_1713790573",
"USER_TYPE_ID": "crm_status",
"XML_ID": null,
"SORT": "100",
"MULTIPLE": "Y",
"MANDATORY": "N",
"SHOW_FILTER": "I",
"SHOW_IN_LIST": "Y",
"EDIT_IN_LIST": "Y",
"IS_SEARCHABLE": "N",
"SETTINGS": {
"ENTITY_TYPE": "INDUSTRY"
},
"EDIT_FORM_LABEL": "Directory",
"LIST_COLUMN_LABEL": "Directory",
"LIST_FILTER_LABEL": "Directory",
"ERROR_MESSAGE": null,
"HELP_MESSAGE": null
},
{
"ID": "6799",
"ENTITY_ID": "CRM_LEAD",
"FIELD_NAME": "UF_CRM_1724077760",
"USER_TYPE_ID": "enumeration",
"XML_ID": null,
"SORT": "150",
"MULTIPLE": "Y",
"MANDATORY": "N",
"SHOW_FILTER": "E",
"SHOW_IN_LIST": "Y",
"EDIT_IN_LIST": "Y",
"IS_SEARCHABLE": "N",
"SETTINGS": {
"DISPLAY": "LIST",
"LIST_HEIGHT": 1,
"CAPTION_NO_VALUE": "",
"SHOW_NO_VALUE": "Y"
},
"EDIT_FORM_LABEL": "Radio",
"LIST_COLUMN_LABEL": "Radio",
"LIST_FILTER_LABEL": "Radio",
"ERROR_MESSAGE": null,
"HELP_MESSAGE": null,
"LIST": [
{
"ID": "3157",
"SORT": "10",
"VALUE": "Children's Radio",
"DEF": "N",
"XML_ID": "79b4c576f96e65eb40f390e45c0dc802"
},
{
"ID": "3159",
"SORT": "20",
"VALUE": "Shanson Radio",
"DEF": "N",
"XML_ID": "d3ffd89a825f218f5efd79dffd38fbbf"
},
{
"ID": "3161",
"SORT": "30",
"VALUE": "Love Radio",
"DEF": "N",
"XML_ID": "dff769fa19d7d7ce8d0677341d221161"
},
{
"ID": "3163",
"SORT": "40",
"VALUE": "Monte Carlo Radio",
"DEF": "N",
"XML_ID": "1f22e5c818ce336a42bd0ec94eb69b9e"
},
{
"ID": "3181",
"SORT": "130",
"VALUE": "DFM Yuriev-Polsky",
"DEF": "N",
"XML_ID": "fc1c5e6b4a9fd20b4749240b8dbac41a"
}
]
},
{
"ID": "6791",
"ENTITY_ID": "CRM_LEAD",
"FIELD_NAME": "UF_CRM_1722578010",
"USER_TYPE_ID": "file",
"XML_ID": null,
"SORT": "150",
"MULTIPLE": "Y",
"MANDATORY": "N",
"SHOW_FILTER": "E",
"SHOW_IN_LIST": "Y",
"EDIT_IN_LIST": "Y",
"IS_SEARCHABLE": "N",
"SETTINGS": {
"SIZE": 20,
"LIST_WIDTH": 0,
"LIST_HEIGHT": 0,
"MAX_SHOW_SIZE": 0,
"MAX_ALLOWED_SIZE": 0,
"EXTENSIONS": [],
"TARGET_BLANK": "Y"
},
"EDIT_FORM_LABEL": "Estimate (files)",
"LIST_COLUMN_LABEL": "Estimate (files)",
"LIST_FILTER_LABEL": "Estimate (files)",
"ERROR_MESSAGE": null,
"HELP_MESSAGE": null
},
{
"ID": "5567",
"ENTITY_ID": "CRM_LEAD",
"FIELD_NAME": "UF_CRM_1709565075",
"USER_TYPE_ID": "resourcebooking",
"XML_ID": null,
"SORT": "1",
"MULTIPLE": "Y",
"MANDATORY": "N",
"SHOW_FILTER": "N",
"SHOW_IN_LIST": "Y",
"EDIT_IN_LIST": "Y",
"IS_SEARCHABLE": "N",
"SETTINGS": {
"USE_USERS": "N",
"USE_RESOURCES": "Y",
"RESOURCES": {
"resource": {
"XML_ID": "resource",
"NAME": "resource",
"SECTIONS": [
{
"ID": "7",
"CAL_TYPE": "resource",
"NAME": "Museum Hall"
},
{
"ID": "49",
"CAL_TYPE": "resource",
"NAME": "resource 1"
},
{
"ID": "51",
"CAL_TYPE": "resource",
"NAME": "resource 2"
},
{
"ID": "53",
"CAL_TYPE": "resource",
"NAME": "1"
},
{
"ID": "57",
"CAL_TYPE": "resource",
"NAME": "Resource"
},
{
"ID": "59",
"CAL_TYPE": "resource",
"NAME": "Resource 2"
}
]
}
},
"SELECTED_RESOURCES": [
{
"type": "resource",
"id": "7",
"title": "Museum Hall"
}
],
"SELECTED_USERS": [],
"FULL_DAY": "N",
"ALLOW_OVERBOOKING": "Y",
"USE_SERVICES": "N",
"SERVICE_LIST": [
{
"name": "",
"duration": "60"
}
],
"RESOURCE_LIMIT": -1,
"TIMEZONE": "Europe/Berlin",
"USE_USER_TIMEZONE": "N"
},
"EDIT_FORM_LABEL": "MEETING ROOM BOOKING",
"LIST_COLUMN_LABEL": "MEETING ROOM BOOKING",
"LIST_FILTER_LABEL": "MEETING ROOM BOOKING",
"ERROR_MESSAGE": null,
"HELP_MESSAGE": null
},
{
"ID": "6997",
"ENTITY_ID": "CRM_LEAD",
"FIELD_NAME": "UF_CRM_HELLO_WORLD",
"USER_TYPE_ID": "string",
"XML_ID": null,
"SORT": "2000",
"MULTIPLE": "Y",
"MANDATORY": "N",
"SHOW_FILTER": "N",
"SHOW_IN_LIST": "Y",
"EDIT_IN_LIST": "N",
"IS_SEARCHABLE": "N",
"SETTINGS": {
"SIZE": 20,
"ROWS": 10,
"REGEXP": "",
"MIN_LENGTH": 0,
"MAX_LENGTH": 0,
"DEFAULT_VALUE": "Hello, world! Default value (modified)"
},
"EDIT_FORM_LABEL": "Hello, world! Edit (modified)",
"LIST_COLUMN_LABEL": "Hello, world! Column (modified)",
"LIST_FILTER_LABEL": "Hello, world! Filter (modified)",
"ERROR_MESSAGE": "Hello, world! Error (modified)",
"HELP_MESSAGE": "Hello, world! Help (modified)"
}
],
"total": 5,
"time": {
"start": 1753793143.219832,
"finish": 1753793143.529472,
"duration": 0.30964016914367676,
"processing": 0.06361007690429688,
"date_start": "2025-07-29T15:45:43+02:00",
"date_finish": "2025-07-29T15:45:43+02:00",
"operating_reset_at": 1753793743,
"operating": 0
}
}
Returned Data
|
Name |
Description |
|
result |
Root element of the response, contains a list of custom fields. The structure of an individual custom field depends on its type. Fields |
|
total |
Number of found custom fields |
|
time |
Information about the execution time of the request |
Error Handling
HTTP Status: 400
{
"error": "",
"error_description": "Parameter 'filter' must be array."
}
|
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
|
Code |
Description |
Value |
|
|
Parameter 'order' must be array |
The provided |
|
|
Parameter 'filter' must be array |
The provided |
Continue Learning
- Create a Custom Field for Leads crm.lead.userfield.add
- Update Existing Custom Field for Leads crm.lead.userfield.update
- Get Custom Lead Field by ID crm.lead.userfield.get
- Delete Custom Field for Leads crm.lead.userfield.delete