- Update an appointment
Updates the appointment matching id for the practice identified by X-Practice-Id. Only the fields provided in the request body will be modified; omitted fields remain unchanged. If no appointment exists for that practice and id, the API responds with 404. When reason_id is provided, it must refer to an active appointment reason; otherwise the API responds with 422. When start_time or duration_minutes is provided, the resulting appointment must fall within the practitioner's working hours and must not conflict with any blocked or unavailable periods; otherwise the API responds with 422.
The new start time of the appointment in ISO 8601 format. The time should be specified in UTC.
(Optional) The duration of the appointment in minutes. When provided, must be greater than or equal to the practice's minimum appointment duration and less than or equal to 120 minutes.
- Mock serverhttps://docs.api.dentally.com/_mock/docs/versions/2026-01-01/nexgen/appointments/{id}
- Production - UKhttps://api.dentally.co/appointments/{id}
- Production - APAChttps://api.apac.dentally.com/appointments/{id}
curl -i -X PATCH \
'https://docs.api.dentally.com/_mock/docs/versions/2026-01-01/nexgen/appointments/{id}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'X-Practice-Id: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \
-d '{
"start_time": "2019-08-24T14:15:22Z",
"duration_minutes": 120,
"reason_id": "e93b00b6-69c5-47ba-b0e6-cff780f2f878"
}'Wrapper returned by get, create, or update appointment.
{ "data": { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "patient": { … }, "start_time": "2025-06-01T08:00:00Z", "finish_time": "2025-06-01T09:00:00Z", "duration_minutes": 60, "reason": { … }, "notes": "Patient requested a morning appointment.", "practitioner": { … }, "site_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "state": "Pending", "cancelled_at": null, "payment_plan_id": null, "room_id": null, "created_at": "2025-06-01T08:00:00Z", "updated_at": "2026-01-18T12:00:00Z" } }