---
title: "Update a reviewed event using sourceRevision and confirm:true; verify by a fresh readback"
method: PATCH
path: "/v1/integrations/{id}/events/{eventId}"
---

# Update a reviewed event using sourceRevision and confirm:true; verify by a fresh readback

`PATCH /v1/integrations/{id}/events/{eventId}`

## Request

- Base URL: `https://volai.cz`
- URL: `https://volai.cz/v1/integrations/{id}/events/{eventId}`
- Auth: HTTP bearer

Change title, start or end. Use RFC3339 timestamps with offsets, or all-day YYYY-MM-DD dates with an exclusive end. Apple floating times may omit the offset only when preserving an existing floating event. Requires confirmation and a current revision; returns the verified event.

## Path parameters

- `id` string, required
- `eventId` string, required

## Request body

- object
  - `calendarId` string, required: Calendar id from list_calendars, for example primary.
  - `sourceRevision` string, required: Provider revision of the event exactly as returned by get_calendar_event. The update is rejected with calendar_stale_revision if it changed since.
  - `patch` object, required: The title, start and end fields to change, exactly as reviewed and approved by the user in propose_calendar_update.
    - `title` string: New event title, up to 500 characters. Include only the fields you are changing in this patch.
    - `start` string: New start time, RFC 3339 with an offset, for example 2026-09-08T09:00:00+02:00, or an all-day date as YYYY-MM-DD. Apple floating times may omit the offset.
    - `end` string: New end time in the same format as start. All-day end dates are exclusive, so use the day after the last day.
  - `confirm` true, required: Must be exactly true, confirming the user has explicitly approved this exact patch after reviewing it. Without it the update is rejected with calendar_confirmation_required.

## Response `200`

Updated, verified event

- object
  - `event` object, required
    - `calendarId` string, required
    - `externalId` string, required: Opaque event ID from the event list. Pass unchanged as eventId; Apple resource IDs are not iCalendar UIDs.
    - `title` string, required
    - `start` string, required
    - `end` string, required
    - `timezone` string
    - `recurring` boolean
    - `status` string, required
    - `sourceRevision` string, required
    - `provider` 'google-calendar' | 'apple-calendar', required
    - `sourceUrl` string, required
    - `fetchedAt` string, required
    - `etag` string

## Other responses

- `400`: Error codes: calendar_unsupported (request), validation (request), calendar_invalid_calendar (request), calendar_invalid_query (request), calendar_provider_mismatch (request), calendar_invalid_patch (request), calendar_confirmation_required (request).
- `401`: Error codes: unauthorized (request).
- `403`: Error codes: account_suspended (account).
- `404`: Error codes: calendar_not_found (account).
- `409`: Error codes: calendar_read_only (account), calendar_busy (busy), calendar_refresh_in_progress (busy), calendar_unauthorized (account), calendar_oauth_failed (account), calendar_credentials_unavailable (account), calendar_invalid_credentials (account), calendar_stale_revision (request).
- `429`: Error codes: rate_limited (busy).
- `500`: Error codes: internal_error (service).
- `502`: Error codes: calendar_provider_error (service), calendar_invalid_provider_response (service), calendar_verification_failed (service).
- `503`: Error codes: calendar_not_configured (service).

---

[API](https://skmtc.dev/volai/apis/volai-rest-api.md) · [All operations](https://skmtc.dev/volai/apis/volai-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/volai/apis/volai-rest-api/revisions/12029b05e2fa?raw)
