Skip to main content
POST

Overview

Updates an existing appointment. Access is owner-only: the appointment’s doctor_id must match the caller, otherwise a 403 Forbidden is returned. Ownership cannot be changed — any doctor_id sent in the body is ignored.
Most fields use a fallback assignment (value || existing), so sending an empty or falsy value does not overwrite the current value — for example notes cannot be cleared with "". Only room, error_reason and doctor_note can be explicitly cleared.

Authentication

string
required
Bearer token for authenticated access.

Path Parameters

string
required
Appointment ObjectId to update. Owner-only.

Body Parameters

string
New title. A falsy value is ignored.
string
New date. Blocked with 409 on externally-synced appointments.
string
New time. Blocked with 409 on externally-synced appointments.
number
Duration in minutes, 5480; otherwise 400. Blocked with 409 on externally-synced appointments.
string
Recording lifecycle status. Status transitions are timestamped internally.
string
Failure reason. Unlike most fields, this can be explicitly cleared to null or an empty string.
string
Recording id. A falsy value is ignored.
string
Recording URL. A falsy value is ignored.
string
Recording storage key. A falsy value is ignored.
string
Private clinical notes. A falsy value is ignored (cannot be cleared with "").
string
Language code. A falsy value is ignored.
string
Notes template key. A falsy value is ignored.
string
Appointment type. A falsy value is ignored.
string
Room / location label. An empty string clears it to null. Independent of the external-readonly guard.
string
Patient-facing note. Only applied when the appointment already has a booking.

Response

boolean
Whether the request succeeded.
object
The updated appointment object (same shape as Get Appointment).
Additional fields may appear on the appointment object. Treat any field not documented here as opaque.

Example Request

Example Response

Error Responses

EXTERNAL_APPOINTMENT_READONLY is returned when the appointment was synced from an external booking system and the request tries to change its date, time or duration_minutes. 403 Forbidden is returned when the appointment is owned by a different doctor. A missing or invalid Bearer token returns 401 with a message key.