Cancel Appointment
Use the Cancel Appointment screen to cancel a scheduled visit or cancel a pending request. The app opens this screen when the patient selects Cancel request or when a pending request reaches the inactivity timeout and transitions to an expired state.
This screen includes
- Automatic expiry after inactivity.
- Cancellation reason selection with a required reason.
- Optional text box when the patient selects Other (please specify).
- Late-window notice when the cancellation window has passed.
- Confirmation state after successful cancellation.
- Read-only state after cancellation or expiry with actions disabled.
Workflow
Manual Cancellation
- Open Appointment details.
- Select Cancel request for a pending request or Cancel appointment for a scheduled visit.
- If the cancellation occurs inside the late cancellation window, the screen displays a charge notice before final confirmation.
Options: Keep visit or Cancel appointment. - Select a cancellation reason.
Default reasons:- I feel better.
- I found a closer location.
- I found an earlier appointment.
- It took too long for the doctor to answer.
- Other (please specify).
- If the patient selects Other (please specify), enter a short explanation.
- Select Cancel request to confirm.
The SDK applies the cancellation and returns an updated appointment state with actions disabled for the canceled item.
Automatic Expiry
- A pending request remains open until provider response or inactivity timeout.
- If the inactivity timeout is reached, the server transitions the request to an expired state.
- The app returns control to Appointment details with actions disabled for the expired item.
Validations
These scenarios define when the SDK blocks cancellation submission or returns validation state.
| Scenario | App behavior | SDK output |
|---|---|---|
| No cancellation reason selected. | The primary action remains disabled. | Validation state indicating missing cancellation reason. |
| Reason is Other (please specify) and text is empty. | The primary action remains disabled and the text box shows an inline error. | Validation error for missing free-text reason. |
| Reason is not Other (please specify). | The text box remains hidden. | Page model without free-text field. |
| Cancellation occurs inside the late cancellation window. | The screen displays a charge notice before final confirmation. | Page model with late-cancellation flag and charge notice content. |
| Appointment state does not allow cancellation. | Cancellation remains blocked and an error appears. | Error state indicating cancellation is not permitted. |
| Appointment already canceled or expired. | Actions remain disabled. | Appointment state canceled or expired with read-only actions. |
Actions
These scenarios define how the SDK applies cancellation or returns expiration state.
| Scenario | App behavior | SDK output |
|---|---|---|
| Open cancellation flow. | The cancellation UI renders with available reasons. | Page model for cancellation with reason options. |
| Select a cancellation reason. | The selection updates. | Update set with selected reason state. |
| Enter free-text reason. | The free-text value updates. | Update set with free-text reason value. |
| Confirm cancellation with valid input. | The appointment transitions to canceled and becomes read-only. | Update set with appointment state canceled and navigation back to details. |
| Pending request reaches inactivity timeout. | The item becomes read-only in appointment details. | Appointment state expired with actions disabled. |
| Cancellation request fails. | The screen remains open and an error appears. | Error state with no navigation instruction. |
Endpoint Resources
Cancel Appointment
PUT
v3/appointments/{appointment-id}/cancel
Cancels the appointment or pending request and returns the updated appointment state.
Looking for Alternative (Patient Only)
PUT
v3/appointments/{appointment-id}/cancel/looking-for-alternative
Shows info popup that we continue looking for alternative video visit.
Update Reason
PATCH
/appointments/{appointment-id}/cancel/change-reason
Updates the selected cancellation reason and refreshes the cancellation page mode
Cancel Appointment
POST
v3/appointments/{appointment-id}/cancel
Cancels the appointment with the provided reason, date, and comments.

