# calendar.event.update

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

Обновить событие
Scope: `calendar`
Кто может выполнять метод: любой пользователь

## Описание

Метод обновляет существующее событие.

## Параметры

- `id` `integer` — обязательный. Идентификатор события.
  Получить идентификатор можно методом [calendar.event.get](https://chugunov.pro/api-bitrix24/calendar/calendar-event/calendar-event-get/) или [calendar.event.get.nearest](https://chugunov.pro/api-bitrix24/calendar/calendar-event/calendar-event-get-nearest/)
- `type` `string` — обязательный. Тип календаря: 
  - `user` — календарь пользователя
  - `group` — календарь группы
  - `company_calendar` — календарь компании
- `ownerId` `integer` — обязательный. Идентификатор владельца календаря. 
  Для календаря компании параметр `ownerId` имеет значение `0`
- `from` `datetime` — необязательный. Дата и время начала события.
  Можно указать дату без времени. Для этого передайте значение `Y` в параметре `skip_time`
- `to` `datetime` — необязательный. Дата окончания события.
  Можно указать дату без времени. Для этого передайте значение `Y` в параметре `skip_time`
- `from_ts` `integer` — необязательный. Дата и время в формате timestamp. Можно использовать вместо параметра `from`
- `to_ts` `integer` — необязательный. Дата и время в формате timestamp. Можно использовать вместо параметра `to`
- `section` `integer` — необязательный. Идентификатор календаря
- `name` `string` — необязательный. Название события
- `skip_time` `string` — необязательный. Передать значение даты без времени в параметрах `from` и `to`. Возможные значения:
  - `Y` — использовать только дату
  - `N` — использовать дату и время
  Формат даты по стандарту ISO-8601
- `timezone_from` `string` — необязательный. Часовой пояс даты и времени начала события. По умолчанию — таймзона текущего пользователя.
  Значение нужно передавать в виде строки, например, `Europe/Riga`.
  [Особенности работы с часовыми поясами](#timezone-features)
- `timezone_to` `string` — необязательный. Часовой пояс даты и времени окончания события. Значение по умолчанию — таймзона текущего пользователя.
  Значение нужно передавать в виде строки, например, `Europe/Riga`.
  [Особенности работы с часовыми поясами](#timezone-features)
- `description` `text` — необязательный. Описание события
- `color` `string` — необязательный. Цвет фона события.
  Символ `#` в цвете необходимо передавать в формате unicode — `%23`
- `text_color` `string` — необязательный. Цвет текста события.
  Символ `#` в цвете необходимо передавать в формате unicode — `%23`
- `accessibility` `string` — необязательный. Доступность на время события: 
  - `busy` — занят 
  - `absent` — отсутствую 
  - `quest` — под вопросом 
  - `free` — свободен
- `importance` `string` — необязательный. Важность события: 
  - `high` — высокая 
  - `normal` — средняя 
  - `low` — низкая
- `private_event` `string` — необязательный. Отметка, что событие частное. Возможные значения:
  - `Y` — частное
  - `N` — не частное
- `recurrence_mode` `string` — необязательный. Параметр частичного редактирования повторяемого события. Возможные значения:
   - `this` — изменения применяются только к текущему событию. Обязательно указать `current_date_from`
   - `next` — изменения применяются к текущему и ко всем следующим событиям. Обязательно указать `current_date_from`
   - `all` — изменения применяются ко всем событиям в цепочке повторений
- `current_date_from` `date` — необязательный. Дата текущего события для частичного редактирования повторяемого события.
  Нужен только для `recurrence_mode` со значениями `this` или `next`
- `rrule` `object` — необязательный. Повторяемость события в виде объекта в терминах стандарта iCalendar. Структура описана [ниже](#rrule)
- `is_meeting` `string` — необязательный. Признак встречи с участниками события. Возможные значения:
  - `Y` — встреча с участниками
  - `N` — встреча без участников
  Для встречи с участниками передайте список участников `attendees`
- `location` `string` — необязательный. Место проведения
- `remind` `array` — необязательный. Массив объектов с описанием напоминаний о событии. Структура описана [ниже](#remind)
- `attendees` `array` — необязательный. Список идентификаторов участников события.
  Если передать `is_meeting = Y` и не передать `attendees`, список участников будет очищен. Если не передавать `is_meeting`, текущий список участников сохранится
- `host` `integer` — необязательный. Идентификатор организатора события.
  Передавайте параметр только если встречу обновляет не организатор. В этом случае укажите идентификатор текущего организатора. Если не передать параметр или передать идентификатор другого пользователя, метод вернет ошибку `Доступ запрещен`.
  Идентификатор текущего организатора можно узнать в ответе методов [calendar.event.getbyid](https://chugunov.pro/api-bitrix24/calendar/calendar-event/calendar-event-get-by-id/) и [calendar.event.get](https://chugunov.pro/api-bitrix24/calendar/calendar-event/calendar-event-get/) в поле `MEETING_HOST`.
  Параметр нельзя использовать для смены организатора существующего события. Чтобы сменить организатора, удалите событие методом [calendar.event.delete](https://chugunov.pro/api-bitrix24/calendar/calendar-event/calendar-event-delete/) и создайте новое методом [calendar.event.add](https://chugunov.pro/api-bitrix24/calendar/calendar-event/calendar-event-add/) от имени нужного организатора
- `meeting` `object` — необязательный. Объект с параметрами встречи. Структура описана [ниже](#meeting)
- `crm_fields` `array` — необязательный. Массив идентификаторов объектов CRM для привязки к событию. Чтобы привязать объекты, перечислите их идентификаторы с [префиксами](https://apidocs.bitrix24.ru/api-reference/crm/data-types.html#object_type):
   - `CO_` — компания
   - `C_` — контакт 
   - `L_` — лид
   - `D_` — сделка

### Параметр rrule

- `FREQ` `string` — необязательный. Частота повторения
  - `DAILY` — ежедневно
  - `WEEKLY` — еженедельно
  - `MONTHLY` — ежемесячно
  - `YEARLY` — ежегодно
- `COUNT` `integer` — необязательный. Количество повторений
- `INTERVAL` `integer` — необязательный. Интервал между повторениями
- `BYDAY` `array` — необязательный. Дни недели
  - `SU` — воскресенье
  - `MO` — понедельник
  - `TU` — вторник
  - `WE` — среда
  - `TH` — четверг
  - `FR` — пятница
  - `SA` — суббота
- `UNTIL` `date` — необязательный. Дата окончания повторений

### Параметр remind

- `type` `string` — необязательный. Временной тип напоминания
  - `min` — минуты
  - `hour` – часы
  - `day` — дни
- `count` `integer` — необязательный. Числовое значение временного промежутка

### Параметр meeting

- `notify` `boolean` — необязательный. Флаг оповещения о подтверждении или отказе участников
- `reinvite` `boolean` — необязательный. Флаг запроса повторного подтверждения участия при редактировании события
- `allow_invite` `boolean` — необязательный. Флаг разрешения участникам приглашать других в событие
- `hide_guests` `boolean` — необязательный. Флаг скрытия списка участников

## Ответ

HTTP-статус: 200

```json
{
    "result": 1246,
    "time": {
        "start": 1733318565.183275,
        "finish": 1733318565.695058,
        "duration": 0.5117831230163574,
        "processing": 0.29406094551086426,
        "date_start": "2024-12-04T13:22:45+00:00",
        "date_finish": "2024-12-04T13:22:45+00:00"
    }
}
```


## Ошибки

HTTP-статус: 400

```json
{
    "error": "",
    "error_description": "Не задан обязательный параметр \"ownerId\" для метода \"calendar.event.update\""
}
```

- — — Не задан обязательный параметр "id" для метода "calendar.event.update". Не передан обязательный параметр `id`
- — — Не задан обязательный параметр "ownerId" для метода "calendar.event.update". Не передан обязательный параметр `ownerId`
- — — Не задан обязательный параметр "type" для метода "calendar.event.update". Не передан обязательный параметр `type`
- — — Недопустимое значение параметра "name". Передан неверный формат данных в поле `name`
- — — Недопустимое значение параметра "description". Передан неверный формат данных в поле `description`
- — — Доступ запрещен. Запрещено изменение событий в указанном календаре
- — — Вы задали неверный ID секции календаря или у данного пользователя нет к ней доступа. Передан идентификатор недоступного или несуществующего календаря
- — — Указан несуществующий тип редактирования повторяемого события. Передано неверное значение поля `recurrence_mode`
- — — Список связей события с CRM должен быть массивом. Передан неверный формат данных в поле `crm_fields`
- — — При изменении события произошла ошибка. Другая ошибка

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

### cURL (Webhook)

```bash
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"id":699,"type":"user","ownerId":2,"name":"Changed Event Name","description":"New description for event","from":"2024-06-17","to":"2024-06-17","skip_time":"Y","section":5,"color":"#9cbe1c","text_color":"#283033","accessibility":"free","importance":"normal","is_meeting":"Y","private_event":"Y","recurrence_mode":"next","current_date_from":"2024-12-04","remind":[{"type":"min","count":10}],"location":"London","attendees":[1,2,3],"meeting":{"notify":true,"reinvite":false,"allow_invite":false,"hide_guests":false},"rrule":{"FREQ":"WEEKLY","BYDAY":["MO","WE"],"COUNT":10,"INTERVAL":1},"crm_fields":["C_5","L_11"]}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/calendar.event.update
```

### cURL (OAuth)

```bash
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"id":699,"type":"user","ownerId":2,"name":"Changed Event Name","description":"New description for event","from":"2024-06-17","to":"2024-06-17","skip_time":"Y","section":5,"color":"#9cbe1c","text_color":"#283033","accessibility":"free","importance":"normal","is_meeting":"Y","private_event":"Y","recurrence_mode":"next","current_date_from":"2024-12-04","remind":[{"type":"min","count":10}],"location":"London","attendees":[1,2,3],"meeting":{"notify":true,"reinvite":false,"allow_invite":false,"hide_guests":false},"rrule":{"FREQ":"WEEKLY","BYDAY":["MO","WE"],"COUNT":10,"INTERVAL":1},"crm_fields":["C_5","L_11"],"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/calendar.event.update
```

### JS (TS)

```ts
// 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

// Shape of the payload returned in result (match the "response handling" section of the page)
type CalendarEventUpdateResult =
  | number
  | {
      originalDate: string
      originalDavXmlId: string
      instanceTz: string
      recEventId: number
      id: number
    }

try {
  const response = await $b24.actions.v2.call.make<CalendarEventUpdateResult>({
    method: 'calendar.event.update',
    params: {
      id: 699,
      type: 'user',
      ownerId: 2,
      name: 'Changed Event Name',
      description: 'New description for event',
      from: '2024-06-17',
      to: '2024-06-17',
      skip_time: 'Y',
      section: 5,
      color: '#9cbe1c',
      text_color: '#283033',
      accessibility: 'free',
      importance: 'normal',
      is_meeting: 'Y',
      private_event: 'Y',
      recurrence_mode: 'next',
      current_date_from: '2024-12-04',
      remind: [
        {
          type: 'min',
          count: 10,
        },
      ],
      location: 'London',
      attendees: [1, 2, 3],
      meeting: {
        notify: true,
        reinvite: false,
        allow_invite: false,
        hide_guests: false,
      },
      rrule: {
        FREQ: 'WEEKLY',
        BYDAY: ['MO', 'WE'],
        COUNT: 10,
        INTERVAL: 1,
      },
      crm_fields: ['C_5', 'L_11'],
    },
    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('Updated calendar event:', result)
  }
} catch (error) {
  // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
  console.error(error)
}
```

### JS (UMD)

```html
<!-- 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 updateCalendarEvent() {
    try {
      // Initialize the SDK inside a Bitrix24 frame
      const $b24 = await B24Js.initializeB24Frame()

      const response = await $b24.actions.v2.call.make({
        method: 'calendar.event.update',
        params: {
          id: 699,
          type: 'user',
          ownerId: 2,
          name: 'Changed Event Name',
          description: 'New description for event',
          from: '2024-06-17',
          to: '2024-06-17',
          skip_time: 'Y',
          section: 5,
          color: '#9cbe1c',
          text_color: '#283033',
          accessibility: 'free',
          importance: 'normal',
          is_meeting: 'Y',
          private_event: 'Y',
          recurrence_mode: 'next',
          current_date_from: '2024-12-04',
          remind: [
            {
              type: 'min',
              count: 10,
            },
          ],
          location: 'London',
          attendees: [1, 2, 3],
          meeting: {
            notify: true,
            reinvite: false,
            allow_invite: false,
            hide_guests: false,
          },
          rrule: {
            FREQ: 'WEEKLY',
            BYDAY: ['MO', 'WE'],
            COUNT: 10,
            INTERVAL: 1,
          },
          crm_fields: ['C_5', 'L_11'],
        },
        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('Updated calendar event:', result)
    } catch (error) {
      // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
      console.error(error)
    }
  }

  document.addEventListener('DOMContentLoaded', updateCalendarEvent)
</script>
```

### Python

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

try:
    bitrix_response = client.calendar.event.update(
        bitrix_id=699,
        type="user",
        owner_id=2,
        name="Changed Event Name",
        description="New description for event",
        from_date="2024-06-17",
        to="2024-06-17",
        skip_time="Y",
        section=5,
        color="#9cbe1c",
        text_color="#283033",
        accessibility="free",
        importance="normal",
        is_meeting="Y",
        private_event="Y",
        recurrence_mode="next",
        current_date_from="2024-12-04",
        remind=[
            {
                "type": "min",
                "count": 10,
            },
        ],
        location="London",
        attendees=[
            1,
            2,
            3,
        ],
        host=2,
        meeting={
            "notify": True,
            "reinvite": False,
            "allow_invite": False,
            "hide_guests": False,
        },
        rrule={
            "FREQ": "WEEKLY",
            "BYDAY": [
                "MO",
                "WE",
            ],
            "COUNT": 10,
            "INTERVAL": 1,
        },
        crm_fields=[
            "C_5",
            "L_11",
        ],
    ).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}")
```

### PHP

```php
try {
    $response = $b24Service
        ->core
        ->call(
            'calendar.event.update',
            [
                'id'              => 699,
                'type'            => 'user',
                'ownerId'         => 2,
                'name'            => 'Changed Event Name',
                'description'     => 'New description for event',
                'from'            => '2024-06-17',
                'to'              => '2024-06-17',
                'skip_time'       => 'Y',
                'section'         => 5,
                'color'           => '#9cbe1c',
                'text_color'      => '#283033',
                'accessibility'   => 'free',
                'importance'      => 'normal',
                'is_meeting'      => 'Y',
                'private_event'   => 'Y',
                'recurrence_mode' => 'next',
                'current_date_from' => '2024-12-04',
                'remind'          => [
                    [
                        'type'  => 'min',
                        'count' => 10
                    ]
                ],
                'location'        => 'London',
                'attendees'       => [1, 2, 3],
                'meeting'         => [
                    'notify'      => true,
                    'reinvite'    => false,
                    'allow_invite' => false,
                    'hide_guests' => false,
                ],
                'rrule'           => [
                    'FREQ'     => 'WEEKLY',
                    'BYDAY'    => ['MO', 'WE'],
                    'COUNT'    => 10,
                    'INTERVAL' => 1,
                ],
                'crm_fields'      => ['C_5', 'L_11']
            ]
        );

    $result = $response
        ->getResponseData()
        ->getResult();

    echo 'Success: ' . print_r($result, true);
    // Нужная вам логика обработки данных
    processData($result);

} catch (Throwable $e) {
    error_log($e->getMessage());
    echo 'Error updating calendar event: ' . $e->getMessage();
}
```

### BX24.js

```js
BX24.callMethod(
    'calendar.event.update',
    {
        id: 699,
        type: 'user',
        ownerId: 2,
        name: 'Changed Event Name',
        description: 'New description for event',
        from: '2024-06-17',
        to: '2024-06-17',
        skip_time: 'Y',
        section: 5,
        color: '#9cbe1c',
        text_color: '#283033',
        accessibility: 'free',
        importance: 'normal',
        is_meeting: 'Y',
        private_event: 'Y',
        recurrence_mode: 'next',
        current_date_from: '2024-12-04',
        remind: [
            {
                type: 'min',
                count: 10
            }
        ],
        location: 'London',
        attendees: [1, 2, 3],
        meeting: {
            notify: true,
            reinvite: false,
            allow_invite: false,
            hide_guests: false,
        },
        rrule: {
            FREQ: 'WEEKLY',
            BYDAY: ['MO', 'WE'],
            COUNT: 10,
            INTERVAL: 1,
        },
        crm_fields: ['C_5', 'L_11']
    }
);
```

### PHP CRest

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

$result = CRest::call(
    'calendar.event.update',
    [
        'id' => 699,
        'type' => 'user',
        'ownerId' => 2,
        'name' => 'Changed Event Name',
        'description' => 'New description for event',
        'from' => '2024-06-17',
        'to' => '2024-06-17',
        'skip_time' => 'Y',
        'section' => 5,
        'color' => '#9cbe1c',
        'text_color' => '#283033',
        'accessibility' => 'free',
        'importance' => 'normal',
        'is_meeting' => 'Y',
        'private_event' => 'Y',
        'recurrence_mode' => 'next',
        'current_date_from' => '2024-12-04',
        'remind' => [
            [
                'type' => 'min',
                'count' => 10
            ]
        ],
        'location' => 'London',
        'attendees' => [1, 2, 3],
        'meeting' => [
            'notify' => true,
            'reinvite' => false,
            'allow_invite' => false,
            'hide_guests' => false,
        ],
        'rrule' => [
            'FREQ' => 'WEEKLY',
            'BYDAY' => ['MO', 'WE'],
            'COUNT' => 10,
            'INTERVAL' => 1,
        ],
        'crm_fields' => ['C_5', 'L_11']
    ]
);

echo '<PRE>';
print_r($result);
echo '</PRE>';
```

### Go

```go
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "calendar.event.update", b24.Params{
	"id":                699,
	"type":              "user",
	"ownerId":           2,
	"name":              "Changed Event Name",
	"description":       "New description for event",
	"from":              "2024-06-17",
	"to":                "2024-06-17",
	"skip_time":         "Y",
	"section":           5,
	"color":             "#9cbe1c",
	"text_color":        "#283033",
	"accessibility":     "free",
	"importance":        "normal",
	"is_meeting":        "Y",
	"private_event":     "Y",
	"recurrence_mode":   "next",
	"current_date_from": "2024-12-04",
	"remind": []b24.Params{
		{
			"type":  "min",
			"count": 10,
		},
	},
	"location":  "London",
	"attendees": []int{1, 2, 3},
	"meeting": b24.Params{
		"notify":       true,
		"reinvite":     false,
		"allow_invite": false,
		"hide_guests":  false,
	},
	"rrule": b24.Params{
		"FREQ":     "WEEKLY",
		"BYDAY":    []string{"MO", "WE"},
		"COUNT":    10,
		"INTERVAL": 1,
	},
	"crm_fields": []string{"C_5", "L_11"},
})
if err != nil {
	return fmt.Errorf("calendar.event.update: %w", err)
}

var value b24.ID
if err := json.Unmarshal(res.Result, &value); err != nil {
	return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println("результат:", value)
```

Оригинал в официальной документации: https://apidocs.bitrix24.ru/api-reference/calendar/calendar-event/calendar-event-update.html
