For AI agents: markdown of this page — /docs-content-en/entities/calendar-events/update.md documentation index — /llms.txt
Update event
PATCH /v1/calendar-events/:id
Updates fields of an existing event. Pass only the fields being changed — Vibecode automatically reads the current event and supplies type, ownerId, name, which Bitrix24 requires on every update.
Frequently updated fields
| Field | Type | Description |
|---|---|---|
name |
string | Event title |
to |
datetime | New end time (ISO 8601). Pass together with timezoneTo |
timezoneTo |
string | End timezone (IANA name, UTC) |
location |
string | Venue |
description |
string | Description |
accessibility |
string | Availability: busy, quest, free, absent |
importance |
string | Importance: high, normal, low |
attendees |
number[] | Array of invited employee IDs |
crmFields |
string[] | CRM elements the event is linked to: D_<id> deal, C_<id> contact, L_<id> lead, CO_<id> company. The array you send replaces the previous links entirely, [] clears them all — on this endpoint and on POST only: in a batch request an empty array is refused (INVALID_PARAMS in data.errors on POST /v1/batch, 400 BATCH_ITEM_VALIDATION for the whole batch on POST /v1/calendar-events/batch). A field left out of the body keeps the links already stored. Full description — Event fields |
Full list of editable fields: GET /v1/calendar-events/fields.
Examples
curl — personal key
curl -X PATCH "https://vibecode.bitrix24.com/v1/calendar-events/7773" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Team call — extended meeting",
"to": "2026-06-10T12:00:00",
"timezoneTo": "UTC",
"location": "Meeting room #3"
}'
curl — OAuth application
curl -X PATCH "https://vibecode.bitrix24.com/v1/calendar-events/7773" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Team call — extended meeting",
"to": "2026-06-10T12:00:00",
"timezoneTo": "UTC",
"location": "Meeting room #3"
}'
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/calendar-events/7773', {
method: 'PATCH',
headers: {
'X-Api-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Team call — extended meeting',
to: '2026-06-10T12:00:00',
timezoneTo: 'UTC',
location: 'Meeting room #3',
}),
})
const { success, data } = await res.json()
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/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: 'Team call — extended meeting',
to: '2026-06-10T12:00:00',
timezoneTo: 'UTC',
location: 'Meeting room #3',
}),
})
const { success, data } = await res.json()
Response fields
The updated event object with all fields — see Event fields.
Response example
{
"success": true,
"data": {
"id": 7773,
"parentId": 7773,
"type": "user",
"ownerId": 1,
"name": "Team call — extended meeting",
"from": "2026-06-10T10:00:00+00:00",
"to": "2026-06-10T12:00:00+00:00",
"skipTime": false,
"durationSeconds": 7200,
"updatedAt": "06/05/2026 11:30:00 am",
"accessibility": "busy",
"importance": "normal",
"sectionId": 3,
"location": "Meeting room #3"
}
}
Error response example
404 — event not found:
{
"success": false,
"error": {
"code": "ENTITY_NOT_FOUND",
"message": "calendarEvent 99999999 not found"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 404 | ENTITY_NOT_FOUND |
The event with the specified id does not exist |
| 400 | READONLY_FIELD |
A read-only field was passed in the request body — the full list is in Event fields, where such fields are marked "yes" in the RO column |
| 403 | SCOPE_DENIED |
The API key does not have the calendar scope |
| 401 | TOKEN_MISSING |
The API key has no configured tokens |
Full list of common API errors — Errors.
Known specifics
Rescheduling the event start via PATCH currently does not work. The from field is accepted, but the new value is not written to Bitrix24. The to field updates correctly. To reschedule the event start — delete the old one and create a new one via POST /v1/calendar-events.