Создать новый элемент CRM crm.item.add

Выберите инструмент для разработки с AI-агентом:

  • используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
  • используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации

Scope: crm

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

Метод является универсальным методом для создания объектов в CRM. С помощью него вы можете создавать различные типы объектов, такие как сделки, контакты, компании и другие.

Для создания объекта необходимо передать соответствующие параметры, включая тип объекта и информацию о нем: название, описание, контактные данные и другие детали.

После успешного выполнения запроса создается новый объект.

Этот метод предоставляет гибкую возможность автоматизировать процесс создания объектов и интегрировать CRM с другими системами.

При создании элемента производится стандартный ряд проверок, модификаций и автоматических действий:

  • проверяются права доступа
  • проверяется заполненность обязательных полей
  • проверяется заполненность зависимых от стадий обязательных полей
  • проверяется корректность заполнения полей
  • полям присваиваются значения по умолчанию
  • после сохранения запускаются роботы

Далее рассмотрим подробнее, как использовать этот метод и какие параметры нужно передать.

Параметры метода

Обязательные параметры отмечены *

Название
тип

Описание

entityTypeId*
integer

Идентификатор системного или пользовательского типа, чей элемент мы хотим создать.

Числовые значения для системных типов (Лид — 1, Сделка — 2, Контакт — 3, Компания — 4, Счёт — 31 и др.) приведены в справочнике типов объектов CRM. Идентификатор смарт-процесса можно узнать методом crm.type.list

fields*
object

Объект формата.

{
    field_1: value_1,
    field_2: value_2,
    ...,
    field_n: value_n,
}

где

  • field_n — название поля
  • value_n — значение поля

У каждого типа сущности CRM свой набор полей. Это значит, что набор полей для создания Лида не обязан подходить набору полей для создания Контакта или Смарт-процесса.

Список доступных полей для каждого типа сущности описан ниже.

Некорректное поле в fields будет проигнорировано

useOriginalUfNames
boolean

Параметр для управления форматом имен пользовательских полей в запросе и ответе.
Возможные значения:

  • Y — оригинальные имена пользовательских полей, например UF_CRM_2_1639669411830
  • N — имена пользовательских полей в camelCase, например ufCrm2_1639669411830

По умолчанию — N

Параметр fields

Обязательные параметры отмечены *

Идентификатор объекта CRM entityTypeId: 1

Название
тип

Описание

title
string

Название элемента.

По умолчанию генерируется по шаблону {entityTypeName} #{id}, где

  • entityTypeName — название сущности
  • id — идентификатор элемента

Например для лида с id = 13 — 'Лид #13'

honorific
crm_status

Строковый идентификатор обращения лида (например 'HNR_RU_1' = 'г-н').

Список доступных обращений можно узнать с помощью crm.status.list применив фильтр { ENTITY_ID: "HONOFIRIC" }.

По умолчанию — null

name
string

Имя.

По умолчанию — null

secondName
string

Отчество.

По умолчанию — null

lastName
string

Фамилия.

По умолчанию — null

birthdate
date

Дата рождения.

По умолчанию — null

companyTitle
string

Название компании.

По умолчанию — null

sourceId
crm_status

Строковый идентификатор источника.

Например 'CALL' = 'Звонок'.

Список доступных источников можно узнать с помощью crm.status.list применив фильтр { ENTITY_ID: "SOURCE" }.

По умолчанию имеет значение первого доступного источника

sourceDescription
text

Дополнительно об источнике.

По умолчанию — null

stageId
crm_status

Строковый идентификатор стадии элемента.

Например 'NEW' = 'Не обработан'.

Список доступных стадий можно узнать с помощью crm.status.list применив фильтр { ENTITY_ID: "STATUS" }

По умолчанию имеет значение первой доступной стадии

statusDescription
text

Дополнительно о стадии.

По умолчанию — null

post
string

Должность.

По умолчанию — null

currencyId
crm_currency

Идентификатор валюты элемента

По умолчанию имеет значение валюты по умолчанию

isManualOpportunity
boolean

Режим расчета суммы. Возможные значения:

  • Y — ручной
  • N — автоматический

По умолчанию — N

opportunity
double

Сумма.

По умолчанию — null

opened
boolean

Является ли элемент доступным для всех. Возможные значения:

  • Y — да
  • N — нет

По умолчанию — Y. Значение по умолчанию может быть изменено в настройках CRM

comments
text

Комментарий.

По умолчанию — null

assignedById
user

Идентификатор ответственного за элемент.

По умолчанию это идентификатор пользователя, который вызывает метод

companyId
crm_company

Идентификатор компании привязанный к элементу.

Список компании можно получить с помощью метода crm.item.list по entityTypeId = 4.

По умолчанию — null

contactId
crm_contact

Идентификатор контакта привязанный к элементу.

Список контактов можно получить с помощью метода crm.item.list по entityTypeId = 3.

По умолчанию — null

contactIds
crm_contact[]

Список идентификаторов контакта привязанных к элементу.

Список контактов можно получить с помощью метода crm.item.list по entityTypeId = 3.

По умолчанию — null

originatorId
string

Внешний источник.

По умолчанию — null

originId
string

Идентификатор элемента во внешнем источнике.

По умолчанию — null

webformId
integer

Идентификатор CRM Формы.

По умолчанию — null

observers
user[]

Массив идентификаторов пользователей, которые будут являться Наблюдателями в элементе.

По умолчанию — null

utmSource
string

Рекламная система. Например: Yandex-Direct, Google-Adwords и другие.

По умолчанию — null

utmMedium
string

Тип трафика. Возможные значения:

  • CPC — объявления
  • CPM — баннеры

По умолчанию — null

utmCampaign
string

Обозначение рекламной кампании.

По умолчанию — null

utmContent
string

Содержание кампании. Например, для контекстных объявлений.

По умолчанию — null

utmTerm
string

Условие поиска кампании. Например, ключевые слова контекстной рекламы.

По умолчанию равенnull

ufCrm...
crm_userfield

Пользовательское поле.

О пользовательских полях читайте раздел Пользовательские поля в CRM: обзор методов

Значения множественных полей передаются в виде массива.

Чтобы загрузить файл, в качестве значения пользовательского поля необходимо передать массив, где первый элемент — это имя файла, а второй — это закодированный в base64 контент файла.

parentId...
crm_entity

Поле-родитель. Элемент другого типа объекта CRM, который привязан к данному элементу.

Каждое такое поле имеет код parentId + {parentEntityTypeId}

fm
crm_multifield[]

Массив мультиполей.

Подробнее о мультиполях можно почитать в разделе crm_multifield

Структура мультиполя:

  • typeId — Тип мультиполя
  • valueType — Тип значения
  • value — Значение

Пример:

fm: [
  {
    "valueType": "WORK",
    "value": "+79999999",
    "typeId": "PHONE"
  },
  {
    "valueType": "WORK",
    "value": "bitrix@bitrix.ru",
    "typeId": "EMAIL"
  }
]

По умолчанию — null

Идентификатор объекта CRM entityTypeId: 2

Название
тип

Описание

title
string

Название элемента

По умолчанию генерируется по шаблону {entityTypeName} #{id}, где

  • entityTypeName — название сущности
  • id — идентификатор элемента
    Например для сделки с id = 13 => 'Сделка #13'

typeId
crm_status

Строковый идентификатор типа сущности.

Например для сделки: 'SALE' = 'Продажа'

Список доступных типов сущности можно узнать с помощью crm.status.list применив фильтр { ENTITY_ID: "DEAL_TYPE" }

По умолчанию — первый доступный тип сущности

categoryId
integer

Идентификатор направления (воронки) сделки.

По умолчанию — 0 (общая)

stageId
crm_status

Строковый идентификатор стадии элемента.

Например 'NEW' = 'Не обработан'.

Список доступных стадий можно узнать с помощью crm.status.list применив фильтр:

  • Если сделка находится в общей воронке (направления) — { ENTITY_ID: "DEAL_STAGE" }
  • Если сделка находится не в общей воронке (направления) — { ENTITY_ID: "DEAL_STAGE_{categoryId}" }, где
    categoryId это идентификатор воронки (направления) сделки

По умолчанию — первая доступная стадия относительно воронки

isRecurring
boolean

Является ли сделка регулярной. Возможные значения:

  • Y — да
  • N — нет

По умолчанию — N

probability
integer

Вероятность %.

По умолчанию — null

currencyId
crm_currency

Идентификатор валюты элемента.

По умолчанию — валюта по умолчанию

isManualOpportunity
boolean

Режим расчета суммы. Возможные значения:

  • Y — ручной
  • N — автоматический

По умолчанию — N

opportunity
double

Сумма.

По умолчанию — null

taxValue
double

Сумма налога.

По умолчанию — null

companyId
crm_company

Идентификатор компании привязанный к элементу.

Список компании можно получить с помощью метода crm.item.list по entityTypeId = 4.

По умолчанию — null

contactId
crm_contact

Идентификатор контакта привязанный к элементу.

Список контактов можно получить с помощью метода crm.item.list по entityTypeId = 3.

По умолчанию — null

contactIds
crm_contact[]

Список идентификаторов контакта привязанных к элементу.

Список контактов можно получить с помощью метода crm.item.list по entityTypeId = 3.

По умолчанию — null

quoteId
crm_quote

Идентификатор предложения, который будет привязан к сделке

begindate
date

Дата начала элемента.

По умолчанию — дата создания

closedate
date

Дата окончания элемента.

По умолчанию — дата создания элемента + 7 дней

opened
boolean

Является ли элемент доступным для всех. Возможные значения:

  • Y — да
  • N — нет

По умолчанию — Y. Значение по умолчанию может быть изменено в настройках crm

comments
text

Комментарий.

По умолчанию — null

assignedById
user

Идентификатор ответственного за элемент.

По умолчанию — идентификатор пользователя, который вызывает метод

sourceId
crm_status

Строковый идентификатор источника.

Например 'CALL' = 'Звонок'.

Список доступных источников можно узнать с помощью crm.status.list применив фильтр { ENTITY_ID: "SOURCE" }.

По умолчанию — Первый доступный источник

sourceDescription
text

Дополнительно об источнике.

По умолчанию — null

leadId
crm_lead

Идентификатор лида, на основании, которого создается элемент.

По умолчанию — null

additionalInfo
string

Дополнительная информация.

По умолчанию — null

originatorId
string

Внешний источник.

По умолчанию — null

originId
string

Идентификатор элемента во внешнем источнике.

По умолчанию — null

observers
user[]

Массив идентификаторов пользователей, которые будут являться Наблюдателями в элементе.

По умолчанию — null

locationId
location

Идентификатор местоположения. Служебное поле.

По умолчанию — null

utmSource
string

Рекламная система. Yandex-Direct, Google-Adwords и другие.

По умолчанию — null

utmMedium
string

Тип трафика. Возможные значения:

  • CPC — объявления
  • CPM — баннеры

По умолчанию — null

utmCampaign string

Обозначение рекламной кампании.

По умолчанию — null

utmContent
string

Содержание кампании. Например, для контекстных объявлений.

По умолчанию — null

utmTerm
string

Условие поиска кампании. Например, ключевые слова контекстной рекламы.

По умолчанию — null

ufCrm...
crm_userfield

Пользовательское поле. Смотрите раздел Пользовательские поля в CRM: обзор методов

  • Значения множественных полей передаются в виде массива
  • Чтобы загрузить файл, в качестве значения пользовательского поля необходимо передать массив, где первый элемент — это имя файла, а второй — это закодированный в base64 контент файла.

parentId...
crm_entity

Поле-родитель. Элемент другого типа объекта CRM, который привязан к данному элементу.

Каждое такое поле имеет код parentId + {parentEntityTypeId}

Идентификатор объекта CRM entityTypeId: 3

Название
тип

Описание

honorific
crm_status

Строковый идентификатор обращения контакта.

Например 'HNR_RU_1' = 'г-н'.

Список доступных обращений можно узнать с помощью crm.status.list применив фильтр { ENTITY_ID: "HONOFIRIC" }.

По умолчанию — null

name
string

Имя.

По умолчанию — null

secondName
string

Отчество.

По умолчанию — null

lastName
string

Фамилия.

По умолчанию — null

photo
file

Фотография.

По умолчанию — null

birthdate
date

Дата рождения.

По умолчанию — null

typeId
crm_status

Строковый идентификатор типа сущности.

Например для сделки: 'SALE' = 'Продажа'.

Список доступных типов сущности можно узнать с помощью crm.status.list применив фильтр { ENTITY_ID: "CONTACT_TYPE" }.

По умолчанию — первый доступный тип сущности

sourceId
crm_status

Строковый идентификатор источника.

Например 'CALL' = 'Звонок'.

Список доступных источников можно узнать с помощью crm.status.list применив фильтр { ENTITY_ID: "SOURCE" }.

По умолчанию — первый доступный источник

sourceDescription
text

Дополнительно об источнике.

По умолчанию — null

post
string

Должность.

По умолчанию — null

comments
text

Комментарий.

По умолчанию — null

opened
boolean

Является ли элемент доступным для всех. Возможные значения:

  • Y — да
  • N — нет

По умолчанию — Y. Значение по умолчанию может быть изменено в настройках crm

export
boolean

Участвует ли контакт в экспорте.

По умолчанию — Y

assignedById
user

Идентификатор ответственного за элемент.

По умолчанию — идентификатор пользователя, который вызывает метод

companyId
crm_company

Идентификатор компании привязанный к элементу.

Список компаний можно получить с помощью метода crm.item.list по entityTypeId = 4.

По умолчанию — null

companyIds
crm_company

Массив идентификаторов компаний, которые будут привязаны к элементу

leadId
crm_lead

Идентификатор лида, на основании, которого создается элемент.

По умолчанию — null

originatorId
string

Внешний источник.

По умолчанию — null

originId
string

Идентификатор элемента во внешнем источнике.

По умолчанию — null

originVersion
string

Версия оригинала.

По умолчанию — null

observers
user[]

Массив идентификаторов пользователей, которые будут являться Наблюдателями в элементе.

По умолчанию — null

utmSource
string

Рекламная система. Yandex-Direct, Google-Adwords и другие.

По умолчанию — null

utmMedium
string

Тип трафика. Возможные значения:

  • CPC — объявления
  • CPM — баннеры

По умолчанию — null

utmCampaign
string

Обозначение рекламной кампании.

По умолчанию — null

utmContent
string

Содержание кампании. Например, для контекстных объявлений.

По умолчанию — null

utmTerm
string

Условие поиска кампании. Например, ключевые слова контекстной рекламы.

По умолчанию — null

ufCrm...
crm_userfield

Пользовательское поле. Смотрите раздел Пользовательские поля в CRM: обзор методов

  • Значения множественных полей передаются в виде массива
  • Чтобы загрузить файл, в качестве значения пользовательского поля необходимо передать массив, где первый элемент — это имя файла, а второй — это закодированный в base64 контент файла.

parentId...
crm_entity

Поле-родитель. Элемент другого типа объекта CRM, который привязан к данному элементу.

Каждое такое поле имеет код parentId + {parentEntityTypeId}

fm
crm_multifield[]

Массив мультиполей.

Подробнее о мультиполях можно почитать в разделе crm_multifield

Структура мультиполя:

  • typeId — Тип мультиполя
  • valueType — Тип значения
  • value — Значение

Пример:

fm: [
  {
    "valueType": "WORK",
    "value": "+79999999",
    "typeId": "PHONE"
  },
  {
    "valueType": "WORK",
    "value": "bitrix@bitrix.ru",
    "typeId": "EMAIL"
  }
]

По умолчанию — null

Идентификатор объекта CRM entityTypeId: 4

Название
тип

Описание

title
string

Название элемента.

По умолчанию генерируется по шаблону {entityTypeName} #{id}, где

  • entityTypeName — название сущности
  • id — идентификатор элемента

Например для компании с id = 13 => 'Компания #13'

typeId
crm_status

Строковый идентификатор типа сущности.

Например для сделки: 'SALE' = 'Продажа'.

Список доступных типов сущности можно узнать с помощью crm.status.list применив фильтр { ENTITY_ID: "COMPANY_TYPE" }.

По умолчанию — первый доступный тип сущности

logo
file

Логотип.

По умолчанию — null

bankingDetails
string

Банковские реквизиты.

По умолчанию — null

industry
crm_status

Строковый идентификатор типа индустрии.

Например 'IT' = 'Информационные технологии'.

Список доступных типов индустрий можно узнать с помощью метода crm.status.list применив фильтр { ENTITY_ID: "INDUSTRY"}.

По умолчанию — первый доступный тип индустрии

employees
crm_status

Строковый идентификатор типа количества сотрудников.

Значение берется из списка доступных, например 'EMPLOYEES_1' = 'менее 50'.

Список доступных типов количеств сотрудников можно узнать с помощью метода crm.status.list применив фильтр { ENTITY_ID: "EMPLOYEES" }.

По умолчанию — первый доступный тип количества сотрудников

currencyId
crm_currency

Идентификатор валюты элемента.

По умолчанию — валюта по умолчанию

revenue
double

Годовой оборот.

По умолчанию — 0

opened
boolean

Является ли элемент доступным для всех. Возможные значения:

  • Y — да
  • N — нет

По умолчанию — Y. Значение по умолчанию может быть изменено в настройках crm

comments
text

Комментарий.

По умолчанию — null

isMyCompany
boolean

Является ли компания моей компанией.

По умолчанию — N

assignedById
user

Идентификатор ответственного за элемент.

По умолчанию — идентификатор пользователя, который вызывает метод

contactIds
crm_contact[]

Список идентификаторов контакта привязанных к элементу.

Список контактов можно получить с помощью метода crm.item.list по entityTypeId = 3.

По умолчанию — null

leadId
crm_lead

Идентификатор лида, на основании, которого создается элемент.

По умолчанию — null

originatorId
string

Внешний источник.

По умолчанию — null

originId
string

Идентификатор элемента во внешнем источнике.

По умолчанию — null

originVersion
string

Версия оригинала.

По умолчанию — null

observers
user[]

Массив идентификаторов пользователей, которые будут являться Наблюдателями в элементе.

По умолчанию — null

utmSource
string

Рекламная система. Yandex-Direct, Google-Adwords и другие.

По умолчанию — null

utmMedium
string

Тип трафика. Возможные значения:

  • CPC — объявления
  • CPM — баннеры

По умолчанию — null

utmCampaign
string

Обозначение рекламной кампании.

По умолчанию — null

utmContent
string

Содержание кампании. Например, для контекстных объявлений.

По умолчанию — null

utmTerm
string

Условие поиска кампании. Например, ключевые слова контекстной рекламы.

По умолчанию — null

ufCrm...
crm_userfield

Пользовательское поле. Смотрите раздел Пользовательские поля в CRM: обзор методов

  • Значения множественных полей передаются в виде массива
  • Чтобы загрузить файл, в качестве значения пользовательского поля необходимо передать массив, где первый элемент — это имя файла, а второй — это закодированный в base64 контент файла

parentId...
crm_entity

Поле-родитель. Элемент другого типа объекта CRM, который привязан к данному элементу.

Каждое такое поле имеет код parentId + {parentEntityTypeId}

fm
crm_multifield[]

Массив мультиполей.

Подробнее о мультиполях можно почитать в разделе crm_multifield

Структура мультиполя:

  • typeId — Тип мультиполя
  • valueType — Тип значения
  • value — Значение

Пример:

fm: [
  {
    "valueType": "WORK",
    "value": "+79999999",
    "typeId": "PHONE"
  },
  {
    "valueType": "WORK",
    "value": "bitrix@bitrix.ru",
    "typeId": "EMAIL"
  }
]

По умолчанию — null

Идентификатор объекта CRM entityTypeId: 7

Название
тип

Описание

title
string

Название элемента.

По умолчанию генерируется по шаблону {entityTypeName} #{id}, где

  • entityTypeName — название сущности
  • id — идентификатор элемента

Например для предложения с id = 13 => 'Предложение #13'

assignedById
user

Идентификатор ответственного за элемент.

По умолчанию — идентификатор пользователя, который вызывает метод

opened
boolean

Является ли элемент доступным для всех. Возможные значения:

  • Y — да
  • N — нет

По умолчанию — Y. Значение по умолчанию может быть изменено в настройках CRM

content
text

Содержание.

По умолчанию — null

terms
text

Условия.

По умолчанию — null

comments
text

Комментарий.

По умолчанию — null

dealId
crm_deal

Идентификатор привязанной сделки.

По умолчанию — null

leadId
crm_lead

Идентификатор лида, на основании, которого создается элемент.

По умолчанию — null

storageTypeId
integer

Идентификатор типа хранения. Возможные значения:

  • 1 — файл
  • 2 — WebDAV
  • 3 — диск

По умолчанию:

  1. Если установлен модуль disk -> Диск
  2. Если установлен модуль webdav -> WebDAV
  3. Файл

storageElementIds
integer

Массив файлов.

По умолчанию — null

webformId
integer

Идентификатор CRM Формы.

По умолчанию — null

companyId
crm_company

Идентификатор компании привязанный к элементу.

Список компании можно получить с помощью метода crm.item.list по entityTypeId = 4.

По умолчанию — null

contactId
crm_contact

Идентификатор контакта привязанный к элементу.

Список контактов можно получить с помощью метода crm.item.list по entityTypeId = 3

По умолчанию — null

contactIds
crm_contact[]

Список идентификаторов контакта привязанных к элементу.

Список контактов можно получить с помощью метода crm.item.list по entityTypeId = 3.

По умолчанию — null

locationId
location

Идентификатор местоположения. Служебное поле.

По умолчанию — null

currencyId
crm_currency

Идентификатор валюты элемента.

По умолчанию — валюта по умолчанию

isManualOpportunity
boolean

Режим расчета суммы.

  • Y — ручной
  • N — автоматический

По умолчанию — N

opportunity
double

Сумма.

По умолчанию — null

taxValue
double

Сумма налога.

По умолчанию — null

stageId
crm_status

Строковый идентификатор стадии элемента.

Например 'DRAFT' = 'Новое'.

Список доступных стадий можно узнать с помощью crm.status.list применив фильтр { ENTITY_ID: "QUOTE_STATUS" }.

По умолчанию — первая доступная стадия

begindate
date

Дата начала элемента.

По умолчанию — дата создания элемента

closedate
date

Дата окончания элемента.

По умолчанию — дата создания элемента + 7 дней

actualDate
date

Актуально до.

По умолчанию — дата создания элемента + 7 дней

mycompanyId
crm_company

Идентификатор моей компании.

По умолчанию — идентификатор первой доступной «моей» компании

utmSource
string

Рекламная система. Yandex-Direct, Google-Adwords и другие.

По умолчанию — null

utmMedium
string

Тип трафика.

  • CPC — объявления
  • CPM — баннеры

По умолчанию — null

utmCampaign
string

Обозначение рекламной кампании.

По умолчанию — null

utmContent
string

Содержание кампании. Например, для контекстных объявлений.

По умолчанию — null

utmTerm
string

Условие поиска кампании. Например, ключевые слова контекстной рекламы.

По умолчанию — null

ufCrm...
crm_userfield

Пользовательское поле. Смотрите раздел Пользовательские поля в CRM: обзор методов.

  • Значения множественных полей передаются в виде массива
  • Чтобы загрузить файл, в качестве значения пользовательского поля необходимо передать массив, где первый элемент — это имя файла, а второй — это закодированный в base64 контент файла.

parentId...
crm_entity

Поле-родитель. Элемент другого типа объекта CRM, который привязан к данному элементу.

Каждое такое поле имеет код parentId + {parentEntityTypeId}

Идентификатор объекта CRM entityTypeId: 31

Название
тип

Описание

title
string

Название элемента.

По умолчанию генерируется по шаблону {entityTypeName} #{id}, где

  • entityTypeName — название сущности
  • id — идентификатор элемента

Например для счета с id = 13 => 'Счет #13'

xmlId
string

Внешний код.

По умолчанию — null

assignedById
user

Идентификатор ответственного за элемент.

По умолчанию — идентификатор пользователя, который вызывает метод

opened
boolean

Является ли элемент доступным для всех. Возможные значения:

  • Y — да
  • N — нет

По умолчанию — Y. Значение по умолчанию может быть изменено в настройках CRM

webformId
integer

Идентификатор CRM Формы.

По умолчанию — null

begindate
date

Дата начала элемента.

По умолчанию — дата создания элемента

closedate
date

Дата окончания элемента.

По умолчанию — дата создания элемента + 7 дней

companyId
crm_company

Идентификатор компании привязанный к элементу.

Список компании можно получить с помощью метода crm.item.list по entityTypeId = 4.

По умолчанию — null

contactId
crm_contact

Идентификатор контакта привязанный к элементу.

Список контактов можно получить с помощью метода crm.item.list по entityTypeId = 3.

По умолчанию — null

contactIds
crm_contact[]

Список идентификаторов контакта привязанных к элементу.

Список контактов можно получить с помощью метода crm.item.list по entityTypeId = 3.

По умолчанию — null

observers
user[]

Массив идентификаторов пользователей, которые будут являться Наблюдателями в элементе.

По умолчанию — null

stageId
crm_status

Строковый идентификатор стадии элемента.

Например 'DT31_13:N' = 'Новый'.

Список доступных стадий можно узнать с помощью crm.status.list, применив фильтр: { ENTITY_ID: "SMART_INVOICE_STAGE_{categoryId}" }, где
categoryId — идентификатор воронки счетов по умолчанию. Его можно узнать с помощью crm.category.list по entityTypeId = 31.

По умолчанию — первая доступная стадия

sourceId
crm_status

Строковый идентификатор источника.

Например 'CALL' = 'Звонок'.

Список доступных источников можно узнать с помощью crm.status.list применив фильтр { ENTITY_ID: "SOURCE" }.

По умолчанию — первый доступный источник

sourceDescription
text

Дополнительно об источнике.

По умолчанию — null

currencyId
crm_currency

Идентификатор валюты элемента.

По умолчанию — валюта по умолчанию

isManualOpportunity
boolean

Режим расчета суммы. Возможные значения:

  • Y — ручной
  • N — автоматический

По умолчанию — N

opportunity
double

Сумма.

По умолчанию — null

taxValue
double

Сумма налога.

По умолчанию — null

mycompanyId
crm_company

Идентификатор моей компании.

По умолчанию — идентификатор первой доступной «моей» компании

comments
text

Комментарий.

По умолчанию — null

locationId
location

Идентификатор местоположения. Служебное поле.

По умолчанию — null

ufCrm...
crm_userfield

Пользовательское поле. Смотрите раздел Пользовательские поля в CRM: обзор методов.

  • Значения множественных полей передаются в виде массива
  • Чтобы загрузить файл, в качестве значения пользовательского поля необходимо передать массив, где первый элемент — это имя файла, а второй — это закодированный в base64 контент файла.

parentId...
crm_entity

Поле-родитель. Элемент другого типа объекта CRM, который привязан к данному элементу.

Каждое такое поле имеет код parentId + {parentEntityTypeId}

Идентификатор объекта CRM entityTypeId: можно получить методом crm.type.list или создать новый методом crm.type.add

Название
тип

Описание

title
string

Название элемента.

По умолчанию генерируется по шаблону {entityTypeName} #{id}, где

  • entityTypeName — название смарт-процесса
  • id — идентификатор элемента

Например для элемента смарт-процесса "HR" с id = 13 => 'HR #13'

xmlId
string

Внешний код.

По умолчанию — null

assignedById
user

Идентификатор ответственного за элемент.

По умолчанию — идентификатор пользователя, который вызывает метод

opened
boolean

Является ли элемент доступным для всех.

  • Y — да
  • N — нет

По умолчанию — Y. Значение по умолчанию может быть изменено в настройках CRM

webformId
integer

Идентификатор CRM Формы.

По умолчанию — null

begindate
date

Дата начала элемента.

Доступно лишь при включенной настройке isBeginCloseDatesEnabled у соответствующего смарт-процесса.

По умолчанию — дата создания элемента

closedate
date

Дата окончания элемента.

Доступно лишь при включенной настройке isBeginCloseDatesEnabled у соответствующего смарт-процесса.

По умолчанию — дата создания элемента + 7 дней

companyId
crm_company

Идентификатор компании привязанный к элементу.

Список компании можно получить с помощью метода crm.item.list по entityTypeId = 4.

Доступно лишь при включенной настройке isClientEnabled у соответствующего смарт-процесса.

По умолчанию — null

contactId
crm_contact

Идентификатор контакта привязанный к элементу.

Список контактов можно получить с помощью метода crm.item.list по entityTypeId = 3.

Доступно лишь при включенной настройке isClientEnabled у соответствующего смарт-процесса.

По умолчанию — null

contactIds
crm_contact[]

Список идентификаторов контакта привязанных к элементу.

Список контактов можно получить с помощью метода crm.item.list по entityTypeId = 3.

Доступно лишь при включенной настройке isClientEnabled у соответствующего смарт-процесса.

По умолчанию — null

observers
user[]

Массив идентификаторов пользователей, которые будут являться Наблюдателями в элементе.

Доступно лишь при включенной настройке isObserversEnabled у соответствующего смарт-процесса.

По умолчанию — null

categoryId
crm_category

Идентификатор воронки элемента смарт-процесса.

Список доступных воронок можно узнать с помощью crm.category.list применив соответсвующий entityTypeId

stageId
crm_status

Строковый идентификатор стадии элемента.

Например 'DT1220_30:NEW' = 'Начало'.

Список доступных стадий можно узнать с помощью crm.status.list применив фильтр { ENTITY_ID: "DYNAMIC_{entityTypeId}_STAGE_{categoryId}" }, где

  • entityTypeId — идентификатор типа смарт-процесса
  • categoryId — идентификатор воронки (направления) элемента смарт-процесса

Подробнее о воронках (направлениях).

Доступно лишь при включенной настройке isStagesEnabled у соответствующего смарт-процесса.

По умолчанию — первая доступная стадия относительно воронки

sourceId
crm_status

Строковый идентификатор источника. (например 'CALL' = 'Звонок').

Список доступных источников можно узнать с помощью crm.status.list применив фильтр { ENTITY_ID: "SOURCE" }.

Доступно лишь при включенной настройке isSourceEnabled у соответствующего смарт-процесса.

По умолчанию — первый доступный источник

sourceDescription
text

Дополнительно об источнике.

Доступно лишь при включенной настройке isSourceEnabled у соответствующего смарт-процесса.

По умолчанию — null

currencyId
crm_currency

Идентификатор валюты элемента.

Доступно лишь при включенной настройке isLinkWithProductsEnabled у соответствующего смарт-процесса.

По умолчанию — валюта по умолчанию

isManualOpportunity
boolean

Режим расчета суммы. Возможные значения:

  • Y — ручной
  • N — автоматический

Доступно лишь при включенной настройке isLinkWithProductsEnabled у соответствующего смарт-процесса.

По умолчанию — N

opportunity
double

Сумма.

Доступно лишь при включенной настройке isLinkWithProductsEnabled у соответствующего смарт-процесса.

По умолчанию — null

taxValue
double

Сумма налога.

Доступно лишь при включенной настройке isLinkWithProductsEnabled у соответствующего смарт-процесса.

По умолчанию — null

mycompanyId
crm_company

Идентификатор моей компании.

Доступно лишь при включенной настройке isMycompanyEnabled у соответствующего смарт-процесса.

По умолчанию — Идентификатор первой доступной «моей» компании

ufCrm...
crm_userfield

Пользовательское поле. Смотрите раздел Пользовательские поля в CRM: обзор методов.

  • Значения множественных полей передаются в виде массива
  • Чтобы загрузить файл, в качестве значения пользовательского поля необходимо передать массив, где первый элемент — это имя файла, а второй — это закодированный в base64 контент файла.

parentId...
crm_entity

Поле-родитель. Элемент другого типа объекта CRM, который привязан к данному элементу.

Каждое такое поле имеет код parentId + {parentEntityTypeId}

Настройки смарт-процесса

Подробнее об управлении настройками смарт-процессов Вы можете прочитать в Смарт-процессы: обзор методов и событий

Примеры кода

Как использовать примеры в документации

  1. Пример создания сделки

    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"entityTypeId":2,"fields":{"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}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.item.add
    
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"entityTypeId":2,"fields":{"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},"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: '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: '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: '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: '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>
    
    from b24pysdk.errors import BitrixAPIError, BitrixSDKException
    
    try:
        bitrix_response = client.crm.item.add(
            entity_type_id=1302,
            fields=
            {
                "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,
            }
        ).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}")
    
    require_once('crest.php');
    
    $result = CRest::call(
        'crm.item.add',
        [
            'entityTypeId' => 2,
            'fields' => [
                '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,
            ],
        ]
    );
    
    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);
    }
    
    // client и ctx уже созданы — см. раздел «SDK для Go»
    res, err := client.Core().Call(ctx, "crm.item.add", b24.Params{
    	"entityTypeId": 2,
    	"fields": 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,
    	},
    })
    if err != nil {
    	return fmt.Errorf("crm.item.add: %w", err)
    }
    
    // Ответ приходит как json.RawMessage — разберите его
    // в структуру под форму ответа, показанную ниже на этой странице.
    fmt.Printf("%s\n", res.Result)
    
  2. Пример создания элемента смарт-процесса, у которого есть некоторый набор пользовательских полей

    Пользовательские поля, участвующие в примере
    {
    "ufCrm44_1721812760630": {
        "type": "string",
        "isRequired": false,
        "isReadOnly": false,
        "isImmutable": false,
        "isMultiple": false,
        "isDynamic": true,
        "title": "Пользовательское поле (строка)",
        "listLabel": "Пользовательское поле (строка)",
        "formLabel": "Пользовательское поле (строка)",
        "filterLabel": "Пользовательское поле (строка)",
        "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": "Элемент списка #1"
        },
        {
            "ID": "80",
            "VALUE": "Элемент списка #2"
        },
        {
            "ID": "81",
            "VALUE": "Элемент списка #3"
        },
        {
            "ID": "82",
            "VALUE": "Элемент списка #4"
        }
        ],
        "title": "Пользовательское поле (список)",
        "listLabel": "Пользовательское поле (список)",
        "formLabel": "Пользовательское поле (список)",
        "filterLabel": "Пользовательское поле (список)",
        "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": "Пользовательское поле (дата)",
        "listLabel": "Пользовательское поле (дата)",
        "formLabel": "Пользовательское поле (дата)",
        "filterLabel": "Пользовательское поле (дата)",
        "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": "Множественное пользовательское поле (ссылка)",
        "listLabel": "Множественное пользовательское поле (ссылка)",
        "formLabel": "Множественное пользовательское поле (ссылка)",
        "filterLabel": "Множественное пользовательское поле (ссылка)",
        "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": "Пользовательское поле (файл)",
        "listLabel": "Пользовательское поле (файл)",
        "formLabel": "Пользовательское поле (файл)",
        "filterLabel": "Пользовательское поле (файл)",
        "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": "Пользовательское поле (деньги)",
        "listLabel": "Пользовательское поле (деньги)",
        "formLabel": "Пользовательское поле (деньги)",
        "filterLabel": "Пользовательское поле (деньги)",
        "settings": {
        "DEFAULT_VALUE": ""
        },
        "upperName": "UF_CRM_44_1721812915476"
    },
    "ufCrm44_1721812935209": {
        "type": "boolean",
        "isRequired": false,
        "isReadOnly": false,
        "isImmutable": false,
        "isMultiple": false,
        "isDynamic": true,
        "title": "Пользовательское поле (Да/Нет)",
        "listLabel": "Пользовательское поле (Да/Нет)",
        "formLabel": "Пользовательское поле (Да/Нет)",
        "filterLabel": "Пользовательское поле (Да/Нет)",
        "settings": {
        "DEFAULT_VALUE": 0,
        "DISPLAY": "CHECKBOX",
        "LABEL": [
            "",
            ""
        ],
        "LABEL_CHECKBOX": {
            "en": "Пользовательское поле (Да/Нет)",
            "ru": "Пользовательское поле (Да/Нет)",
            "th": "Пользовательское поле (Да/Нет)",
            "la": "Пользовательское поле (Да/Нет)",
            "tc": "Пользовательское поле (Да/Нет)",
            "sc": "Пользовательское поле (Да/Нет)",
            "br": "Пользовательское поле (Да/Нет)",
            "ar": "Пользовательское поле (Да/Нет)",
            "fr": "Пользовательское поле (Да/Нет)",
            "vn": "Пользовательское поле (Да/Нет)",
            "pl": "Пользовательское поле (Да/Нет)",
            "tr": "Пользовательское поле (Да/Нет)",
            "ja": "Пользовательское поле (Да/Нет)",
            "it": "Пользовательское поле (Да/Нет)",
            "ms": "Пользовательское поле (Да/Нет)",
            "id": "Пользовательское поле (Да/Нет)"
        }
        },
        "upperName": "UF_CRM_44_1721812935209"
    },
    "ufCrm44_1721812948498": {
        "type": "double",
        "isRequired": false,
        "isReadOnly": false,
        "isImmutable": false,
        "isMultiple": false,
        "isDynamic": true,
        "title": "Пользовательское поле (число)",
        "listLabel": "Пользовательское поле (число)",
        "formLabel": "Пользовательское поле (число)",
        "filterLabel": "Пользовательское поле (число)",
        "settings": {
        "PRECISION": 2,
        "SIZE": 20,
        "MIN_VALUE": 0,
        "MAX_VALUE": 0,
        "DEFAULT_VALUE": null
        },
        "upperName": "UF_CRM_44_1721812948498"
    }
    }
    
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{
        "entityTypeId": 1302,
        "fields": {
            "ufCrm44_1721812760630": "Строка для пользовательского поля типа Строка",
            "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|RUB",
            "ufCrm44_1721812935209": "Y",
            "ufCrm44_1721812948498": 9999.9
        }
    }' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.item.add
    
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{
        "entityTypeId": 1302,
        "fields": {
            "ufCrm44_1721812760630": "Строка для пользовательского поля типа Строка",
            "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|RUB",
            "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|RUB',
            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|RUB',
                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>
    
    from b24pysdk.errors import BitrixAPIError, BitrixSDKException
    
    try:
        bitrix_response = client.crm.item.add(
            entity_type_id=1302,
            fields={
                "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,
            },
        ).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}")
    
    require_once('crest.php');
    
    $result = CRest::call(
        'crm.item.add',
        [
            'entityTypeId' => 1302,
            'fields' => [
                'ufCrm44_1721812760630' => "Строка для пользовательского поля типа Строка",
                '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|RUB",
                'ufCrm44_1721812935209' => "Y",
                'ufCrm44_1721812948498' => 9999.9,
            ],
        ]
    );
    
    echo '<PRE>';
    print_r($result);
    echo '</PRE>';
    
    // client и ctx уже созданы — см. раздел «SDK для Go»
    res, err := client.Core().Call(ctx, "crm.item.add", b24.Params{
    	"entityTypeId": 1302,
    	"fields": b24.Params{
    		"ufCrm44_1721812760630": "Строка для пользовательского поля типа Строка",
    		"ufCrm44_1721812814433": 81,
    		"ufCrm44_1721812853419": time.Now().Format(time.RFC3339),
    		"ufCrm44_1721812885588": []string{"example.com", "second-example.com"},
    		"ufCrm44_1721812898903": []string{"green_pixel.png", "iVBORw0KGgoAAAANSUhEUgAAAIAAAAAMCAYAAACqTLVoAAAALklEQVR42u3SAQEAAAQDsEsuOj3YMqwy6fBWCSCAAAIgAAIgAAIgAAIgAAJw3QLOrRH1U/gU4gAAAABJRU5ErkJggg=="},
    		"ufCrm44_1721812915476": "300|RUB",
    		"ufCrm44_1721812935209": "Y",
    		"ufCrm44_1721812948498": 9999.9,
    	},
    })
    if err != nil {
    	return fmt.Errorf("crm.item.add: %w", err)
    }
    
    // Метод заворачивает ответ в объект с ключом "item".
    raw, ok := b24.Unwrap(res.Result, "item")
    if !ok {
    	return fmt.Errorf("в ответе нет ключа item")
    }
    
    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("разбор ответа: %w", err)
    }
    fmt.Println(item.ID, item.CreatedTime)
    

Обработка ответа

HTTP-статус: 200

Примечание

Выключенные поля всегда отдают 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": "Новая сделка (специально для примера rest методов)",
            "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": "RUB",
            "probability": 50,
            "comments": "\nПример комментария внутри сделки\n\n[B]Жирный текст[/B]\n[I]Курсив[/I]\n[U]Подчеркнутый[/U]\n[S]Зачеркнутый[/S]\n[B][I][U][S]Микс[/S][/U][/I][/B]\n\n[LIST]\n[*]Элемент списка #1\n[*]Элемент списка #2\n[*]Элемент списка #3\n[/LIST]\n\n[LIST=1]\n[*]Нумерованный элемент списка #1\n[*]Нумерованный элемент списка #2\n[*]Нумерованный элемент списка #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": "Тут должно быть дополнительное описание об источнике",
            "originatorId": null,
            "originId": null,
            "additionalInfo": "Тут должна быть дополнительная информация",
            "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
    }
}

По умолчанию имена пользовательских полей передаются и возвращаются в camelCase, например ufCrm2_1639669411830.
При передаче параметра useOriginalUfNames со значением Y пользовательские поля будут возвращаться с оригинальными именами, например UF_CRM_2_1639669411830.

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

Название
тип

Описание

result
object

Корневой элемент ответа, содержит единственный ключ item

item
item

Информация о созданном элементе, описание полей

time
time

Информация о времени выполнения запроса

Обработка ошибок

HTTP-статус: 400, 403

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

Название
тип

Описание

error
string

Строковый код ошибки. Состоит из цифр, латинских букв и знака подчеркивания. Может прийти пустым — тогда причину показывает только error_description

error_description
string

Текст ошибки для разработчика. Не показывайте его конечному пользователю без обработки

Возможные коды ошибок

Статус

Код

Описание

Значение

403

allowed_only_intranet_user

Действие разрешено только интранет-пользователям

Пользователь не является интранет-пользователем

400

NOT_FOUND

Смарт-процесс не найден

Возникает, при передаче невалидного entityTypeId

400

ACCESS_DENIED

Доступ запрещен

У пользователя нет прав на добавление элементов типа entityTypeId

400

CRM_FIELD_ERROR_VALUE_NOT_VALID

Неверное значение поля "field"

Передано неправильное значения поля field

400

100

Expected iterable value for multiple field, but got type instead

В одно из множественных полей было передано значения типа type, хотя ожидался итерируемый тип

400

CREATE_DYNAMIC_ITEM_RESTRICTED

Вы не можете создать новый элемент из-за ограничений вашего тарифа

Ограничения тарифа не позволяют создавать элементы смарт-процессов

Статусы и коды системных ошибок

HTTP-статус: 4xx, 5xx

Описанные ниже ошибки возвращает сам REST API, а не логика конкретного метода. Они могут прийти в ответ на любой метод.

Статус

Код
Текст ошибки

Описание

500

INTERNAL_SERVER_ERROR
Internal server error

Возникла внутренняя ошибка сервера. Повторите вызов, а если ошибка сохраняется, обратитесь к администратору сервера или в техническую поддержку Битрикс24

500

ERROR_UNEXPECTED_ANSWER
Server returned an unexpected response

Сервер вернул неожиданный ответ. Повторите вызов, а если ошибка сохраняется, обратитесь к администратору сервера или в техническую поддержку Битрикс24

503

QUERY_LIMIT_EXCEEDED
Too many requests

Превышен лимит на интенсивность запросов

429

OPERATION_TIME_LIMIT
Method is blocked due to operation time limit

Метод заблокирован из-за превышения лимита на ресурсоемкость запросов. Блокировка снимается автоматически, когда накопленное время выполнения метода перестает превышать лимит

401

NO_AUTH_FOUND
Wrong authorization data

В запросе нет авторизационных данных: не передан ни access-токен, ни код вебхука

401

INVALID_REQUEST
Https required

Методы вызываются только по протоколу HTTPS

401

OVERLOAD_LIMIT
REST API is blocked due to overload

REST API заблокирован из-за перегрузки. Это ручная индивидуальная блокировка. Чтобы ее снять, обратитесь в техническую поддержку Битрикс24

401

ACCESS_DENIED
REST is available only on commercial plans

REST API доступен только на коммерческих тарифах. У вебхука текст ошибки другой — REST is available only by subscription

401

INVALID_CREDENTIALS
Invalid request credentials

Не найден активный вебхук с указанным идентификатором пользователя и секретным кодом

404

ERROR_METHOD_NOT_FOUND
Method not found!

Метод с таким именем не найден. Имя написано с ошибкой, метода нет в REST API или он недоступен без нужного скоупа

401

insufficient_scope
The request requires higher privileges than provided by the webhook token

Запрос требует более широких прав, чем есть у токена: у вебхука это выданные ему права, у приложения — скоуп. У приложения текст ошибки заканчивается на provided by the access token

401

expired_token
The access token provided has expired

Срок действия access-токена истек

401

user_access_error
The user does not have access to the application

Приложение установлено, но администратор Битрикс24 открыл доступ к нему только конкретным пользователям

403

PORTAL_DELETED
Portal was deleted

Публичная часть сайта закрыта. Чтобы открыть ее на коробочной установке, отключите опцию «Временное закрытие публичной части сайта». Путь к настройке: Рабочий стол > Настройки > Настройки продукта > Настройки модулей > Главный модуль > Временное закрытие публичной части сайта

Продолжите изучение