Update CRM Item: crm.item.update

Scope: crm

Who can execute the method: any user with "edit" access permission for CRM entity items

This method updates an item of a specific type in the CRM object by assigning new values from the fields parameter.

When updating an item, a standard series of checks, modifications, and automatic actions are performed:

  • access permissions are verified
  • required fields are checked for completion if the item's stage has changed within the same direction
  • dependent required fields are checked for completion if the item's stage has changed within the same direction
  • the correctness of field entries is verified
  • default values are assigned to fields
  • if it turns out that no field values have been changed before saving, the save is not performed
  • automation rules are triggered after saving

Method Parameters

Required parameters are marked with *

Name
type

Description

entityTypeId*
integer

Identifier of the system or user-defined type whose item we want to change

id*
integer

Identifier of the item we want to change.

Can be obtained using the crm.item.list or crm.item.add methods

fields*
object

Object in the format

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

where

  • field_n — field name
  • value_n — new field value

Each type of CRM entity has its own set of fields. This means that the set of fields for changing a Lead does not have to match the set of fields for changing a Contact or SPA.

The list of available fields for each type of entity is described below.

An incorrect field in fields will be ignored.

Note

Only those fields that need to be changed should be passed in fields

useOriginalUfNames
boolean

Parameter to control the format of custom field names in the request and response.
Possible values:

  • Y — original custom field names, e.g., UF_CRM_2_1639669411830
  • N — custom field names in camelCase, e.g., ufCrm2_1639669411830

Default — N

Parameter fields

Required parameters are marked with *

CRM object identifier entityTypeId: 1

Name
type

Description

title
string

Item title

honorific
crm_status

String identifier for the lead's honorific (e.g., 'HNR_RU_1' = 'Mr.').

The list of available honorifics can be obtained using crm.status.list with the filter { ENTITY_ID: "HONOFIRIC" }

name
string

First name

secondName
string

Middle name

lastName
string

Last name

birthdate
date

Date of birth

companyTitle
string

Company name

sourceId
crm_status

String identifier for the source.

For example, 'CALL' = 'Call'.

The list of available sources can be obtained using crm.status.list with the filter { ENTITY_ID: "SOURCE" }

sourceDescription
text

Additional information about the source

stageId
crm_status

String identifier for the item's stage.

For example, 'NEW' = 'Unprocessed'.

The list of available stages can be obtained using crm.status.list with the filter { ENTITY_ID: "STATUS" }

statusDescription
text

Additional information about the stage

post
string

Position

currencyId
crm_currency

Identifier of the item's currency

isManualOpportunity
boolean

Opportunity calculation mode. Possible values:

  • Y — manual
  • N — automatic

opportunity
double

Amount

opened
boolean

Is the item available to everyone? Possible values:

  • Y — yes
  • N — no

comments
text

Comment

assignedById
user

Identifier of the person responsible for the item

companyId
crm_company

Identifier of the company linked to the item.

The list of companies can be obtained using the crm.item.list method with entityTypeId = 4

contactId
crm_contact

Identifier of the contact linked to the item.

The list of contacts can be obtained using the crm.item.list method with entityTypeId = 3

contactIds
crm_contact[]

List of identifiers of contacts linked to the item.

The list of contacts can be obtained using the crm.item.list method with entityTypeId = 3

originatorId
string

External source

originId
string

Identifier of the item in the external source

webformId
integer

Identifier of the CRM Form

observers
user[]

Array of user identifiers who will be observers in the item

utmSource
string

Advertising system. For example: Google Ads, Bing Ads, etc.

utmMedium
string

Traffic type. Possible values:

  • CPC — ads
  • CPM — banners

utmCampaign
string

Identifier of the advertising campaign

utmContent
string

Content of the campaign. For example, for contextual ads

utmTerm
string

Search condition of the campaign. For example, keywords for contextual advertising

ufCrm...
crm_userfield

Custom field.

Read about custom fields in the section Custom Fields in CRM

Values of multiple fields are passed as an array.

To upload a file, the value of the custom field must be an array where the first element is the file name and the second is the content of the file encoded in base64.

parentId...
crm_entity

Parent field. An element of another type of CRM object linked to this item.

Each such field has the code parentId + {parentEntityTypeId}

fm
multifield[]

Array of multifields.

More about multifields can be read in the section crm_multifield

Structure of a multifield:

  • id — Unique identifier of the multifield. If no multifield with this id exists, a new multifield will be created
  • typeId — Type of the multifield
  • valueType — Type of value
  • value — Value

Example:

  fm: {
              "15": {
                  "valueType": "WORK",
                  "value": "+19999999999",
                  "typeId": "PHONE"
              },
              "16": {
                  "valueType": "WORK",
                  "value": "bitrix@bitrix.com",
                  "typeId": "EMAIL"
              }
          }
        

Default — null

CRM object identifier entityTypeId: 2

Name
type

Description

title
string

Item title

typeId
crm_status

String identifier for the entity type.

For example, for a deal: 'SALE' = 'Sale'

The list of available entity types can be obtained using crm.status.list with the filter { ENTITY_ID: "DEAL_TYPE" }

categoryId
integer

Identifier of the direction (funnel) of the deal

stageId
crm_status

String identifier for the item's stage.

For example, 'NEW' = 'Unprocessed'.

The list of available stages can be obtained using crm.status.list with the filter:

  • If the deal is in the general funnel (direction) — { ENTITY_ID: "DEAL_STAGE" }
  • If the deal is not in the general funnel (direction) — { ENTITY_ID: "DEAL_STAGE_{categoryId}" }, where
    categoryId is the identifier of the funnel (direction) of the deal

isRecurring
boolean

Is the deal recurring? Possible values:

  • Y — yes
  • N — no

probability
integer

Probability %

currencyId
crm_currency

Identifier of the item's currency

isManualOpportunity
boolean

Opportunity calculation mode. Possible values:

  • Y — manual
  • N — automatic

opportunity
double

Amount

taxValue
double

Tax amount

companyId
crm_company

Identifier of the company linked to the item.

The list of companies can be obtained using the crm.item.list method with entityTypeId = 4

contactId
crm_contact

Identifier of the contact linked to the item.

The list of contacts can be obtained using the crm.item.list method with entityTypeId = 3

contactIds
crm_contact[]

List of identifiers of contacts linked to the item.

The list of contacts can be obtained using the crm.item.list method with entityTypeId = 3

quoteId
crm_quote

Identifier of the estimate that will be linked to the deal

begindate
date

Start date of the item

closedate
date

End date of the item

opened
boolean

Is the item available to everyone? Possible values:

  • Y — yes
  • N — no

comments
text

Comment

assignedById
user

Identifier of the person responsible for the item

sourceId
crm_status

String identifier for the source.

For example, 'CALL' = 'Call'.

The list of available sources can be obtained using crm.status.list with the filter { ENTITY_ID: "SOURCE" }

sourceDescription
text

Additional information about the source

leadId
crm_lead

Identifier of the lead based on which the item is created

additionalInfo
string

Additional information

originatorId
string

External source

originId
string

Identifier of the item in the external source

observers
user[]

Array of user identifiers who will be observers in the item

locationId
location

Identifier of the location. Service field

utmSource
string

Advertising system. Google Ads, Bing Ads, etc.

utmMedium
string

Traffic type. Possible values:

  • CPC — ads
  • CPM — banners

utmCampaign string

Identifier of the advertising campaign

utmContent
string

Content of the campaign. For example, for contextual ads

utmTerm
string

Search condition of the campaign. For example, keywords for contextual advertising

ufCrm...
crm_userfield

Custom field. See the section Custom Fields in CRM

  • Values of multiple fields are passed as an array
  • To upload a file, the value of the custom field must be an array where the first element is the file name and the second is the content of the file encoded in base64.

parentId...
crm_entity

Parent field. An element of another type of CRM object linked to this item.

Each such field has the code parentId + {parentEntityTypeId}

CRM object identifier entityTypeId: 3

Name
type

Description

honorific
crm_status

String identifier for the contact's honorific.

For example, 'HNR_RU_1' = 'Mr.'.

The list of available honorifics can be obtained using crm.status.list with the filter { ENTITY_ID: "HONOFIRIC" }

name
string

First name

secondName
string

Middle name

lastName
string

Last name

photo
file

Photo

birthdate
date

Date of birth

typeId
crm_status

String identifier for the entity type.

For example, for a deal: 'SALE' = 'Sale'.

The list of available entity types can be obtained using crm.status.list with the filter { ENTITY_ID: "CONTACT_TYPE" }

sourceId
crm_status

String identifier for the source.

For example, 'CALL' = 'Call'.

The list of available sources can be obtained using crm.status.list with the filter { ENTITY_ID: "SOURCE" }

sourceDescription
text

Additional information about the source

post
string

Position

comments
text

Comment

opened
boolean

Is the item available to everyone? Possible values:

  • Y — yes
  • N — no

export
boolean

Is the contact participating in the export?

assignedById
user

Identifier of the person responsible for the item

companyId
crm_company

Identifier of the company linked to the item.

The list of companies can be obtained using the crm.item.list method with entityTypeId = 4

companyIds
crm_company

Array of identifiers of companies that will be linked to the item

leadId
crm_lead

Identifier of the lead based on which the item is created

originatorId
string

External source

originId
string

Identifier of the item in the external source

originVersion
string

Version of the original

observers
user[]

Array of user identifiers who will be observers in the item

utmSource
string

Advertising system. Google Ads, Bing Ads, etc.

utmMedium
string

Traffic type. Possible values:

  • CPC — ads
  • CPM — banners

utmCampaign
string

Identifier of the advertising campaign

utmContent
string

Content of the campaign. For example, for contextual ads

utmTerm
string

Search condition of the campaign. For example, keywords for contextual advertising

ufCrm...
crm_userfield

Custom field. See the section Custom Fields in CRM

  • Values of multiple fields are passed as an array
  • To upload a file, the value of the custom field must be an array where the first element is the file name and the second is the content of the file encoded in base64.

parentId...
crm_entity

Parent field. An element of another type of CRM object linked to this item.

Each such field has the code parentId + {parentEntityTypeId}

fm
multifield[]

Array of multifields.

More about multifields can be read in the section crm_multifield

Structure of a multifield:

  • id — Unique identifier of the multifield. If no multifield with this id exists, a new multifield will be created
  • typeId — Type of the multifield
  • valueType — Type of value
  • value — Value

Example:

  fm: {
              "15": {
                  "valueType": "WORK",
                  "value": "+19999999999",
                  "typeId": "PHONE"
              },
              "16": {
                  "valueType": "WORK",
                  "value": "bitrix@bitrix.com",
                  "typeId": "EMAIL"
              }
          }
        

Default — null

CRM object identifier entityTypeId: 4

Name
type

Description

title
string

Item title

typeId
crm_status

String identifier for the entity type.

For example, for a deal: 'SALE' = 'Sale'.

The list of available entity types can be obtained using crm.status.list with the filter { ENTITY_ID: "COMPANY_TYPE" }

logo
file

Logo

bankingDetails
string

Banking details

industry
crm_status

String identifier for the industry type.

For example, 'IT' = 'Information Technology'.

The list of available industry types can be obtained using the crm.status.list method with the filter { ENTITY_ID: "INDUSTRY"}

employees
crm_status

String identifier for the number of employees.

The value is taken from the available list, for example, 'EMPLOYEES_1' = 'less than 50'.

The list of available employee counts can be obtained using the crm.status.list method with the filter { ENTITY_ID: "EMPLOYEES" }

currencyId
crm_currency

Identifier of the item's currency

revenue
double

Annual revenue

opened
boolean

Is the item available to everyone? Possible values:

  • Y — yes
  • N — no

comments
text

Comment

isMyCompany
boolean

Is the company my company?

assignedById
user

Identifier of the person responsible for the item

contactIds
crm_contact[]

List of identifiers of contacts linked to the item.

The list of contacts can be obtained using the crm.item.list method with entityTypeId = 3.

leadId
crm_lead

Identifier of the lead based on which the item is created.

originatorId
string

External source

originId
string

Identifier of the item in the external source

originVersion
string

Version of the original

observers
user[]

Array of user identifiers who will be observers in the item

utmSource
string

Advertising system. Google Ads, Bing Ads, etc.

utmMedium
string

Traffic type. Possible values:

  • CPC — ads
  • CPM — banners

utmCampaign
string

Identifier of the advertising campaign

utmContent
string

Content of the campaign. For example, for contextual ads

utmTerm
string

Search condition of the campaign. For example, keywords for contextual advertising

ufCrm...
crm_userfield

Custom field. See the section Custom Fields in CRM

  • Values of multiple fields are passed as an array
  • To upload a file, the value of the custom field must be an array where the first element is the file name and the second is the content of the file encoded in base64

parentId...
crm_entity

Parent field. An element of another type of CRM object linked to this item.

Each such field has the code parentId + {parentEntityTypeId}

fm
multifield[]

Array of multifields.

More about multifields can be read in the section crm_multifield

Structure of a multifield:

  • id — Unique identifier of the multifield. If no multifield with this id exists, a new multifield will be created
  • typeId — Type of the multifield
  • valueType — Type of value
  • value — Value

Example:

  fm: {
              "15": {
                  "valueType": "WORK",
                  "value": "+19999999999",
                  "typeId": "PHONE"
              },
              "16": {
                  "valueType": "WORK",
                  "value": "bitrix@bitrix.com",
                  "typeId": "EMAIL"
              }
          }
        

Default — null

CRM object identifier entityTypeId: 7

Name
type

Description

title
string

Item title

assignedById
user

Identifier of the person responsible for the item

opened
boolean

Is the item available to everyone? Possible values:

  • Y — yes
  • N — no

content
text

Content

terms
text

Terms

comments
text

Comment

dealId
crm_deal

Identifier of the linked deal

leadId
crm_lead

Identifier of the lead based on which the item is created

storageTypeId
integer

Identifier of the storage type. Possible values:

  • 1 — file
  • 2 — WebDAV
  • 3 — Drive

storageElementIds
integer

Array of files

webformId
integer

Identifier of the CRM Form

companyId
crm_company

Identifier of the company linked to the item.

The list of companies can be obtained using the crm.item.list method with entityTypeId = 4

contactId
crm_contact

Identifier of the contact linked to the item.

The list of contacts can be obtained using the crm.item.list method with entityTypeId = 3

contactIds
crm_contact[]

List of identifiers of contacts linked to the item.

The list of contacts can be obtained using the crm.item.list method with entityTypeId = 3

locationId
location

Identifier of the location. Service field

currencyId
crm_currency

Identifier of the item's currency

isManualOpportunity
boolean

Opportunity calculation mode.

  • Y — manual
  • N — automatic

opportunity
double

Amount

taxValue
double

Tax amount

stageId
crm_status

String identifier for the item's stage.

For example, 'DRAFT' = 'New'.

The list of available stages can be obtained using crm.status.list with the filter { ENTITY_ID: "QUOTE_STATUS" }

begindate
date

Start date of the item

closedate
date

End date of the item

actualDate
date

Valid until

mycompanyId
crm_company

Identifier of my company

utmSource
string

Advertising system. Google Ads, Bing Ads, etc.

utmMedium
string

Traffic type.

  • CPC — ads
  • CPM — banners

utmCampaign
string

Identifier of the advertising campaign

utmContent
string

Content of the campaign. For example, for contextual ads

utmTerm
string

Search condition of the campaign. For example, keywords for contextual advertising

ufCrm...
crm_userfield

Custom field. See the section Custom Fields in CRM.

  • Values of multiple fields are passed as an array
  • To upload a file, the value of the custom field must be an array where the first element is the file name and the second is the content of the file encoded in base64.

parentId...
crm_entity

Parent field. An element of another type of CRM object linked to this item.

Each such field has the code parentId + {parentEntityTypeId}

CRM object identifier entityTypeId: 31

Name
type

Description

title
string

Item title

xmlId
string

External code

assignedById
user

Identifier of the person responsible for the item

opened
boolean

Is the item available to everyone? Possible values:

  • Y — yes
  • N — no

webformId
integer

Identifier of the CRM Form

begindate
date

Start date of the item

closedate
date

End date of the item

companyId
crm_company

Identifier of the company linked to the item.

The list of companies can be obtained using the crm.item.list method with entityTypeId = 4

contactId
crm_contact

Identifier of the contact linked to the item.

The list of contacts can be obtained using the crm.item.list method with entityTypeId = 3

contactIds
crm_contact[]

List of identifiers of contacts linked to the item.

The list of contacts can be obtained using the crm.item.list method with entityTypeId = 3

observers
user[]

Array of user identifiers who will be observers in the item

stageId
crm_status

String identifier for the item's stage.

For example, 'DT31_13:N' = 'New'.

The list of available stages can be obtained using crm.status.list with the filter: { ENTITY_ID: "SMART_INVOICE_STAGE_{categoryId}" }, where
categoryId — identifier of the default invoice funnel. It can be obtained using crm.category.list with entityTypeId = 31

sourceId
crm_status

String identifier for the source.

For example, 'CALL' = 'Call'.

The list of available sources can be obtained using crm.status.list with the filter { ENTITY_ID: "SOURCE" }

sourceDescription
text

Additional information about the source

currencyId
crm_currency

Identifier of the item's currency

isManualOpportunity
boolean

Opportunity calculation mode. Possible values:

  • Y — manual
  • N — automatic

opportunity
double

Amount

taxValue
double

Tax amount

mycompanyId
crm_company

Identifier of my company

comments
text

Comment

locationId
location

Identifier of the location. Service field

ufCrm...
crm_userfield

Custom field. See the section Custom Fields in CRM.

  • Values of multiple fields are passed as an array
  • To upload a file, the value of the custom field must be an array where the first element is the file name and the second is the content of the file encoded in base64.

parentId...
crm_entity

Parent field. An element of another type of CRM object linked to this item.

Each such field has the code parentId + {parentEntityTypeId}

CRM object identifier entityTypeId: can be obtained using the crm.type.list method or created using the crm.type.add method.

Name
type

Description

title
string

Item title

xmlId
string

External code

assignedById
user

Identifier of the person responsible for the item

opened
boolean

Is the item available to everyone?

  • Y — yes
  • N — no

webformId
integer

Identifier of the CRM Form

begindate
date

Start date of the item.

Available only when the isBeginCloseDatesEnabled setting is enabled for the corresponding SPA.

closedate
date

End date of the item.

Available only when the isBeginCloseDatesEnabled setting is enabled for the corresponding SPA

companyId
crm_company

Identifier of the company linked to the item.

The list of companies can be obtained using the crm.item.list method with entityTypeId = 4.

Available only when the isClientEnabled setting is enabled for the corresponding SPA

contactId
crm_contact

Identifier of the contact linked to the item.

The list of contacts can be obtained using the crm.item.list method with entityTypeId = 3.

Available only when the isClientEnabled setting is enabled for the corresponding SPA

contactIds
crm_contact[]

List of identifiers of contacts linked to the item.

The list of contacts can be obtained using the crm.item.list method with entityTypeId = 3.

Available only when the isClientEnabled setting is enabled for the corresponding SPA

observers
user[]

Array of user identifiers who will be observers in the item.

Available only when the isObserversEnabled setting is enabled for the corresponding SPA

categoryId
crm_category

Identifier of the funnel of the SPA item.

If the identifier is not specified, the SPA will be moved to the main funnel.

The list of available funnels can be obtained using the crm.category.list with the corresponding entityTypeId

stageId
crm_status

String identifier for the item's stage.

For example, 'DT1220_30:NEW' = 'Start'.

The list of available stages can be obtained using crm.status.list with the filter { ENTITY_ID: "DYNAMIC_{entityTypeId}_STAGE_{categoryId}" }, where

  • entityTypeId — identifier of the SPA type
  • categoryId — identifier of the funnel (direction) of the SPA item

More about funnels (directions).

Available only when the isStagesEnabled setting is enabled for the corresponding SPA

sourceId
crm_status

String identifier for the source. (for example, 'CALL' = 'Call').

The list of available sources can be obtained using crm.status.list with the filter { ENTITY_ID: "SOURCE" }.

Available only when the isSourceEnabled setting is enabled for the corresponding SPA

sourceDescription
text

Additional information about the source.

Available only when the isSourceEnabled setting is enabled for the corresponding SPA

currencyId
crm_currency

Identifier of the item's currency.

Available only when the isLinkWithProductsEnabled setting is enabled for the corresponding SPA

isManualOpportunity
boolean

Opportunity calculation mode. Possible values:

  • Y — manual
  • N — automatic

Available only when the isLinkWithProductsEnabled setting is enabled for the corresponding SPA

opportunity
double

Amount.

Available only when the isLinkWithProductsEnabled setting is enabled for the corresponding SPA

taxValue
double

Tax amount.

Available only when the isLinkWithProductsEnabled setting is enabled for the corresponding SPA

mycompanyId
crm_company

Identifier of my company.

Available only when the isMycompanyEnabled setting is enabled for the corresponding SPA

ufCrm...
crm_userfield

Custom field. See the section Custom Fields in CRM.

  • Values of multiple fields are passed as an array
  • To upload a file, the value of the custom field must be an array where the first element is the file name and the second is the content of the file encoded in base64.

parentId...
crm_entity

Parent field. An element of another type of CRM object linked to this item.

Each such field has the code parentId + {parentEntityTypeId}

SPA Settings

More about managing SPA settings can be read in Smart Processes: Overview of Methods

How to Update a Custom Field of Type File

  1. Upload a new file instead of the old one (non-multiple field)

    To replace a file in a non-multiple field, simply upload the new file. The old one will be automatically deleted.

    {
                "fields": {
                    "ufCrm1617027453943": [
                        "myfile.pdf",
                        "...base64_encoded_file_content..."
                    ]
                }
            }
            
  2. Remove the value of the custom field of type file

    To do this, simply pass an empty string ('') instead of the value.

  3. Leave the value of the non-multiple field of type file unchanged

    The simplest option is not to add a key with this field in fields.

    But if you need to pass it and not change it, then the value should be passed as a list where the key id will be the file identifier.

    {
                "fields": {
                    "ufCrm1617027453943": {
                        "id": 433
                    }
                }
            }
            

    Warning

    If a value different from the current one is passed in id, the field value will be reset and the file will be deleted.

  4. Working with a multiple field of type file

    The value of a multiple field is an array. Each element of the array is subject to the same rules as for non-multiple values.

    How to Partially Overwrite Values of a Multiple Field of Type File

    For example, the current values in the multiple field of type file are [12, 255, 44].

    You need to keep files 12 and 44, and upload a new one instead of 255.

    The request should look as follows:

    {
                "fields": {
                    "ufCrm1617027453943": [
                        {
                            "id": 12
                        },
                        {
                            "id": 44
                        },
                        [
                            "myNewFile.pdf",
                            "...base64_encoded_file_content..."
                        ]
                    ]
                }
            }
            

Code Examples

Update a deal with id = 351

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"entityTypeId":2,"id":351,"fields":{"title":"REST Deal #1","stageId":"C9:UC_NYL06U","assignedById":6,"observers":[1,2,3],"opened":"N","typeId":"SERVICE","opportunity":10000,"currencyId":"USD","additionalInfo":"Updating deal via REST","isManualOpportunity":"N","utmSource":"google","ufCrm_1721244707107":200.05,"parentId1220":2}}' \
        https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.item.update
        
curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"entityTypeId":2,"id":351,"fields":{"title":"REST Deal #1","stageId":"C9:UC_NYL06U","assignedById":6,"observers":[1,2,3],"opened":"N","typeId":"SERVICE","opportunity":10000,"currencyId":"USD","additionalInfo":"Updating deal via REST","isManualOpportunity":"N","utmSource":"google","ufCrm_1721244707107":200.05,"parentId1220":2},"auth":"**put_access_token_here**"}' \
        https://**put_your_bitrix24_address**/rest/crm.item.update
        
    BX24.callMethod(
                'crm.item.update',
                {
                    entityTypeId: 2,
                    id: 351,
                    fields: {
                        title: "REST Deal #1",
                        stageId: "C9:UC_NYL06U",
                        assignedById: 6,
                        observers: [1, 2, 3],
                        opened: "N",
                        typeId: "SERVICE",
                        opportunity: 10000,
                        currencyId: "USD",
                        additionalInfo: "Updating deal via REST",
                        isManualOpportunity: "N",
                        utmSource: "google",
                        ufCrm_1721244707107: 200.05,
                        parentId1220: 2,
                    },
                },
                (result) => {
                    if (result.error())
                    {
                        console.error(result.error());
        
                        return;
                    }
        
                    console.info(result.data());
                },
            );
        
require_once('crest.php');
        
        $result = CRest::call(
            'crm.item.update',
            [
                'entityTypeId' => 2,
                'id' => 351,
                'fields' => [
                    'title' => "REST Deal #1",
                    'stageId' => "C9:UC_NYL06U",
                    'assignedById' => 6,
                    'observers' => [1, 2, 3],
                    'opened' => "N",
                    'typeId' => "SERVICE",
                    'opportunity' => 10000,
                    'currencyId' => "USD",
                    'additionalInfo' => "Updating deal via REST",
                    'isManualOpportunity' => "N",
                    'utmSource' => "google",
                    'ufCrm_1721244707107' => 200.05,
                    'parentId1220' => 2,
                ]
            ]
        );
        
        echo '<PRE>';
        print_r($result);
        echo '</PRE>';
        
try {
            $entityTypeId = 1; // Set your entity type ID
            $id = 123; // Set the ID of the item to update
            $fields = [
                'TITLE' => 'Updated Title',
                'DATE_MODIFIED' => (new DateTime())->format(DateTime::ATOM), // Example DateTime field
                // Add other fields as necessary
            ];
        
            $itemService = $serviceBuilder->getCRMScope()->item();
            $updateResult = $itemService->update($entityTypeId, $id, $fields);
        
            if ($updateResult->isSuccess()) {
                print("Item updated successfully: " . json_encode($updateResult));
            } else {
                print("Failed to update item.");
            }
        } catch (Throwable $e) {
            print("An error occurred: " . $e->getMessage());
        }
        

Response Handling

HTTP Status: 200

{
            "result": {
                "item": {
                    "id": 351,
                    "createdTime": "2024-07-23T19:10:26+02:00",
                    "dateCreateShort": null,
                    "updatedTime": "2024-07-23T18:19:21+02:00",
                    "dateModifyShort": null,
                    "createdBy": 1,
                    "updatedBy": 1,
                    "assignedById": 6,
                    "opened": "N",
                    "leadId": null,
                    "companyId": 0,
                    "contactId": 0,
                    "quoteId": null,
                    "title": "REST Deal #1",
                    "productId": null,
                    "categoryId": 9,
                    "stageId": "C9:UC_NYL06U",
                    "stageSemanticId": "P",
                    "isNew": "N",
                    "isRecurring": "N",
                    "isReturnCustomer": "N",
                    "isRepeatedApproach": "N",
                    "closed": "N",
                    "typeId": "SERVICE",
                    "opportunity": 10000,
                    "isManualOpportunity": "N",
                    "taxValue": 0,
                    "currencyId": "USD",
                    "probability": null,
                    "comments": "",
                    "begindate": "2024-07-23T02:00:00+02:00",
                    "begindateShort": null,
                    "closedate": "2024-07-31T02:00:00+02:00",
                    "closedateShort": null,
                    "eventDate": null,
                    "eventDateShort": null,
                    "eventId": null,
                    "eventDescription": null,
                    "locationId": null,
                    "webformId": 0,
                    "sourceId": "",
                    "sourceDescription": "",
                    "originatorId": null,
                    "originId": null,
                    "additionalInfo": "Updating deal via REST",
                    "searchContent": "351 Deal #351 10200.00 US Dollar No Invented Invented Sale Title2134234233 23.07.2024 31.07.2024",
                    "orderStage": null,
                    "movedBy": 1,
                    "movedTime": "2024-07-23T18:19:21+02:00",
                    "lastActivityBy": 1,
                    "lastActivityTime": "2024-07-23T18:10:26+02:00",
                    "isWork": null,
                    "isWon": null,
                    "isLose": null,
                    "receivedAmount": null,
                    "lostAmount": null,
                    "hasProducts": null,
                    "ufCrm_1721244707107": 200.05,
                    "parentId1220": 2,
                    "utmSource": "google",
                    "utmMedium": null,
                    "utmCampaign": null,
                    "utmContent": null,
                    "utmTerm": null,
                    "observers": [
                        1,
                        2,
                        3
                    ],
                    "contactIds": [],
                    "entityTypeId": 2
                }
            },
            "time": {
                "start": 1721751560.824475,
                "finish": 1721751564.481578,
                "duration": 3.6571030616760254,
                "processing": 3.1893951892852783,
                "date_start": "2024-07-23T18:19:20+02:00",
                "date_finish": "2024-07-23T18:19:24+02:00",
                "operating": 3.1893470287323
            }
        }
        

Returned Values

Name
type

Description

result
object

Root element of the response, contains a single key item

item
item

Information about the updated item, field descriptions

time
time

Information about the execution time of the request

By default, custom field names are passed and returned in camelCase, for example, ufCrm2_1639669411830.
When passing the parameter useOriginalUfNames with the value Y, custom fields will be returned with their original names, for example, UF_CRM_2_1639669411830.

Error Handling

HTTP Status: 400, 403

{
            "error": "NOT_FOUND",
            "error_description": "SPA not found"
        }
        

Name
type

Description

error
string

String error code. It may consist of digits, Latin letters, and underscores

error_description
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

403

allowed_only_intranet_user

Action is allowed only for intranet users

User is not an intranet user

400

NOT_FOUND

SPA not found

Occurs when an invalid entityTypeId is passed

400

ACCESS_DENIED

Access denied

User does not have permission to modify items of type entityTypeId

400

CRM_FIELD_ERROR_VALUE_NOT_VALID

Invalid value for field "field"

Incorrect value passed for field field

400

100

Expected iterable value for multiple field, but got type instead

One of the multiple fields received a value of type type, while an iterable type was expected

400

-

Insufficient rights to change the stage

If a user attempts to change the stage of an item without sufficient rights

400

UPDATE_DYNAMIC_ITEM_RESTRICTED

You cannot change the item due to your plan's restrictions

Plan restrictions do not allow changing SPA items

Statuses and System Error Codes

HTTP Status: 20x, 40x, 50x

The errors described below may occur when calling any method.

Status

Code
Error Message

Description

500

INTERNAL_SERVER_ERROR
Internal server error

An internal server error has occurred, please contact the server administrator or Bitrix24 technical support

500

ERROR_UNEXPECTED_ANSWER
Server returned an unexpected response

An internal server error has occurred, please contact the server administrator or Bitrix24 technical support

503

QUERY_LIMIT_EXCEEDED
Too many requests

The request intensity limit has been exceeded

405

ERROR_BATCH_METHOD_NOT_ALLOWED
Method is not allowed for batch usage

The current method is not allowed to be called using batch

400

ERROR_BATCH_LENGTH_EXCEEDED
Max batch length exceeded

The maximum length of parameters passed to the batch method has been exceeded

401

NO_AUTH_FOUND
Wrong authorization data

Invalid access token or webhook code

400

INVALID_REQUEST
Https required

The methods must be called using the HTTPS protocol

503

OVERLOAD_LIMIT
REST API is blocked due to overload

The REST API is blocked due to overload. This is a manual individual block, to remove it you need to contact Bitrix24 technical support

403

ACCESS_DENIED
REST API is available only on commercial plans

The REST API is available only on commercial plans

403

INVALID_CREDENTIALS
Invalid request credentials

The user whose access token or webhook was used to call the method lacks permissions

404

ERROR_MANIFEST_IS_NOT_AVAILABLE
Manifest is not available

The manifest is not available

403

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

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

401

expired_token
The access token provided has expired

The provided access token has expired

403

user_access_error
The user does not have access to the application

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

500

PORTAL_DELETED
Portal was deleted

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

Continue Learning