Get a List of Custom Fields for crm.quote.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: a user with read access to estimates
The method crm.quote.userfield.list returns a list of custom fields for estimates 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 editing by the user. Possible values:
|
|
IS_SEARCHABLE |
Whether the field values are searchable. 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. By filtering with the
LANGparameter, we will additionally receive 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.quote.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.quote.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.quote.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.quote.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.quote.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.quote.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.quote.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.quote.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_QUOTE",
"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_QUOTE",
"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_QUOTE",
"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_QUOTE",
"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_QUOTE",
"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 |
The root element of the response, contains a list of custom fields. The structure of an individual custom field depends on its type. The fields |
|
total |
The 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 Estimates crm.quote.userfield.add
- Update Existing Custom Field for Quotes crm.quote.userfield.update
- Get Custom Field of Estimates by ID crm.quote.userfield.get
- Delete Custom Field for Quotes crm.quote.userfield.delete