Import a Batch of CRM Records crm.item.batchImport
Scope:
crmWho can execute the method: any user with "import" access permission for the CRM object
A universal method for importing objects into CRM. The differences from adding an object are described in more detail here.
The logic for adding items works similarly to the crm.item.import method.
Attention!
A maximum of 20 items can be imported in a single request.
Method Parameters
Required parameters are marked with *
|
Name |
Description |
|
entityTypeId* |
Identifier of the system or user-defined type for which the item needs to be created |
|
data* |
An array of field values for the items. It can be viewed as an array where each element contains a set of |
|
useOriginalUfNames |
Parameter to control the format of custom field names in the request and response.
Default is |
Code Examples
How to Use Examples in Documentation
-
How to import deals
cURL (Webhook)cURL (OAuth)BX24.jsPHP CRestcurl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"entityTypeId":2,"data":[{"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":"There should be additional description about the source","leadId":102,"additionalInfo":"There should be additional information","observers":[2,3],"utmSource":"google","utmMedium":"CPC","ufCrm_1721244707107":1111.1,"parentId1220":2},{"title":"New Deal (specifically for the REST methods example)","typeId":"SERVICE","categoryId":4,"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 additional description about the source","leadId":102,"additionalInfo":"There should be additional information","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.batchImportcurl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"entityTypeId":2,"data":[{"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":"There should be additional description about the source","leadId":102,"additionalInfo":"There should be additional information","observers":[2,3],"utmSource":"google","utmMedium":"CPC","ufCrm_1721244707107":1111.1,"parentId1220":2},{"title":"New Deal (specifically for the REST methods example)","typeId":"SERVICE","categoryId":4,"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 additional description about the source","leadId":102,"additionalInfo":"There should be additional information","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.batchImportconst formatDate = (date) => { return 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 the 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] [LIST=1] [*]Numbered list item #1 [*]Numbered list item #2 [*]Numbered list item #3 [/LIST] `; const deal = { 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: "There should be additional description about the source", leadId: 102, additionalInfo: "There should be additional information", observers: [2, 3], utmSource: "google", utmMedium: "CPC", ufCrm_1721244707107: 1111.1, parentId1220: 2, }; const secondDeal = { title: "New Deal (specifically for the REST methods example)", typeId: "SERVICE", categoryId: 4, 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 additional description about the source", leadId: 102, additionalInfo: "There should be additional information", observers: [2, 3], utmSource: "google", utmMedium: "CPC", ufCrm_1721244707107: 1111.1, parentId1220: 2, }; BX24.callMethod( 'crm.item.batchImport', { entityTypeId: 2, data: [ deal, secondDeal ] }, (result) => { result.error() ? console.error(result.error()) : console.info(result.data()) ; } );require_once('crest.php'); $deal = [ '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' => "There should be additional description about the source", 'leadId' => 102, 'additionalInfo' => "There should be additional information", 'observers' => [2, 3], 'utmSource' => "google", 'utmMedium' => "CPC", 'ufCrm_1721244707107' => 1111.1, 'parentId1220' => 2 ]; $secondDeal = [ 'title' => "New Deal (specifically for the REST methods example)", 'typeId' => "SERVICE", 'categoryId' => 4, '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 additional description about the source", 'leadId' => 102, 'additionalInfo' => "There should be additional information", 'observers' => [2, 3], 'utmSource' => "google", 'utmMedium' => "CPC", 'ufCrm_1721244707107' => 1111.1, 'parentId1220' => 2 ]; $result = CRest::call( 'crm.item.batchImport', [ 'entityTypeId' => 2, 'data' => [ $deal, $secondDeal, ], ], ); echo '<PRE>'; print_r($result); echo '</PRE>'; -
How to create an SPA element 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)", "ru": "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)BX24.jsPHP CRestcurl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "entityTypeId": 1302, "data": [{ "ufCrm44_1721812760630": "String for custom field of type String", "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 },{ "ufCrm44_1721812760630": "String for custom field of type String", "ufCrm44_1721812814433": 45, "ufCrm44_1721812853419": "'"$(date '+%Y-%m-%d')"'", "ufCrm44_1721812885588": [ "example.com", "second-example.com" ], "ufCrm44_1721812898903": [ "green_pixel2.png", "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAMCAYAAACqTLVoAAAALklEQVR42u3SAQEAAAQDsEsuOj3YMqwy6fBWCSCAAAIgAAIgAAIgAAIgAAJw3QLOrRH1U/gU4gAAAABJRU5ErkJggg==" ], "ufCrm44_1721812915476": "600|USD", "ufCrm44_1721812935209": "N", "ufCrm44_1721812948498": 9999.9 }] }' \ https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.item.batchImportcurl -X POST \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "entityTypeId": 1302, "data": [{ "ufCrm44_1721812760630": "String for custom field of type String", "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 },{ "ufCrm44_1721812760630": "String for custom field of type String", "ufCrm44_1721812814433": 45, "ufCrm44_1721812853419": "'"$(date '+%Y-%m-%d')"'", "ufCrm44_1721812885588": [ "example.com", "second-example.com" ], "ufCrm44_1721812898903": [ "green_pixel2.png", "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAMCAYAAACqTLVoAAAALklEQVR42u3SAQEAAAQDsEsuOj3YMqwy6fBWCSCAAAIgAAIgAAIgAAIgAAJw3QLOrRH1U/gU4gAAAABJRU5ErkJggg==" ], "ufCrm44_1721812915476": "600|USD", "ufCrm44_1721812935209": "N", "ufCrm44_1721812948498": 9999.9 }], "auth": "**put_access_token_here**" }' \ https://**put_your_bitrix24_address**/rest/crm.item.batchImportconst greenPixelInBase64 = "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAMCAYAAACqTLVoAAAALklEQVR42u3SAQEAAAQDsEsuOj3YMqwy6fBWCSCAAAIgAAIgAAIgAAIgAAJw3QLOrRH1U/gU4gAAAABJRU5ErkJggg=="; BX24.callMethod( 'crm.item.batchImport', { entityTypeId: 1302, data: [ { ufCrm44_1721812760630: "String for custom field of type String", 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, }, { ufCrm44_1721812760630: "String for custom field of type String", ufCrm44_1721812814433: 45, ufCrm44_1721812853419: (new Date()).toISOString().slice(0, 10), ufCrm44_1721812885588: [ "example.com", "second-example.com", ], ufCrm44_1721812898903: [ "green_pixel2.png", greenPixelInBase64, ], ufCrm44_1721812915476: "600|USD", ufCrm44_1721812935209: "N", ufCrm44_1721812948498: 9999.9, } ], }, (result) => { result.error() ? console.error(result.error()) : console.info(result.data()) ; } );require_once('crest.php'); $result = CRest::call( 'crm.item.batchImport', [ 'entityTypeId' => 1302, 'data' => [ [ 'ufCrm44_1721812760630' => "String for custom field of type String", '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, ], [ 'ufCrm44_1721812760630' => "String for custom field of type String", 'ufCrm44_1721812814433' => 45, 'ufCrm44_1721812853419' => date('Y-m-d'), 'ufCrm44_1721812885588' => [ "example.com", "second-example.com", ], 'ufCrm44_1721812898903' => [ "green_pixel2.png", "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAMCAYAAACqTLVoAAAALklEQVR42u3SAQEAAAQDsEsuOj3YMqwy6fBWCSCAAAIgAAIgAAIgAAIgAAJw3QLOrRH1U/gU4gAAAABJRU5ErkJggg==", ], 'ufCrm44_1721812915476' => "600|USD", 'ufCrm44_1721812935209' => "N", 'ufCrm44_1721812948498' => 9999.9, ], ], ] ); echo '<PRE>'; print_r($result); echo '</PRE>';
Response Handling
The method will return an array items, containing objects where each object in this array will contain the identifier of the created item in case of success, or an error message object.
HTTP status: 200
{
"result": {
"items": [
{
"item": {
"id": 15
}
},
{
"error": "CRM_FIELD_ERROR_REQUIRED",
"error_description": "The field \"Title\" is required"
}
]
},
"time": {
"start": 1723414961.913589,
"finish": 1723414964.652124,
"duration": 2.738534927368164,
"processing": 2.376383066177368,
"date_start": "2024-08-11T22:22:41+00:00",
"date_finish": "2024-08-11T22:22:44+00:00",
"operating": 2.3762991428375244
}
}
Returned Data
|
Name |
Description |
|
result |
Root element of the response. Contains a single key |
|
items |
An array containing |
|
item |
Information about the created item. Contains a single key |
|
id |
Identifier of the created item |
|
time |
Information about the execution time of the request |
By default, custom field names are passed and returned in camelCase, e.g., ufCrm2_1639669411830.
When the parameter useOriginalUfNames is passed with the value Y, custom fields will be returned with their original names, e.g., UF_CRM_2_1639669411830.
Error Handling
HTTP status: 401, 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 |
|
|
|
Smart process not found |
Occurs when an invalid |
|
|
|
Access denied |
The user does not have permission to add items of type |
|
|
|
Invalid value for field " |
An incorrect value for the For system fields of type |
|
|
|
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 |
|
|
|
You cannot import more than 20 items |
Occurs when more than 20 items are passed during import |
|
|
|
Invalid authorization data for the request |
Incorrect |
|
|
|
Action allowed only for intranet users |
The user is not an intranet user |
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 allowed to be called using batch |
|
|
|
The maximum length of parameters passed to the batch method has been exceeded |
|
|
|
Invalid access token or webhook code |
|
|
|
The methods must be called using the HTTPS protocol |
|
|
|
The REST API is blocked due to overload. This is a manual individual block, to remove it you need to contact Bitrix24 technical support |
|
|
|
The REST API is available only on commercial plans |
|
|
|
The user whose access token or webhook was used to call the method lacks 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 account administrator has allowed access to this application only for specific users |
|
|
|
The public part of the site is closed. To open the public part of the site on an on-premise installation, disable the option "Temporary closure of the public part of the site". Path to the setting: Desktop > Settings > Product Settings > Module Settings > Main Module > Temporary closure of the public part of the site |
How to Use Examples in Documentation