{% note tip "" %}
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.
{% endnote %}
Scope:
crmWho can execute the method: any user with "read" access permission for CRM object elements
This method returns information about an entity based on its identifier and the identifier of the CRM object type.
{% include Note on required parameters %}
#|
|| Name
type | Description ||
|| entityTypeId*
integer | Identifier of the system or custom type whose element we want to retrieve.
Numeric values for system types (Lead — 1, Deal — 2, Contact — 3, Company — 4, Invoice — 31, etc.) are listed in the CRM object types reference. The identifier for a smart process can be obtained using the crm.type.list method. ||
|| id*
integer | Identifier of the element whose information we want to retrieve.
This can be obtained using the crm.item.list method or when creating an element with the crm.item.add method. ||
|| useOriginalUfNames
boolean | This parameter controls the format of custom field names in the response.
Possible values:
Y— original names of custom fields, e.g.,UF_CRM_2_1639669411830N— custom field names in camelCase, e.g.,ufCrm2_1639669411830
Default is N ||
|#
{% include Note on examples %}
Retrieve information about a lead with id = 250
{% list tabs %}
-
cURL (Webhook)
curl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"entityTypeId":1,"id":250,"useOriginalUfNames":"N"}' \ https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.item.get
-
cURL (OAuth)
curl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"entityTypeId":1,"id":250,"useOriginalUfNames":"N","auth":"**put_access_token_here**"}' \ https://**put_your_bitrix24_address**/rest/crm.item.get
-
JS (TS)
// 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, ISODate } from '@bitrix24/b24jssdk' declare const $b24: B24Frame // Shape of the payload returned in result (match the "response handling" section of the page) type CrmItemGetResult = { item: { id: number createdTime: ISODate updatedTime: ISODate createdBy: number updatedBy: number assignedById: number opened: string stageId: string stageSemanticId: string opportunity: number currencyId: string sourceId: string title: string name: string lastName: string movedBy: number movedTime: ISODate lastActivityBy: number lastActivityTime: ISODate email: string phone: string fm: Array<{ id: number valueType: string value: string typeId: string }> observers: number[] contactIds: number[] entityTypeId: number } } try { const response = await $b24.actions.v2.call.make<CrmItemGetResult>({ method: 'crm.item.get', params: { entityTypeId: 1, id: 250, useOriginalUfNames: 'N', }, 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('Item:', result.item.id, result.item.title, result.item.entityTypeId) } } catch (error) { // Thrown on transport or SDK failures (AjaxError, SdkError, etc.) console.error(error) }
-
JS (UMD)
<!-- 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 fetchCrmItem() { try { // Initialize the SDK inside a Bitrix24 frame const $b24 = await B24Js.initializeB24Frame() const response = await $b24.actions.v2.call.make({ method: 'crm.item.get', params: { entityTypeId: 1, id: 250, useOriginalUfNames: 'N', }, 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('Item:', result.item.id, result.item.title, result.item.entityTypeId) } catch (error) { // Thrown on transport or SDK failures (AjaxError, SdkError, etc.) console.error(error) } } document.addEventListener('DOMContentLoaded', fetchCrmItem) </script>
-
PHP
try { $entityTypeId = 1; // Example entity type ID $id = 123; // Example item ID $itemResult = $serviceBuilder ->getCRMScope() ->item() ->get($entityTypeId, $id); $item = $itemResult->item(); print("ID: " . $item->id . PHP_EOL); print("XML ID: " . $item->xmlId . PHP_EOL); print("Title: " . $item->title . PHP_EOL); print("Created By: " . $item->createdBy . PHP_EOL); print("Updated By: " . $item->updatedBy . PHP_EOL); print("Moved By: " . $item->movedBy . PHP_EOL); print("Created Time: " . $item->createdTime->format(DATE_ATOM) . PHP_EOL); print("Updated Time: " . $item->updatedTime->format(DATE_ATOM) . PHP_EOL); print("Moved Time: " . $item->movedTime->format(DATE_ATOM) . PHP_EOL); print("Category ID: " . $item->categoryId . PHP_EOL); print("Opened: " . ($item->opened ? 'true' : 'false') . PHP_EOL); print("Previous Stage ID: " . $item->previousStageId . PHP_EOL); print("Begin Date: " . $item->begindate->format(DATE_ATOM) . PHP_EOL); print("Close Date: " . $item->closedate->format(DATE_ATOM) . PHP_EOL); print("Company ID: " . $item->companyId . PHP_EOL); print("Contact ID: " . $item->contactId . PHP_EOL); print("Opportunity: " . $item->opportunity . PHP_EOL); print("Is Manual Opportunity: " . ($item->isManualOpportunity ? 'true' : 'false') . PHP_EOL); print("Tax Value: " . $item->taxValue . PHP_EOL); print("Currency ID: " . $item->currencyId . PHP_EOL); print("Opportunity Account: " . $item->opportunityAccount . PHP_EOL); print("Tax Value Account: " . $item->taxValueAccount . PHP_EOL); print("Account Currency ID: " . $item->accountCurrencyId . PHP_EOL); print("My Company ID: " . $item->mycompanyId . PHP_EOL); print("Source ID: " . $item->sourceId . PHP_EOL); print("Source Description: " . $item->sourceDescription . PHP_EOL); print("Webform ID: " . $item->webformId . PHP_EOL); print("Assigned By ID: " . $item->assignedById . PHP_EOL); print("Last Activity By: " . $item->lastActivityBy . PHP_EOL); print("Last Activity Time: " . $item->lastActivityTime->format(DATE_ATOM) . PHP_EOL); print("UTM Source: " . $item->utmSource . PHP_EOL); print("UTM Medium: " . $item->utmMedium . PHP_EOL); print("UTM Campaign: " . $item->utmCampaign . PHP_EOL); print("UTM Content: " . $item->utmContent . PHP_EOL); print("UTM Term: " . $item->utmTerm . PHP_EOL); print("Observers: " . json_encode($item->observers) . PHP_EOL); print("Contact IDs: " . json_encode($item->contactIds) . PHP_EOL); print("Entity Type ID: " . $item->entityTypeId . PHP_EOL); } catch (Throwable $e) { print("Error: " . $e->getMessage() . PHP_EOL); }
-
Python
Example
from b24pysdk.client import BaseClient from b24pysdk.errors import BitrixAPIError, BitrixSDKException client: BaseClient try: bitrix_response = client.crm.item.get( entity_type_id=1, bitrix_id=250, use_original_uf_names=False, ).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}")
-
BX24.js
BX24.callMethod( 'crm.item.get', { entityTypeId: 1, id: 250, useOriginalUfNames: 'N', }, (result) => { if (result.error()) { console.error(result.error()); return; } console.info(result.data()); }, );
-
PHP CRest
require_once('crest.php'); $result = CRest::call( 'crm.item.get', [ 'entityTypeId' => 1, 'id' => 250, 'useOriginalUfNames' => 'N', ] ); echo '<PRE>'; print_r($result); echo '</PRE>';
-
Go
// client and ctx are already created — see the Go SDK section res, err := client.Core().Call(ctx, "crm.item.get", b24.Params{ "entityTypeId": 1, "id": 250, "useOriginalUfNames": "N", }, b24.WithIdempotent()) if err != nil { return fmt.Errorf("crm.item.get: %w", err) } // The method wraps the response in an object with the "item" key. raw, ok := b24.Unwrap(res.Result, "item") if !ok { return fmt.Errorf("no item key in the response") } var item struct { ID b24.ID `json:"id"` CreatedTime string `json:"createdTime"` UpdatedTime string `json:"updatedTime"` CreatedBy int `json:"createdBy"` UpdatedBy int `json:"updatedBy"` AssignedByID b24.ID `json:"assignedById"` } if err := json.Unmarshal(raw, &item); err != nil { return fmt.Errorf("parse response: %w", err) } fmt.Println(item.ID, item.CreatedTime)
{% endlist %}
HTTP status: 200
{
"result": {
"item": {
"id": 250,
"createdTime": "2024-07-22T18:00:08+02:00",
"dateCreateShort": null,
"updatedTime": "2024-07-22T18:00:08+02:00",
"dateModifyShort": null,
"createdBy": 1,
"updatedBy": 1,
"assignedById": 1,
"opened": "Y",
"companyId": 0,
"contactId": 0,
"stageId": "IN_PROCESS",
"isConvert": null,
"statusDescription": null,
"stageSemanticId": "P",
"productId": null,
"opportunity": 999.9,
"currencyId": "USD",
"sourceId": "TRADE_SHOW",
"sourceDescription": "Exhibition about admins",
"title": "Lead #250",
"name": "Admin",
"lastName": "Admins",
"secondName": "Admin",
"shortName": null,
"companyTitle": "Administrative Company",
"post": "Admin",
"address": null,
"comments": "[B]Comment about admin[/B]",
"webformId": 0,
"originatorId": null,
"originId": null,
"dateClosed": null,
"birthdate": "2000-01-01T02:00:00+02:00",
"honorific": "UC_N1LWUS",
"hasPhone": "Y",
"hasEmail": "Y",
"hasImol": "N",
"login": null,
"isReturnCustomer": "N",
"searchContent": "250 Lead #250 Admins Admin Admin Administrative Company 999.90 US Dollar 6111111111 111111111 11111111 1111111 111111 11111 1111 111 nqzva rknzcyr pbz In progress Exhibition Exhibition about admins g Admin [O]Comment about admin[/O] 321",
"isManualOpportunity": "Y",
"movedBy": 1,
"movedTime": "2024-07-22T17:00:08+02:00",
"lastActivityBy": 1,
"lastActivityTime": "2024-07-22T17:00:08+02:00",
"phoneMobile": "",
"phoneWork": "+6111111111",
"phoneMailing": "",
"emailHome": "",
"emailWork": "admin@example.com",
"emailMailing": "",
"skype": null,
"icq": null,
"imol": "",
"email": "admin@example.com",
"phone": "+6111111111",
"fm": [
{
"id": 101,
"valueType": "WORK",
"value": "+6111111111",
"typeId": "PHONE"
},
{
"id": 102,
"valueType": "WORK",
"value": "admin@example.com",
"typeId": "EMAIL"
}
],
"ufCrm_1720019876534": "321",
"parentId1222": null,
"parentId1226": null,
"parentId1228": null,
"parentId1236": null,
"parentId1238": null,
"parentId1240": null,
"parentId1244": null,
"parentId1246": null,
"parentId1254": null,
"parentId1256": null,
"utmSource": null,
"utmMedium": null,
"utmCampaign": null,
"utmContent": null,
"utmTerm": null,
"observers": [],
"contactIds": [],
"entityTypeId": 1
}
},
"time": {
"start": 1721660468.931424,
"finish": 1721660469.416092,
"duration": 0.4846680164337158,
"processing": 0.16368508338928223,
"date_start": "2024-07-22T17:01:08+02:00",
"date_finish": "2024-07-22T17:01:09+02:00",
"operating": 0
}
}#|
|| Name
type | Description ||
|| result
object | The root element of the response. Contains a single key item ||
|| item
item | Information about the entity, field description ||
|| time
time | Object containing information about the request execution time ||
|#
The response contains the fm field — an array of all system multiple fields (phone, e-mail, and others) in a structured format. Each array item contains:
id— the record identifier (required for updating or deleting viacrm.item.update)typeId— the field type:PHONE,EMAIL,WEB,IMvalueType— the value subtype:WORK,MOBILE,HOME,MAILING,OTHERvalue— the value
The phoneWork, phoneMobile, emailWork fields and similar ones are flat aliases for convenient access to the first value of the corresponding type from fm. They do not replace fm and do not allow managing multiple values of the same type.
{% note info " " %}
By default, custom field names are returned in camelCase, e.g., ufCrm2_1639669411830.
When passing the parameter useOriginalUfNames with the value Y, custom fields will be returned with their original names, for example UF_CRM_2_1639669411830.
{% endnote %}
HTTP status: 400, 403
{
"error": "NOT_FOUND",
"error_description": "Element not found"
}{% include notitle Error handling %}
#|
|| Status | Code | Description | Value ||
|| 403 | allowed_only_intranet_user | Action is allowed only to intranet users | User is not an intranet user ||
|| 400 | NOT_FOUND | SPA not found | Occurs when an invalid entityTypeId is passed ||
|| 400 | NOT_FOUND | Item not found | An item with the given id of type entityTypeId does not exist. ||
|| 400 | ACCESS_DENIED | You do not have permission to view this item | User does not have read access permission for elements of type entityTypeId ||
|#
{% include System errors %}