Create a New CRM object crm.item.add
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: any user with the "add" access permission for the CRM object
This method provides a universal approach for creating CRM objects. It allows you to create various types of objects, such as deals, contacts, companies, and others.
To create an object, you must pass the appropriate parameters, including the object type and its information: title, description, contact details, and other specifics.
Upon successful execution of the request, a new object is created.
This method provides a flexible opportunity to automate the object creation process and integrate the CRM with other systems.
When creating an entity, a standard series of checks, modifications, and automatic actions are performed:
- access permissions are checked
- required fields are validated
- stage-dependent required fields are validated
- field values are checked for correctness
- default values are assigned to fields
- automation rules are triggered after saving
Next, we will take a closer look at how to use this method and which parameters must be passed.
Method Parameters
Required parameters are marked with *
|
Name |
Description |
|
entityTypeId* |
System or custom type identifier of the item we want to create. Numerical values for system types (Lead — 1, Deal — 2, Contact — 3, Company — 4, Invoice — 31, etc.) are provided in the CRM object type directory. The SPA identifier can be found using the crm.type.list method. |
|
fields* |
Format object.
where
Each CRM object type has its own set of fields. This means that the set of fields for creating a Lead does not necessarily match the set of fields for creating a Contact or SPA. The list of available fields for each entity type is described below. An incorrect field in |
|
useOriginalUfNames |
Parameter to control the format of custom field names in the request and response.
Default is |
Parameter fields
Required parameters are marked with *
CRM object identifier entityTypeId: 1
|
Name |
Description |
|
title |
Item name. By default, it is generated according to the template
For example, for a lead with |
|
honorific |
String identifier of the lead's salutation (e.g., The list of available salutations can be found using Default is |
|
name |
First name. Default is |
|
secondName |
Middle name. Default is |
|
lastName |
Last name. Default is |
|
birthdate |
Date of birth. Default is |
|
companyTitle |
Company name. Default is |
|
sourceId |
String identifier of the source. For example, The list of available sources can be found using By default, it is set to of the first available source |
|
sourceDescription |
Additional information about the source. Default is |
|
stageId |
String identifier of the item stage. For example, The list of available stages can be found using By default, it is set to of the first available stage |
|
statusDescription |
Additional information about the stage. Default is |
|
post |
Job title. Default is |
|
currencyId |
Item currency identifier By default, it is set to of the default currency |
|
isManualOpportunity |
|
|
opportunity |
|
|
opened |
|
|
comments |
|
|
assignedById |
|
|
companyId |
|
|
contactId |
|
|
contactIds |
|
|
originatorId |
|
|
originId |
|
|
webformId |
|
|
observers |
|
|
utmSource |
|
|
utmMedium |
|
|
utmCampaign |
|
|
utmContent |
|
|
utmTerm |
|
|
ufCrm... |
|
|
parentId... |
|
|
fm |
CRM object identifier entityTypeId: 2
|
Name |
Description |
|
title |
|
|
typeId |
|
|
categoryId |
|
|
stageId |
|
|
isRecurring |
|
|
probability |
|
|
currencyId |
|
|
isManualOpportunity |
|
|
opportunity |
|
|
taxValue |
|
|
companyId |
|
|
contactId |
|
|
contactIds |
|
|
quoteId |
|
|
begindate |
|
|
closedate |
|
|
opened |
|
|
comments |
|
|
assignedById |
|
|
sourceId |
|
|
sourceDescription |
Additional information about the source. |
|
leadId |
|
|
additionalInfo |
|
|
originatorId |
|
|
originId |
|
|
observers |
|
|
locationId |
|
|
utmSource |
|
|
utmMedium |
|
|
utmContent |
|
|
utmTerm |
|
|
ufCrm... |
|
|
parentId... |
CRM object identifier entityTypeId: 3
|
Name |
Description |
|
honorific |
|
|
name |
First name. Default is |
|
secondName |
Middle name. Default is |
|
lastName |
Last name. Default is |
|
photo |
|
|
birthdate |
Date of birth. Default is |
|
typeId |
|
|
sourceId |
String identifier of the source. For example, The list of available sources can be found using |
|
sourceDescription |
Additional information about the source. Default is |
|
post |
Job title. Default is |
|
comments |
|
|
opened |
|
|
export |
|
|
assignedById |
|
|
companyId |
|
|
companyIds |
|
|
leadId |
|
|
originatorId |
|
|
originId |
|
|
originVersion |
|
|
observers |
|
|
utmSource |
|
|
utmMedium |
|
|
utmCampaign |
|
|
utmContent |
|
|
utmTerm |
|
|
ufCrm... |
|
|
parentId... |
|
|
fm |
CRM object identifier entityTypeId: 4
|
Name |
Description |
|
title |
Item name. By default, it is generated according to the template
|
|
typeId |
|
|
logo |
|
|
bankingDetails |
|
|
industry |
|
|
employees |
|
|
currencyId |
|
|
revenue |
|
|
opened |
|
|
comments |
|
|
isMyCompany |
|
|
assignedById |
|
|
contactIds |
|
|
leadId |
|
|
originatorId |
|
|
originId |
|
|
originVersion |
|
|
observers |
|
|
utmSource |
|
|
utmMedium |
|
|
utmCampaign |
|
|
utmContent |
|
|
utmTerm |
|
|
ufCrm... |
|
|
parentId... |
|
|
fm |
CRM object identifier entityTypeId: 7
|
Name |
Description |
|
title |
Item name. By default, it is generated according to the template
For example, for an offer with |
|
assignedById |
|
|
opened |
|
|
content |
Content. Default is |
|
terms |
Conditions. Default is |
|
comments |
|
|
dealId |
Linked deal identifier. Default is |
|
leadId |
|
|
storageTypeId |
Storage type identifier. Possible values:
Default:
|
|
storageElementIds |
Array of files. Default is |
|
webformId |
|
|
companyId |
|
|
contactId |
|
|
contactIds |
|
|
locationId |
|
|
currencyId |
|
|
isManualOpportunity |
Amount calculation mode. |
|
opportunity |
|
|
taxValue |
|
|
stageId |
|
|
begindate |
|
|
closedate |
|
|
actualDate |
Valid until. |
|
mycompanyId |
My company identifier. Default — the identifier of the first available "my" company |
|
utmSource |
|
|
utmMedium |
Traffic type. |
|
utmCampaign |
|
|
utmContent |
|
|
utmTerm |
|
|
ufCrm... |
Custom field. See the Custom Fields in CRM: Overview of Methods section. |
|
parentId... |
CRM object identifier entityTypeId: 31
|
Name |
Description |
|
title |
Item name. By default, it is generated according to the template
|
|
xmlId |
|
|
assignedById |
|
|
opened |
|
|
webformId |
|
|
begindate |
|
|
closedate |
|
|
companyId |
|
|
contactId |
|
|
contactIds |
|
|
observers |
|
|
stageId |
|
|
sourceId |
String identifier of the source. For example, The list of available sources can be found using |
|
sourceDescription |
Additional information about the source. Default is |
|
currencyId |
|
|
isManualOpportunity |
|
|
opportunity |
|
|
taxValue |
|
|
mycompanyId |
My company identifier. Default — the identifier of the first available "my" company |
|
comments |
|
|
locationId |
|
|
ufCrm... |
Custom field. See the Custom Fields in CRM: Overview of Methods section. |
|
parentId... |
CRM object identifier entityTypeId: can be obtained using the crm.type.list method or created using the crm.type.add method.
|
Name |
Description |
|
title |
Item name. By default, it is generated according to the template |
|
xmlId |
|
|
assignedById |
|
|
opened |
|
|
webformId |
|
|
begindate |
|
|
closedate |
|
|
companyId |
|
|
contactId |
|
|
contactIds |
|
|
observers |
|
|
categoryId |
|
|
stageId |
|
|
sourceId |
String source identifier. (e.g., The list of available sources can be found using Only available if the |
|
sourceDescription |
Additional information about the source. Only available if the Default is |
|
currencyId |
|
|
isManualOpportunity |
|
|
opportunity |
|
|
taxValue |
|
|
mycompanyId |
My company identifier. Only available if the Default — Identifier of the first available "my" company |
|
ufCrm... |
Custom field. See the Custom Fields in CRM: Overview of Methods section. |
|
parentId... |
SPA settings
For more information on managing SPA settings, you can read in Smart Processes: Overview of Methods
Code Examples
How to Use Examples in Documentation
-
Example of creating a deal
cURL (Webhook)cURL (OAuth)JS (TS)JS (UMD)PHPPHP (B24PhpSdk)Pythoncurl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"entityTypeId":2,"fields":{"title":"New deal (specifically for REST method examples)","typeId":"SERVICE","categoryId":9,"stageId":"C9:UC_KN8KFI","isReccurring":"Y","probability":50,"currencyId":"USD","isManualOpportunity":"Y","opportunity":999.99,"taxValue":99.9,"companyId":5,"contactId":4,"contactIds":[4,5],"quoteId":7,"begindate":"formatDate(monthAgo)","closedate":"formatDate(twelveDaysInAdvance)","opened":"N","comments":"commentsExample","assignedById":6,"sourceId":"WEB","sourceDescription":"There should be an additional description about the source here","leadId":102,"additionalInfo":"There should be additional information here","observers":[2,3],"utmSource":"google","utmMedium":"CPC","ufCrm_1721244707107":1111.1,"parentId1220":2}}' \ https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.item.addcurl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"entityTypeId":2,"fields":{"title":"New deal (specifically for REST method examples)","typeId":"SERVICE","categoryId":9,"stageId":"C9:UC_KN8KFI","isReccurring":"Y","probability":50,"currencyId":"USD","isManualOpportunity":"Y","opportunity":999.99,"taxValue":99.9,"companyId":5,"contactId":4,"contactIds":[4,5],"quoteId":7,"begindate":"formatDate(monthAgo)","closedate":"formatDate(twelveDaysInAdvance)","opened":"N","comments":"commentsExample","assignedById":6,"sourceId":"WEB","sourceDescription":"There should be an additional description about the source here","leadId":102,"additionalInfo":"There should be additional information here","observers":[2,3],"utmSource":"google","utmMedium":"CPC","ufCrm_1721244707107":1111.1,"parentId1220":2},"auth":"**put_access_token_here**"}' \ https://**put_your_bitrix24_address**/rest/crm.item.add// 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 type CrmItem = { id: number title: string } // Shape of the payload returned in result (match the "response handling" section of the page) type ItemAddResult = { item: CrmItem } const formatDate = (date: Date): string => date.toISOString().slice(0, 10) const day = 60 * 60 * 24 * 1000 const now = new Date() const twelveDaysInAdvance = new Date(now.getTime() + 12 * day) const monthAgo = new Date(now.getTime() - 30 * day) const commentsExample = [ 'Example comment inside a deal', '', '[B]Bold text[/B]', '[I]Italic[/I]', '[U]Underlined[/U]', '[S]Strikethrough[/S]', '[B][I][U][S]Mix[/S][/U][/I][/B]', '', '[LIST]', '[*]List item #1', '[*]List item #2', '[*]List item #3', '[/LIST]', ].join('\n') try { const response = await $b24.actions.v2.call.make<ItemAddResult>({ method: 'crm.item.add', params: { entityTypeId: 2, fields: { title: 'New deal (specifically for the REST methods example)', typeId: 'SERVICE', categoryId: 9, stageId: 'C9:UC_KN8KFI', isReccurring: 'Y', probability: 50, currencyId: 'USD', isManualOpportunity: 'Y', opportunity: 999.99, taxValue: 99.9, companyId: 5, contactId: 4, contactIds: [4, 5], quoteId: 7, begindate: formatDate(monthAgo), closedate: formatDate(twelveDaysInAdvance), opened: 'N', comments: commentsExample, assignedById: 6, sourceId: 'WEB', sourceDescription: 'Additional description about the source goes here', leadId: 102, additionalInfo: 'Additional information goes here', observers: [2, 3], utmSource: 'google', utmMedium: 'CPC', ufCrm_1721244707107: 1111.1, parentId1220: 2, }, }, 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(`Created item #${result.item.id} (${result.item.title})`) } } 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 addCrmItem() { try { // Initialize the SDK inside a Bitrix24 frame const $b24 = await B24Js.initializeB24Frame() const formatDate = (date) => date.toISOString().slice(0, 10) const day = 60 * 60 * 24 * 1000 const now = new Date() const twelveDaysInAdvance = new Date(now.getTime() + 12 * day) const monthAgo = new Date(now.getTime() - 30 * day) const commentsExample = [ 'Example comment inside a deal', '', '[B]Bold text[/B]', '[I]Italic[/I]', '[U]Underlined[/U]', '[S]Strikethrough[/S]', '[B][I][U][S]Mix[/S][/U][/I][/B]', '', '[LIST]', '[*]List item #1', '[*]List item #2', '[*]List item #3', '[/LIST]', ].join('\n') const response = await $b24.actions.v2.call.make({ method: 'crm.item.add', params: { entityTypeId: 2, fields: { title: 'New deal (specifically for the REST methods example)', typeId: 'SERVICE', categoryId: 9, stageId: 'C9:UC_KN8KFI', isReccurring: 'Y', probability: 50, currencyId: 'USD', isManualOpportunity: 'Y', opportunity: 999.99, taxValue: 99.9, companyId: 5, contactId: 4, contactIds: [4, 5], quoteId: 7, begindate: formatDate(monthAgo), closedate: formatDate(twelveDaysInAdvance), opened: 'N', comments: commentsExample, assignedById: 6, sourceId: 'WEB', sourceDescription: 'Additional description about the source goes here', leadId: 102, additionalInfo: 'Additional information goes here', observers: [2, 3], utmSource: 'google', utmMedium: 'CPC', ufCrm_1721244707107: 1111.1, parentId1220: 2, }, }, 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(`Created item #${result.item.id} (${result.item.title})`) } catch (error) { // Thrown on transport or SDK failures (AjaxError, SdkError, etc.) console.error(error) } } document.addEventListener('DOMContentLoaded', addCrmItem) </script>require_once('crest.php'); $result = CRest::call( 'crm.item.add', [ 'entityTypeId' => 2, 'fields' => [ 'title' => "New deal (specifically for REST method examples)", 'typeId' => "SERVICE", 'categoryId' => 9, 'stageId' => "C9:UC_KN8KFI", 'isReccurring' => "Y", 'probability' => 50, 'currencyId' => "USD", 'isManualOpportunity' => "Y", 'opportunity' => 999.99, 'taxValue' => 99.9, 'companyId' => 5, 'contactId' => 4, 'contactIds' => [4, 5], 'quoteId' => 7, 'begindate' => formatDate(monthAgo), 'closedate' => formatDate(twelveDaysInAdvance), 'opened' => "N", 'comments' => $commentsExample, 'assignedById' => 6, 'sourceId' => "WEB", 'sourceDescription' => "There should be an additional description about the source here", 'leadId' => 102, 'additionalInfo' => "There should be additional information here", 'observers' => [2, 3], 'utmSource' => "google", 'utmMedium' => "CPC", 'ufCrm_1721244707107' => 1111.1, 'parentId1220' => 2, ], ] ); echo '<PRE>'; print_r($result); echo '</PRE>';try { $entityTypeId = 1; // Example entity type ID $fields = [ 'title' => 'New Item', 'createdTime' => (new DateTime())->format(DateTime::ATOM), 'updatedTime' => (new DateTime())->format(DateTime::ATOM), 'begindate' => (new DateTime())->format(DateTime::ATOM), 'closedate' => (new DateTime())->format(DateTime::ATOM), // Add other necessary fields as required ]; $result = $serviceBuilder ->getCRMScope() ->item() ->add($entityTypeId, $fields); print("ID: " . $result->item()->id . PHP_EOL); print("Title: " . $result->item()->title . PHP_EOL); print("Created By: " . $result->item()->createdBy . PHP_EOL); print("Updated By: " . $result->item()->updatedBy . PHP_EOL); print("Created Time: " . $result->item()->createdTime->format(DateTime::ATOM) . PHP_EOL); print("Updated Time: " . $result->item()->updatedTime->format(DateTime::ATOM) . PHP_EOL); } catch (Throwable $e) { print("Error: " . $e->getMessage() . PHP_EOL); }Example
from b24pysdk.client import BaseClient from b24pysdk.errors import BitrixAPIError, BitrixSDKException client: BaseClient try: bitrix_response = client.crm.item.add( entity_type_id=2, fields={ "title": "New deal (specifically for REST method examples)", "typeId": "SERVICE", "categoryId": 9, "stageId": "C9:UC_KN8KFI", "isReccurring": "Y", "probability": 50, "currencyId": "USD", "isManualOpportunity": "Y", "opportunity": 999.99, "taxValue": 99.9, "companyId": 5, "contactId": 4, "contactIds": [4, 5], "quoteId": 7, "begindate": "formatDate(monthAgo)", "closedate": "formatDate(twelveDaysInAdvance)", "opened": "N", "comments": "commentsExample", "assignedById": 6, "sourceId": "WEB", "sourceDescription": "There should be an additional description about the source here", "leadId": 102, "additionalInfo": "There should be additional information here", "observers": [2, 3], "utmSource": "google", "utmMedium": "CPC", "ufCrm_1721244707107": 1111.1, "parentId1220": 2, }, ).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}") -
Example of creating an SPA item with a set of custom fields
Custom fields involved in the example
{ "ufCrm44_1721812760630": { "type": "string", "isRequired": false, "isReadOnly": false, "isImmutable": false, "isMultiple": false, "isDynamic": true, "title": "Custom field (string)", "listLabel": "Custom field (string)", "formLabel": "Custom field (string)", "filterLabel": "Custom field (string)", "settings": { "SIZE": 20, "ROWS": 1, "REGEXP": "", "MIN_LENGTH": 0, "MAX_LENGTH": 0, "DEFAULT_VALUE": "" }, "upperName": "UF_CRM_44_1721812760630" }, "ufCrm44_1721812814433": { "type": "enumeration", "isRequired": false, "isReadOnly": false, "isImmutable": false, "isMultiple": false, "isDynamic": true, "items": [ { "ID": "79", "VALUE": "List item #1" }, { "ID": "80", "VALUE": "List item #2" }, { "ID": "81", "VALUE": "List item #3" }, { "ID": "82", "VALUE": "List item #4" } ], "title": "Custom field (list)", "listLabel": "Custom field (list)", "formLabel": "Custom field (list)", "filterLabel": "Custom field (list)", "settings": { "DISPLAY": "LIST", "LIST_HEIGHT": 1, "CAPTION_NO_VALUE": "", "SHOW_NO_VALUE": "Y" }, "upperName": "UF_CRM_44_1721812814433" }, "ufCrm44_1721812853419": { "type": "date", "isRequired": false, "isReadOnly": false, "isImmutable": false, "isMultiple": false, "isDynamic": true, "title": "Custom field (date)", "listLabel": "Custom field (date)", "formLabel": "Custom field (date)", "filterLabel": "Custom field (date)", "settings": { "DEFAULT_VALUE": { "TYPE": "NONE", "VALUE": "" } }, "upperName": "UF_CRM_44_1721812853419" }, "ufCrm44_1721812885588": { "type": "url", "isRequired": false, "isReadOnly": false, "isImmutable": false, "isMultiple": true, "isDynamic": true, "title": "Multiple custom field (link)", "listLabel": "Multiple custom field (link)", "formLabel": "Multiple custom field (link)", "filterLabel": "Multiple custom field (link)", "settings": { "POPUP": "Y", "SIZE": 20, "MIN_LENGTH": 0, "MAX_LENGTH": 0, "DEFAULT_VALUE": "", "ROWS": 1 }, "upperName": "UF_CRM_44_1721812885588" }, "ufCrm44_1721812898903": { "type": "file", "isRequired": false, "isReadOnly": false, "isImmutable": false, "isMultiple": false, "isDynamic": true, "title": "Custom field (file)", "listLabel": "Custom field (file)", "formLabel": "Custom field (file)", "filterLabel": "Custom field (file)", "settings": { "SIZE": 20, "LIST_WIDTH": 0, "LIST_HEIGHT": 0, "MAX_SHOW_SIZE": 0, "MAX_ALLOWED_SIZE": 0, "EXTENSIONS": [], "TARGET_BLANK": "Y" }, "upperName": "UF_CRM_44_1721812898903" }, "ufCrm44_1721812915476": { "type": "money", "isRequired": false, "isReadOnly": false, "isImmutable": false, "isMultiple": false, "isDynamic": true, "title": "Custom field (money)", "listLabel": "Custom field (money)", "formLabel": "Custom field (money)", "filterLabel": "Custom field (money)", "settings": { "DEFAULT_VALUE": "" }, "upperName": "UF_CRM_44_1721812915476" }, "ufCrm44_1721812935209": { "type": "boolean", "isRequired": false, "isReadOnly": false, "isImmutable": false, "isMultiple": false, "isDynamic": true, "title": "Custom field (Yes/No)", "listLabel": "Custom field (Yes/No)", "formLabel": "Custom field (Yes/No)", "filterLabel": "Custom field (Yes/No)", "settings": { "DEFAULT_VALUE": 0, "DISPLAY": "CHECKBOX", "LABEL": [ "", "" ], "LABEL_CHECKBOX": { "en": "Custom field (Yes/No)", "de": "Custom field (Yes/No)", "th": "Custom field (Yes/No)", "la": "Custom field (Yes/No)", "tc": "Custom field (Yes/No)", "sc": "Custom field (Yes/No)", "br": "Custom field (Yes/No)", "ar": "Custom field (Yes/No)", "fr": "Custom field (Yes/No)", "vn": "Custom field (Yes/No)", "pl": "Custom field (Yes/No)", "tr": "Custom field (Yes/No)", "ja": "Custom field (Yes/No)", "it": "Custom field (Yes/No)", "ms": "Custom field (Yes/No)", "id": "Custom field (Yes/No)" } }, "upperName": "UF_CRM_44_1721812935209" }, "ufCrm44_1721812948498": { "type": "double", "isRequired": false, "isReadOnly": false, "isImmutable": false, "isMultiple": false, "isDynamic": true, "title": "Custom field (number)", "listLabel": "Custom field (number)", "formLabel": "Custom field (number)", "filterLabel": "Custom field (number)", "settings": { "PRECISION": 2, "SIZE": 20, "MIN_VALUE": 0, "MAX_VALUE": 0, "DEFAULT_VALUE": null }, "upperName": "UF_CRM_44_1721812948498" } }cURL (Webhook)cURL (OAuth)JS (TS)JS (UMD)PHPcurl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "entityTypeId": 1302, "fields": { "ufCrm44_1721812760630": "String for a String type custom field", "ufCrm44_1721812814433": 81, "ufCrm44_1721812853419": "'"$(date '+%Y-%m-%d')"'", "ufCrm44_1721812885588": [ "example.com", "second-example.com" ], "ufCrm44_1721812898903": [ "green_pixel.png", "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAMCAYAAACqTLVoAAAALklEQVR42u3SAQEAAAQDsEsuOj3YMqwy6fBWCSCAAAIgAAIgAAIgAAIgAAJw3QLOrRH1U/gU4gAAAABJRU5ErkJggg==" ], "ufCrm44_1721812915476": "300|USD", "ufCrm44_1721812935209": "Y", "ufCrm44_1721812948498": 9999.9 } }' \ https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.item.addcurl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "entityTypeId": 1302, "fields": { "ufCrm44_1721812760630": "String for a String type custom field", "ufCrm44_1721812814433": 81, "ufCrm44_1721812853419": "'"$(date '+%Y-%m-%d')"'", "ufCrm44_1721812885588": [ "example.com", "second-example.com" ], "ufCrm44_1721812898903": [ "green_pixel.png", "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAMCAYAAACqTLVoAAAALklEQVR42u3SAQEAAAQDsEsuOj3YMqwy6fBWCSCAAAIgAAIgAAIgAAIgAAJw3QLOrRH1U/gU4gAAAABJRU5ErkJggg==" ], "ufCrm44_1721812915476": "300|USD", "ufCrm44_1721812935209": "Y", "ufCrm44_1721812948498": 9999.9 }, "auth": "**put_access_token_here**" }' \ https://**put_your_bitrix24_address**/rest/crm.item.add// 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 type CrmItem = { id: number title: string } // Shape of the payload returned in result (match the "response handling" section of the page) type ItemAddResult = { item: CrmItem } const greenPixelInBase64 = 'iVBORw0KGgoAAAANSUhEUgAAAIAAAAAMCAYAAACqTLVoAAAALklEQVR42u3SAQEAAAQDsEsuOj3YMqwy6fBWCSCAAAIgAAIgAAIgAAIgAAJw3QLOrRH1U/gU4gAAAABJRU5ErkJggg==' try { const response = await $b24.actions.v2.call.make<ItemAddResult>({ method: 'crm.item.add', params: { entityTypeId: 1302, fields: { ufCrm44_1721812760630: 'Value for a String-type custom field', ufCrm44_1721812814433: 81, ufCrm44_1721812853419: new Date().toISOString().slice(0, 10), ufCrm44_1721812885588: [ 'example.com', 'second-example.com', ], ufCrm44_1721812898903: [ 'green_pixel.png', greenPixelInBase64, ], ufCrm44_1721812915476: '300|USD', ufCrm44_1721812935209: 'Y', ufCrm44_1721812948498: 9999.9, }, }, 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(`Created item #${result.item.id} (${result.item.title})`) } } 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 addCrmItemWithCustomFields() { try { // Initialize the SDK inside a Bitrix24 frame const $b24 = await B24Js.initializeB24Frame() const greenPixelInBase64 = 'iVBORw0KGgoAAAANSUhEUgAAAIAAAAAMCAYAAACqTLVoAAAALklEQVR42u3SAQEAAAQDsEsuOj3YMqwy6fBWCSCAAAIgAAIgAAIgAAIgAAJw3QLOrRH1U/gU4gAAAABJRU5ErkJggg==' const response = await $b24.actions.v2.call.make({ method: 'crm.item.add', params: { entityTypeId: 1302, fields: { ufCrm44_1721812760630: 'Value for a String-type custom field', ufCrm44_1721812814433: 81, ufCrm44_1721812853419: new Date().toISOString().slice(0, 10), ufCrm44_1721812885588: [ 'example.com', 'second-example.com', ], ufCrm44_1721812898903: [ 'green_pixel.png', greenPixelInBase64, ], ufCrm44_1721812915476: '300|USD', ufCrm44_1721812935209: 'Y', ufCrm44_1721812948498: 9999.9, }, }, 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(`Created item #${result.item.id} (${result.item.title})`) } catch (error) { // Thrown on transport or SDK failures (AjaxError, SdkError, etc.) console.error(error) } } document.addEventListener('DOMContentLoaded', addCrmItemWithCustomFields) </script>require_once('crest.php'); $result = CRest::call( 'crm.item.add', [ 'entityTypeId' => 1302, 'fields' => [ 'ufCrm44_1721812760630' => "String for a String type custom field", 'ufCrm44_1721812814433' => 81, 'ufCrm44_1721812853419' => date('Y-m-d'), 'ufCrm44_1721812885588' => [ "example.com", "second-example.com", ], 'ufCrm44_1721812898903' => [ "green_pixel.png", "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAMCAYAAACqTLVoAAAALklEQVR42u3SAQEAAAQDsEsuOj3YMqwy6fBWCSCAAAIgAAIgAAIgAAIgAAJw3QLOrRH1U/gU4gAAAABJRU5ErkJggg==", ], 'ufCrm44_1721812915476' => "300|USD", 'ufCrm44_1721812935209' => "Y", 'ufCrm44_1721812948498' => 9999.9, ], ] ); echo '<PRE>'; print_r($result); echo '</PRE>';
Response Handling
HTTP status: 200
Note
Disabled fields always return null.
{
"result": {
"item": {
"id": 342,
"createdTime": "2024-07-18T14:00:14+02:00",
"dateCreateShort": null,
"updatedTime": "2024-07-18T14:00:14+02:00",
"dateModifyShort": null,
"createdBy": 1,
"updatedBy": 1,
"assignedById": 6,
"opened": "N",
"leadId": 102,
"companyId": 5,
"contactId": 4,
"quoteId": 7,
"title": "New deal (specifically for rest method examples)",
"productId": null,
"categoryId": 9,
"stageId": "C9:UC_KN8KFI",
"stageSemanticId": "P",
"isNew": "N",
"isRecurring": "N",
"isReturnCustomer": "N",
"isRepeatedApproach": "Y",
"closed": "N",
"typeId": "SERVICE",
"opportunity": 999.99,
"isManualOpportunity": "Y",
"taxValue": 0,
"currencyId": "USD",
"probability": 50,
"comments": "\nExample comment inside the deal\n\n[B]Bold text[/B]\n[I]Italic[/I]\n[U]Underlined[/U]\n[S]Strikethrough[/S]\n[B][I][U][S]Mix[/S][/U][/I][/B]\n\n[LIST]\n[*]List item #1\n[*]List item #2\n[*]List item #3\n[/LIST]\n\n[LIST=1]\n[*]Numbered list item #1\n[*]Numbered list item #2\n[*]Numbered list item #3\n[/LIST]\n",
"begindate": "2024-06-18T02:00:00+02:00",
"begindateShort": null,
"closedate": "2024-07-30T02:00:00+02:00",
"closedateShort": null,
"eventDate": null,
"eventDateShort": null,
"eventId": null,
"eventDescription": null,
"locationId": null,
"webformId": null,
"sourceId": "WEB",
"sourceDescription": "There should be an additional description about the source here",
"originatorId": null,
"originId": null,
"additionalInfo": "There should be additional information here",
"searchContent": null,
"orderStage": null,
"movedBy": 1,
"movedTime": "2024-07-18T14:00:14+02:00",
"lastActivityBy": 1,
"lastActivityTime": "2024-07-18T14:00:14+02:00",
"isWork": null,
"isWon": null,
"isLose": null,
"receivedAmount": null,
"lostAmount": null,
"hasProducts": null,
"ufCrm_1721244707107": 1111.1,
"parentId1220": 2,
"utmSource": "google",
"utmMedium": "CPC",
"utmCampaign": null,
"utmContent": null,
"utmTerm": null,
"observers": [
2,
3
],
"contactIds": [
4,
5
],
"entityTypeId": 2
}
},
"time": {
"start": 1721304013.245896,
"finish": 1721304015.555471,
"duration": 2.309574842453003,
"processing": 1.8328988552093506,
"date_start": "2024-07-18T14:00:13+02:00",
"date_finish": "2024-07-18T14:00:15+02:00",
"operating": 1.8328571319580078
}
}
By default, custom field names are passed and returned in camelCase, for example 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.
Returned Data
|
Name |
Description |
|
result |
Root element of the response, contains a single key |
|
item |
Information about the created item, field description |
|
time |
Information about the request execution time |
Error Handling
HTTP status: 400, 403
{
"error": "NOT_FOUND",
"error_description": "Smart process 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 |
|
|
|
Action is allowed only for intranet users |
User is not an intranet user |
|
|
|
SPA not found |
Occurs when an invalid |
|
|
|
Access denied |
User does not have permission to add items of type |
|
|
|
Invalid value for field " |
Incorrect value passed for field |
|
|
|
Expected iterable value for multiple field, but got |
One of the multiple fields received a value of type |
|
|
|
You cannot create a new item due to your plan restrictions |
Plan restrictions do not allow creating SPA items |
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 permitted for calls using batch |
|
|
|
The maximum length of parameters passed to the batch method has been exceeded |
|
|
|
Invalid access token or webhook code |
|
|
|
The HTTPS protocol is required for method calls |
|
|
|
The REST API is blocked due to overload. This is a manual individual block; please contact Bitrix24 technical support to lift it |
|
|
|
The REST API is only available on commercial plans |
|
|
|
The user associated with the access token or webhook used to call the method lacks the necessary 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 portal administrator has restricted access to this application to specific users only |
|
|
|
The public part of the site is closed. To open the public part of the site on an on-premise installation, disable the "Temporary closure of the public part of the site" option. Path to the setting: Desktop > Settings > Product Settings > Module Settings > Main Module > Temporary closure of the public part of the site |