Update an appointment

update an appointment.

PATCH https://api.centerfy.ai/webhooks/inbound/appointments/:id

Headers

HeaderRequiredValueDescription
x-api-keyYesyour sub-account API key (cfy_…)Authenticates the request; or Authorization: Bearer <key>.
Content-TypeYesapplication/jsonJSON request body.

Path parameters

NameTypeRequiredDescription
idstring (uuid)YesThe appointment id (as returned from create).

Body parameters

NameTypeRequiredDefaultDescription
titlestringNo—New title; required to be non-empty, so it is only applied when a non-empty value is given (empty is ignored).
descriptionstringNo—Nullable text; presence of the key sets it (empty string clears it).
appointment_datestringNo—New start as ISO 8601; if provided it must parse (include UTC offset/Z or pass timezone), else 400. A present-but-empty value is ignored.
timezonestringNo—IANA timezone used to interpret a bare appointment_date.
duration_minutesintegerNo—Positive integer; non-integer or <= 0 → 400.
locationstringNo—Nullable text; presence of the key sets it (empty clears).
notesstringNo—Nullable text; presence of the key sets it (empty clears).
statusstringNo—One of: scheduled, confirmed, completed, cancelled, no_show (case-insensitive). Other values → 400.
calendar_idstringNo—Reassign to another calendar; must be a valid UUID and reference an existing calendar, else 400.
contact_idstringNo—Reassign to another contact; must be a valid UUID and reference an existing contact, else 400/404.

Request body

{
  "title": "Discovery Call (rescheduled)",
  "appointment_date": "2026-06-21T16:00:00Z",
  "duration_minutes": 45,
  "status": "confirmed",
  "notes": "Pushed back one day"
}

Example

curl -X PATCH "https://api.centerfy.ai/webhooks/inbound/appointments/{id}" \
  -H "x-api-key: $CENTERFY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "Discovery Call (rescheduled)",
  "appointment_date": "2026-06-21T16:00:00Z",
  "duration_minutes": 45,
  "status": "confirmed",
  "notes": "Pushed back one day"
}'
import { CenterfyClient } from "@centerfy/sdk";

const centerfy = new CenterfyClient({ apiKey: process.env.CENTERFY_API_KEY! });

const result = await centerfy.appointments.update("<appointmentId>", {
  "title": "Discovery Call (rescheduled)",
  "appointment_date": "2026-06-21T16:00:00Z",
  "duration_minutes": 45,
  "status": "confirmed",
  "notes": "Pushed back one day"
});
console.log(result);
centerfy appointments update <appointmentId> '{"title":"Discovery Call (rescheduled)","appointment_date":"2026-06-21T16:00:00Z","duration_minutes":45,"status":"confirmed","notes":"Pushed back one day"}'

MCP tool: centerfy_appointments_update (see MCP server)

Response

{
  "status": "success",
  "updated": true,
  "appointment_id": "c3d4e5f6-a7b8-4c9d-0e1f-2a3b4c5d6e7f"
}

Errors

  • 400 — for an invalid appointment id, a bad date, an invalid duration, status, or calendar_id.
  • 404 — if the appointment or a referenced contact does not exist.
  • 500 — on failure.

Notes

Only fields present in the body change; an empty effective update returns 400 ‘no updatable fields provided’.

© 2026 Centerfy AI. All rights reserved.