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 | Reschedule the end (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 |
Full list of changeable 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, 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.