# crm.item.batchImport

URL: https://chugunov.pro/api-bitrix24/crm/universal/import/crm-item-batch-import/
Проверено на Битрикс24 REST API, обновлено 11.09.2026 (ревизия источника fb39d6c).
Источник: официальная документация Битрикс24 (bitrix-tools/b24-rest-docs, лицензия MIT, © Bitrix). Справочник независимый, официальной документацией не является.

Импортировать группу записей
Scope: `crm`
Кто может выполнять метод: любой пользователь с правом «импорта» элемента объекта CRM

## Описание

Универсальный метод для импорта объектов в CRM. Отличия от добавления объекта описаны подробнее [`тут`](https://chugunov.pro/api-bitrix24/crm/universal/import/).

Логика добавления элементов работает по аналогии с методом [crm.item.import](https://chugunov.pro/api-bitrix24/crm/universal/import/crm-item-import/).

**Внимание!**

В одном запросе допустимо импортировать максимум — 20 элементов

## Параметры

- `entityTypeId` `integer` — обязательный. Идентификатор [системного](https://apidocs.bitrix24.ru/api-reference/crm/data-types.html#object_type) или [пользовательского типа](https://chugunov.pro/api-bitrix24/crm/universal/user-defined-object-types/), для которого нужно создать элемент.
  Числовые значения для системных типов (Лид — 1, Сделка — 2, Контакт — 3, Компания — 4, Счёт — 31 и др.) приведены в [справочнике типов объектов CRM](https://apidocs.bitrix24.ru/api-reference/crm/data-types.html#object_type). Идентификатор смарт-процесса можно узнать методом [crm.type.list](https://chugunov.pro/api-bitrix24/crm/universal/user-defined-object-types/crm-type-list/)
- `data` `array` — обязательный. Массив значений полей элементов. Можно рассматривать его как массив, каждый элемент которого содержит набор полей `fields`, описанный в методе [crm.item.import](https://chugunov.pro/api-bitrix24/crm/universal/import/crm-item-import/)
- `useOriginalUfNames` `boolean` — необязательный. Параметр для управления форматом имен пользовательских полей в запросе и ответе.   
  Возможные значения:
  - `Y` — оригинальные имена пользовательских полей, например `UF_CRM_2_1639669411830`
  - `N` — имена пользовательских полей в camelCase, например `ufCrm2_1639669411830`
  По умолчанию — `N`

## Ответ

HTTP-статус: 200

```json
{
    "result": {
        "items": [
            {
                "item": {
                    "id": 15
                }
            },
            {
                "error": "CRM_FIELD_ERROR_REQUIRED",
                "error_description": "Поле \"Название\" обязательно для заполнения"
            }
        ]
    },
    "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
    }
}
```

### Возвращаемые данные

- `result` `object`. Корневой элемент ответа.
  Содержит единственный ключ `item`
- `items` `array`. Массив содержащих объекты `item` или ошибки
- `item` `object`. Информация о созданном элементе.
  Содержит единственный ключ `id`
- `id` `integer`. Идентификатор созданного элемента
- `time` `time`. Информация о времени выполнения запроса

## Ошибки

HTTP-статус: 401

```json
{
    "error": "NOT_FOUND",
    "error_description": "Смарт-процесс не найден"
}
```

- `400` — `NOT_FOUND`. Смарт-процесс не найден
- `400` — `ACCESS_DENIED`. Доступ запрещен
- `400` — `CRM_FIELD_ERROR_VALUE_NOT_VALID`. Неверное значение поля "`field`"
- `400` — `100`. Expected iterable value for multiple field, but got `type` instead
- `400` — `CREATE_DYNAMIC_ITEM_RESTRICTED`. Вы не можете создать новый элемент из-за ограничений вашего тарифа
- `400` — `MAX_IMPORT_BATCH_SIZE_EXCEEDED`. Вы не можете импортировать больше 20 элементов
- `401` — `INVALID_CREDENTIALS`. Неверные данные авторизации для запроса
- `403` — `allowed_only_intranet_user`. Действие разрешено только интранет-пользователям

## Примеры запроса

### cURL (Webhook)

```bash
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"entityTypeId":2,"data":[{"title":"Новая сделка (специально для примера REST методов)","typeId":"SERVICE","categoryId":9,"stageId":"C9:UC_KN8KFI","isReccurring":"Y","probability":50,"currencyId":"RUB","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":"Тут должно быть дополнительное описание об источнике","leadId":102,"additionalInfo":"Тут должна быть дополнительная информация","observers":[2,3],"utmSource":"google","utmMedium":"CPC","ufCrm_1721244707107":1111.1,"parentId1220":2},{"title":"Новая сделка (специально для примера REST методов)","typeId":"SERVICE","categoryId":4,"stageId":"C9:UC_KN8KFI","isReccurring":"Y","probability":50,"currencyId":"RUB","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":"Тут должно быть дополнительное описание об источнике","leadId":102,"additionalInfo":"Тут должна быть дополнительная информация","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.batchImport
```

### cURL (OAuth)

```bash
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"entityTypeId":2,"data":[{"title":"Новая сделка (специально для примера REST методов)","typeId":"SERVICE","categoryId":9,"stageId":"C9:UC_KN8KFI","isReccurring":"Y","probability":50,"currencyId":"RUB","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":"Тут должно быть дополнительное описание об источнике","leadId":102,"additionalInfo":"Тут должна быть дополнительная информация","observers":[2,3],"utmSource":"google","utmMedium":"CPC","ufCrm_1721244707107":1111.1,"parentId1220":2},{"title":"Новая сделка (специально для примера REST методов)","typeId":"SERVICE","categoryId":4,"stageId":"C9:UC_KN8KFI","isReccurring":"Y","probability":50,"currencyId":"RUB","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":"Тут должно быть дополнительное описание об источнике","leadId":102,"additionalInfo":"Тут должна быть дополнительная информация","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.batchImport
```

### Python

```python
from b24pysdk.errors import BitrixAPIError, BitrixSDKException

try:
    bitrix_response = client.crm.item.batch_import(
        entity_type_id=1302,
        data=[
            {
                "ufCrm44_1721812760630": "Строка для пользовательского поля типа Строка",
                "ufCrm44_1721812814433": 81,
                "ufCrm44_1721812853419": "2024-08-21",
                "ufCrm44_1721812885588": [
                    "example.com",
                    "second-example.com",
                ],
                "ufCrm44_1721812898903": [
                    "green_pixel.png",
                    "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAMCAYAAACqTLVoAAAALklEQVR42u3SAQEAAAQDsEsuOj3YMqwy6fBWCSCAAAIgAAIgAAIgAAIgAAJw3QLOrRH1U/gU4gAAAABJRU5ErkJggg==",
                ],
                "ufCrm44_1721812915476": "300|RUB",
                "ufCrm44_1721812935209": "Y",
                "ufCrm44_1721812948498": 9999.9,
            }
            ,
            {
                "ufCrm44_1721812760630": "Строка для пользовательского поля типа Строка",
                "ufCrm44_1721812814433": 45,
                "ufCrm44_1721812853419": "2024-08-21",
                "ufCrm44_1721812885588": [
                    "example.com",
                    "second-example.com",
                ],
                "ufCrm44_1721812898903": [
                    "green_pixel2.png",
                    "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAMCAYAAACqTLVoAAAALklEQVR42u3SAQEAAAQDsEsuOj3YMqwy6fBWCSCAAAIgAAIgAAIgAAIgAAJw3QLOrRH1U/gU4gAAAABJRU5ErkJggg==",
                ],
                "ufCrm44_1721812915476": "300|RUB",
                "ufCrm44_1721812935209": "Y",
                "ufCrm44_1721812948498": 9999.9,
            }
        ],
    ).response
    result = bitrix_response.result
    print(result)
except BitrixAPIError as error:
    print(
        "Ошибка Bitrix API",
        f"error: {error.error}",
        f"error_description: {error.error_description}",
        sep="\n",
    )
except BitrixSDKException as error:
    print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
    print(f"Непредвиденная ошибка: {error}")
```

### BX24.js

```js
const 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 = `
Пример комментария внутри сделки

[B]Жирный текст[/B]
[I]Курсив[/I]
[U]Подчеркнутый[/U]
[S]Зачеркнутый[/S]
[B][I][U][S]Микс[/S][/U][/I][/B]

[LIST]
[*]Элемент списка #1
[*]Элемент списка #2
[*]Элемент списка #3
[/LIST]

[LIST=1]
[*]Нумерованный элемент списка #1
[*]Нумерованный элемент списка #2
[*]Нумерованный элемент списка #3
[/LIST]
`;

const deal = {
    title: "Новая сделка (специально для примера REST методов)",
    typeId: "SERVICE",
    categoryId: 9,
    stageId: "C9:UC_KN8KFI",
    isReccurring: "Y",
    probability: 50,
    currencyId: "RUB",
    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: "Тут должно быть дополнительное описание об источнике",
    leadId: 102,
    additionalInfo: "Тут должна быть дополнительная информация",
    observers: [2, 3],
    utmSource: "google",
    utmMedium: "CPC",
    ufCrm_1721244707107: 1111.1,
    parentId1220: 2,
};

const secondDeal = {
    title: "Новая сделка (специально для примера REST методов)",
    typeId: "SERVICE",
    categoryId: 4,
    stageId: "C9:UC_KN8KFI",
    isReccurring: "Y",
    probability: 50,
    currencyId: "RUB",
    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: "Тут должно быть дополнительное описание об источнике",
    leadId: 102,
    additionalInfo: "Тут должна быть дополнительная информация",
    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())
        ;
    }
);
```

### PHP CRest

```php
require_once('crest.php');

$deal = [
    'title' => "Новая сделка (специально для примера REST методов)",
    'typeId' => "SERVICE",
    'categoryId' => 9,
    'stageId' => "C9:UC_KN8KFI",
    'isReccurring' => "Y",
    'probability' => 50,
    'currencyId' => "RUB",
    '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' => "Тут должно быть дополнительное описание об источнике",
    'leadId' => 102,
    'additionalInfo' => "Тут должна быть дополнительная информация",
    'observers' => [2, 3],
    'utmSource' => "google",
    'utmMedium' => "CPC",
    'ufCrm_1721244707107' => 1111.1,
    'parentId1220' => 2
]

$secondDeal = [
    'title' => "Новая сделка (специально для примера REST методов)",
    'typeId' => "SERVICE",
    'categoryId' => 4,
    'stageId' => "C9:UC_KN8KFI",
    'isReccurring' => "Y",
    'probability' => 50,
    'currencyId' => "RUB",
    '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' => "Тут должно быть дополнительное описание об источнике",
    'leadId' => 102,
    'additionalInfo' => "Тут должна быть дополнительная информация",
    '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>';
```

### Go

```go
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "crm.item.batchImport", b24.Params{
	"entityTypeId": 2,
	"data": []b24.Params{
		{
			"title":               "Новая сделка (специально для примера REST методов)",
			"typeId":              "SERVICE",
			"categoryId":          9,
			"stageId":             "C9:UC_KN8KFI",
			"isReccurring":        "Y",
			"probability":         50,
			"currencyId":          "RUB",
			"isManualOpportunity": "Y",
			"opportunity":         999.99,
			"taxValue":            99.9,
			"companyId":           5,
			"contactId":           4,
			"contactIds":          []int{4, 5},
			"quoteId":             7,
			"begindate":           "formatDate(monthAgo)",
			"closedate":           "formatDate(twelveDaysInAdvance)",
			"opened":              "N",
			"comments":            "commentsExample",
			"assignedById":        6,
			"sourceId":            "WEB",
			"sourceDescription":   "Тут должно быть дополнительное описание об источнике",
			"leadId":              102,
			"additionalInfo":      "Тут должна быть дополнительная информация",
			"observers":           []int{2, 3},
			"utmSource":           "google",
			"utmMedium":           "CPC",
			"ufCrm_1721244707107": 1111.1,
			"parentId1220":        2,
		},
		{
			"title":               "Новая сделка (специально для примера REST методов)",
			"typeId":              "SERVICE",
			"categoryId":          4,
			"stageId":             "C9:UC_KN8KFI",
			"isReccurring":        "Y",
			"probability":         50,
			"currencyId":          "RUB",
			"isManualOpportunity": "Y",
			"opportunity":         999.99,
			"taxValue":            99.9,
			"companyId":           5,
			"contactId":           4,
			"contactIds":          []int{4, 5},
			"quoteId":             7,
			"begindate":           "formatDate(monthAgo)",
			"closedate":           "formatDate(twelveDaysInAdvance)",
			"opened":              "N",
			"comments":            "commentsExample",
			"assignedById":        6,
			"sourceId":            "WEB",
			"sourceDescription":   "Тут должно быть дополнительное описание об источнике",
			"leadId":              102,
			"additionalInfo":      "Тут должна быть дополнительная информация",
			"observers":           []int{2, 3},
			"utmSource":           "google",
			"utmMedium":           "CPC",
			"ufCrm_1721244707107": 1111.1,
			"parentId1220":        2,
		},
	},
})
if err != nil {
	return fmt.Errorf("crm.item.batchImport: %w", err)
}

// Метод заворачивает ответ в объект с ключом "items".
raw, ok := b24.Unwrap(res.Result, "items")
if !ok {
	return fmt.Errorf("в ответе нет ключа items")
}

fmt.Printf("%s\n", raw)
```

Оригинал в официальной документации: https://apidocs.bitrix24.ru/api-reference/crm/universal/import/crm-item-batch-import.html
