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

Terminal
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

Terminal
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

javascript
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

javascript
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

JSON
{
  "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:

JSON
{
  "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.

See also