---
title: "Update / reschedule / cancel"
method: PATCH
path: "/v1/appointments/{id}"
tags: ["Appointments"]
---

# Update / reschedule / cancel

`PATCH /v1/appointments/{id}`

To reschedule, send a new `start`. To cancel, send `status: cancelled` (+ optional `cancelled_reason`).

Requires the `appointments:write` scope.

## Path parameters

- `id` integer, required

## Request body

- object — Send only changed fields.
  - `start` string — New slot datetime — this is how you RESCHEDULE. date/time not accepted on update.
  - `provider` integer
  - `service` integer
  - `lead` object — Edit lead details (name, phone, email, ic, address, remarks).
  - `status` 'new' | 'pending' | 'request' | 'processed' | 'received' | 'reject' | 'absent' | 'cancelled' | 'deleted'
  - `remarks` string
  - `cancelled_reason` string — Persists only with status=cancelled
  - `ignore_rules` string[]

## Response `200`

Updated

## Other responses

- `401` — Missing or invalid API key
- `402` — Monthly quota exceeded
- `403` — Insufficient scope, inactive subscription, or the clinic hasn't authorized API access
- `429` — Rate limit exceeded — see Retry-After header
- `502` — Upstream unavailable

---

[API](https://skmtc.dev/yezza/apis/yezza-clinic-api-external-access.md) · [All operations](https://skmtc.dev/yezza/apis/yezza-clinic-api-external-access/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/yezza/yezza-clinic-api-external-access/revisions/fb0639413542/schema)
