Get Custom Lead Field by ID crm.lead.userfield.get

Choose a tool for developing with an AI agent:

  • use Alaio Vibecode to build an app for Bitrix24 from a task description without knowing any programming language. The agent writes the code and deploys the app to a server, with no manual hosting setup
  • use the MCP server to develop a REST API integration in your own project. The agent refers to the official REST documentation

Scope: crm

Who can execute the method: user with read access to leads

The method crm.lead.userfield.get returns a custom lead field by its identifier.

Method Parameters

Required parameters are marked with *

Name
type

Description

id*
integer

Identifier of the custom field associated with the lead.

The identifier can be obtained using the methods crm.lead.userfield.add or crm.lead.userfield.list

Code Examples

How to Use Examples in Documentation

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"id":399}' \
        https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.lead.userfield.get
        
curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"id":399,"auth":"**put_access_token_here**"}' \
        https://**put_your_bitrix24_address**/rest/crm.lead.userfield.get
        
// This snippet is an ES module: top-level await requires type="module" or a bundler.
        // $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
        import { Text } from '@bitrix24/b24jssdk'
        import type { B24Frame } from '@bitrix24/b24jssdk'
        
        declare const $b24: B24Frame
        
        // Shape of the payload returned in result (a representative subset of the user field properties)
        type CrmLeadUserField = {
          ID: string
          ENTITY_ID: string
          FIELD_NAME: string
          USER_TYPE_ID: string
          XML_ID: string | null
          SORT: string
          MULTIPLE: string
          MANDATORY: string
          SHOW_IN_LIST: string
          EDIT_FORM_LABEL: Record<string, string>
          LIST_COLUMN_LABEL: Record<string, string>
        }
        
        try {
          const response = await $b24.actions.v2.call.make<CrmLeadUserField>({
            method: 'crm.lead.userfield.get',
            params: {
              id: 399,
            },
            requestId: Text.getUuidRfc4122()
          })
        
          // The payload is available only on a successful response
          if (!response.isSuccess) {
            console.error(response.getErrorMessages().join('; '))
          } else {
            const result = response.getData()!.result
            console.info('User field:', result.FIELD_NAME, result.USER_TYPE_ID)
          }
        } catch (error) {
          // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
          console.error(error)
        }
        
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
        <script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
        <script>
          async function getLeadUserField() {
            try {
              // Initialize the SDK inside a Bitrix24 frame
              const $b24 = await B24Js.initializeB24Frame()
        
              const response = await $b24.actions.v2.call.make({
                method: 'crm.lead.userfield.get',
                params: {
                  id: 399,
                },
                requestId: B24Js.Text.getUuidRfc4122()
              })
        
              // The payload is available only on a successful response
              if (!response.isSuccess) {
                console.error(response.getErrorMessages().join('; '))
                return
              }
        
              const result = response.getData().result
              console.info('User field:', result.FIELD_NAME, result.USER_TYPE_ID)
            } catch (error) {
              // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
              console.error(error)
            }
          }
        
          document.addEventListener('DOMContentLoaded', getLeadUserField)
        </script>
        

        from b24pysdk.errors import BitrixAPIError, BitrixSDKException
        
        try:
            bitrix_response = client.crm.lead.userfield.get(
                bitrix_id=410,
            ).response
            result = bitrix_response.result
            print(result)
        except BitrixAPIError as error:
            print(
                "Bitrix API error",
                f"error: {error.error}",
                f"error_description: {error.error_description}",
                sep="\n",
            )
        except BitrixSDKException as error:
            print(f"Bitrix SDK error: {error.message}")
        except Exception as error:
            print(f"Unexpected error: {error}")
        
try {
            $response = $b24Service
                ->core
                ->call(
                    'crm.lead.userfield.get',
                    [
                        'id' => 399,
                    ]
                );
        
            $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 getting company user field: ' . $e->getMessage();
        }
        
BX24.callMethod(
            'crm.lead.userfield.get',
            {
                id: 399,
            },
            (result) => {
                result.error()
                    ? console.error(result.error())
                    : console.info(result.data())
                ;
            },
        );
        
require_once('crest.php');
        
        $result = CRest::call(
            'crm.lead.userfield.get',
            [
                'id' => 399
            ]
        );
        
        echo '<PRE>';
        print_r($result);
        echo '</PRE>';
        
// client and ctx are already created — see the Go SDK section
        res, err := client.Core().Call(ctx, "crm.lead.userfield.get", b24.Params{
        	"id": 399,
        }, b24.WithIdempotent())
        if err != nil {
        	return fmt.Errorf("crm.lead.userfield.get: %w", err)
        }
        
        var item struct {
        	ID         b24.ID `json:"ID"`
        	EntityID   string `json:"ENTITY_ID"`
        	FieldName  string `json:"FIELD_NAME"`
        	UserTypeID string `json:"USER_TYPE_ID"`
        	Sort       string `json:"SORT"`
        	Multiple   string `json:"MULTIPLE"`
        }
        if err := json.Unmarshal(res.Result, &item); err != nil {
        	return fmt.Errorf("parse response: %w", err)
        }
        fmt.Println(item.ID, item.EntityID)
        

Response Handling

HTTP Status: 200

{
            "result": {
                "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 (changed)"
                },
                "EDIT_FORM_LABEL": {
                    "ar": "",
                    "br": "",
                    "de": "Hallo, Welt! Bearbeiten (geändert)",
                    "en": "Hello, World! Edit (changed)",
                    "fr": "",
                    "hi": "",
                    "id": "",
                    "in": "",
                    "it": "",
                    "ja": "",
                    "kz": "",
                    "la": "",
                    "ms": "",
                    "pl": "",
                    "ru": "",
                    "sc": "",
                    "tc": "",
                    "th": "",
                    "tr": "",
                    "ua": "",
                    "vn": ""
                },
                "LIST_COLUMN_LABEL": {
                    "ar": "",
                    "br": "",
                    "de": "Hallo, Welt! Spalte (geändert)",
                    "en": "Hello, World! Column (changed)",
                    "fr": "",
                    "hi": "",
                    "id": "",
                    "in": "",
                    "it": "",
                    "ja": "",
                    "kz": "",
                    "la": "",
                    "ms": "",
                    "pl": "",
                    "ru": "",
                    "sc": "",
                    "tc": "",
                    "th": "",
                    "tr": "",
                    "ua": "",
                    "vn": ""
                },
                "LIST_FILTER_LABEL": {
                    "ar": "Hello, World! Column (changed)",
                    "br": "Hello, World! Column (changed)",
                    "de": "Hello, World! Column (changed)",
                    "en": "Hello, World! Column (changed)",
                    "fr": "Hello, World! Column (changed)",
                    "hi": "Hello, World! Column (changed)",
                    "id": "Hello, World! Column (changed)",
                    "in": "Hello, World! Column (changed)",
                    "it": "Hello, World! Column (changed)",
                    "ja": "Hello, World! Column (changed)",
                    "kz": "Hello, World! Column (changed)",
                    "la": "Hello, World! Column (changed)",
                    "ms": "Hello, World! Column (changed)",
                    "pl": "Hello, World! Column (changed)",
                    "ru": "Hello, World! Column (changed)",
                    "sc": "Hello, World! Column (changed)",
                    "tc": "Hello, World! Column (changed)",
                    "th": "Hello, World! Column (changed)",
                    "tr": "Hello, World! Column (changed)",
                    "ua": "Hello, World! Column (changed)",
                    "vn": "Hello, World! Column (changed)"
                },
                "ERROR_MESSAGE": {
                    "ar": "",
                    "br": "",
                    "de": "Hallo, Welt! Fehler (geändert)",
                    "en": "Hello, World! Error (changed)",
                    "fr": "",
                    "hi": "",
                    "id": "",
                    "in": "",
                    "it": "",
                    "ja": "",
                    "kz": "",
                    "la": "",
                    "ms": "",
                    "pl": "",
                    "ru": "",
                    "sc": "",
                    "tc": "",
                    "th": "",
                    "tr": "",
                    "ua": "",
                    "vn": ""
                },
                "HELP_MESSAGE": {
                    "ar": "",
                    "br": "",
                    "de": "Hallo, Welt! Hilfe (geändert)",
                    "en": "Hello, World! Help (changed)",
                    "fr": "",
                    "hi": "",
                    "id": "",
                    "in": "",
                    "it": "",
                    "ja": "",
                    "kz": "",
                    "la": "",
                    "ms": "",
                    "pl": "",
                    "ru": "",
                    "sc": "",
                    "tc": "",
                    "th": "",
                    "tr": "",
                    "ua": "",
                    "vn": ""
                }
            },
            "time": {
                "start": 1753790529.430936,
                "finish": 1753790529.487882,
                "duration": 0.05694580078125,
                "processing": 0.0039789676666259766,
                "date_start": "2025-07-29T15:02:09+02:00",
                "date_finish": "2025-07-29T15:02:09+02:00",
                "operating_reset_at": 1753791129,
                "operating": 0
            }
        }
        

Returned Data

Name
type

Description

result
object

The root element of the response, containing information about the custom field. The final list of fields depends on the field type; detailed descriptions of the fields can be found in the method crm.lead.userfield.add

time
time

Information about the request execution time

Error Handling

HTTP Status: 400

{
            "error": "",
            "error_description": "ID is not defined or invalid."
        }
        

Name
type

Description

error
string

String error code. It consists of digits, Latin letters, and underscores. It may arrive empty — in that case only error_description shows the reason

error_description
string

Error message for the developer. Do not show it to the end user without processing

Possible Error Codes

Code

Description

Value

403

Access denied

Occurs when:

  • the user does not have permission to read leads
  • the user attempts to retrieve a custom field not associated with leads

400

ID is not defined or invalid

The provided id is less than or equal to zero, or not provided at all

ERROR_NOT_FOUND

The entity with ID 'id' is not found

The custom field with the provided id was not found

Continue Learning