Для AI-агентов: markdown этой страницы — /docs-content/entities/calendar-events/update.md индекс документации — /llms.txt
Обновить событие
PATCH /v1/calendar-events/:id
Обновляет поля существующего события. Передавайте только изменяемые поля — Вайбкод автоматически дочитывает текущее событие и подставляет type, ownerId, name, которые Битрикс24 требует при каждом обновлении.
Параметры
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
id (path) |
number | да | ID события. Список: GET /v1/calendar-events |
Поля запроса (body)
Все поля необязательны. Передавайте только те, что меняете, например name или location. У события на весь день можно изменить только from или только to: отсутствующая граница сохранится.
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
name |
string | нет | Название события. Без поля подставляется из текущего события |
type |
string | нет | Тип календаря: user, group, company_calendar. Без поля подставляется из текущего события |
ownerId |
number | нет | ID владельца календаря: сотрудник (GET /v1/users) или рабочая группа. Без поля подставляется из текущего события |
from |
datetime | нет | Новое начало события в ISO 8601. Передавайте вместе с timezoneFrom |
timezoneFrom |
string | нет | Часовой пояс начала (IANA-имя, Europe/Moscow) |
to |
datetime | нет | Новое окончание события в ISO 8601. Передавайте вместе с timezoneTo |
timezoneTo |
string | нет | Часовой пояс окончания (IANA-имя, Europe/Moscow) |
skipTime |
boolean | нет | Событие на весь день. При true длительность фиксируется в 24 часа. Если поле не передано, текущий признак сохраняется; false снимает его |
description |
string | нет | Описание |
location |
string | нет | Место проведения |
color |
string | нет | Цвет события в формате #RRGGBB |
importance |
string | нет | Важность: high, normal, low |
accessibility |
string | нет | Занятость: busy, quest, free, absent |
isPrivate |
boolean | нет | Приватное событие — детали скрыты от других пользователей |
sectionId |
number | нет | ID секции календаря, в которую переносится событие. Список секций: GET /v1/calendar-sections |
remind |
array | нет | Настройки напоминаний. Каждый элемент: {type: 'min' | 'hour' | 'day', count: <число>} |
rrule |
object | нет | Расписание повторения: FREQ, INTERVAL, BYDAY, UNTIL или COUNT. Структура — Создать событие |
attendees |
number[] | нет | Массив ID приглашённых сотрудников. Список: GET /v1/users. Передавайте вместе с isMeeting: true — без флага в теле массив игнорируется без ошибки и без предупреждения, даже если событие уже является встречей. Переданный массив заменяет прежний состав участников целиком. Существование ID не проверяется: любое число становится участником U<id>. Элементы CRM привязывает поле crmFields |
isMeeting |
boolean | нет | Событие-встреча с приглашениями. Обязателен в теле вместе с attendees, иначе состав участников не меняется |
crmFields |
string[] | нет | Элементы CRM, к которым привязано событие: D_<id> сделка, C_<id> контакт, L_<id> лид, CO_<id> компания. Переданный массив заменяет прежние привязки целиком, [] снимает все — но только на этом эндпоинте и на POST: в батч-запросе пустой массив отклоняется (INVALID_PARAMS в data.errors у POST /v1/batch, 400 BATCH_ITEM_VALIDATION на весь пакет у POST /v1/calendar-events/batch). Поле, не переданное в теле, сохраняет уже записанные привязки. Полное описание — Поля события |
Описание всех полей события — Поля события.
Примеры
curl — личный ключ
curl -X PATCH "https://vibecode.bitrix24.tech/v1/calendar-events/7773" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Созвон с командой — расширенная встреча",
"to": "2026-06-10T12:00:00",
"timezoneTo": "Europe/Moscow",
"location": "Переговорная №3"
}'
curl — OAuth-приложение
curl -X PATCH "https://vibecode.bitrix24.tech/v1/calendar-events/7773" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Созвон с командой — расширенная встреча",
"to": "2026-06-10T12:00:00",
"timezoneTo": "Europe/Moscow",
"location": "Переговорная №3"
}'
JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/calendar-events/7773', {
method: 'PATCH',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Созвон с командой — расширенная встреча',
to: '2026-06-10T12:00:00',
timezoneTo: 'Europe/Moscow',
location: 'Переговорная №3',
}),
})
const { success, data } = await res.json()
JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/calendar-events/7773', {
method: 'PATCH',
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Созвон с командой — расширенная встреча',
to: '2026-06-10T12:00:00',
timezoneTo: 'Europe/Moscow',
location: 'Переговорная №3',
}),
})
const { success, data } = await res.json()
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
success |
boolean | Всегда true при успехе |
data |
object | Обновлённое событие (все поля — см. Поля события) |
Пример ответа
{
"success": true,
"data": {
"id": 7773,
"parentId": 7773,
"type": "user",
"ownerId": 1,
"name": "Созвон с командой — расширенная встреча",
"from": "2026-06-10T10:00:00+03:00",
"to": "2026-06-10T12:00:00+03:00",
"skipTime": false,
"durationSeconds": 7200,
"updatedAt": "06/05/2026 11:30:00 am",
"accessibility": "busy",
"importance": "normal",
"sectionId": 3,
"location": "Переговорная №3"
}
}
Пример ответа при ошибке
404 — событие не найдено:
{
"success": false,
"error": {
"code": "ENTITY_NOT_FOUND",
"message": "calendarEvent 99999999 not found"
}
}
Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 404 | ENTITY_NOT_FOUND |
Событие с указанным id не существует |
| 400 | READONLY_FIELD |
В теле запроса передано read-only поле — полный список в Поля события с пометкой «да» в колонке RO |
| 400 | EMPTY_UPDATE_BODY |
Тело запроса пустое — передайте хотя бы одно поле |
| 422 | BITRIX_NO_EFFECT |
Портал не вернул признак события на весь день или дату, необходимую для безопасного обновления |
| 400 | NESTED_FIELDS_ENVELOPE |
Вместо корневых полей передан объект fields; событие не обновляется |
| 403 | SCOPE_DENIED |
API-ключ не имеет скоупа calendar |
| 401 | TOKEN_MISSING |
API-ключ не имеет настроенных токенов |
Полный список общих ошибок API — Ошибки.
Известные особенности
Объект fields не оборачивает поля события. Передавайте их в корне JSON: схема не объявляет fields, поэтому объект отклоняется с 400 NESTED_FIELDS_ENVELOPE до обновления.
Неизвестное скалярное поле в теле игнорируется без ошибки. Ответ 200 не подтверждает, что поле записано. Сверяйте имена с таблицей выше.