> ## Documentation Index
> Fetch the complete documentation index at: https://cal.id/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Reschedule and cancel bookings

> Move a booking to a new time or cancel it using the Cal ID booking API.

Every booking has a unique `id` that you use to reschedule or cancel it. You can get this `id` from the response of [Create a booking](/docs/api-reference/booking/create-a-booking) or by calling [List bookings](/docs/api-reference/booking/list-bookings). Both endpoints require an API key sent as `Authorization: Bearer calid_xxxxx`.

## Reschedule a booking

Send a `PATCH` request to `/booking/\{id\}/reschedule` with the new `start` time in ISO 8601 format. You can optionally include a `reschedulingReason` and the email of who rescheduled it (`rescheduledBy`).

```bash theme={null}
curl -X PATCH https://api.cal.id/booking/{id}/reschedule \
  -H "Authorization: Bearer calid_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "start": "2026-05-03T11:00:00.000Z",
    "reschedulingReason": "Client requested a later slot"
  }'
```

```json theme={null}
{
  "success": true,
  "data": {
    "id": 123,
    "start": "2026-05-03T11:00:00.000Z"
  },
  "message": "Booking rescheduled successfully",
  "meta": {}
}
```

## Cancel a booking

Send a `POST` request to `/booking/\{id\}/cancel`. Every field is optional. Include a `cancellationReason`, the email of who cancelled it (`cancelledBy`), and flags for recurring or paid bookings as needed.

```bash theme={null}
curl -X POST https://api.cal.id/booking/{id}/cancel \
  -H "Authorization: Bearer calid_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "cancellationReason": "No longer needed"
  }'
```

```json theme={null}
{
  "success": true,
  "data": {
    "id": 123,
    "status": "cancelled"
  },
  "message": "Booking cancelled successfully",
  "meta": {}
}
```

<Note>
  Set `autoRefund` to `true` to refund paid bookings on cancellation. For a recurring series, set `allRemainingBookings` to `true` to cancel the rest of the series instead of just a single occurrence.
</Note>

## Related

* [Reschedule a booking](/docs/api-reference/booking/reschedule-a-booking)
* [Cancel a booking](/docs/api-reference/booking/cancel-a-booking)
* [List bookings](/docs/api-reference/booking/list-bookings) to find the `id`


## Related topics

- [Cancel a booking](/docs/api-reference/booking/cancel-a-booking.md)
- [Allow Booking through Rescheduled Link](/docs/event-types/advanced/book-via-reschedule-link.md)
- [Reschedule a booking](/docs/api-reference/booking/reschedule-a-booking.md)
- [Disable Rescheduling and Cancelling](/docs/event-types/advanced/disable-reschedule-cancel.md)
- [Allow Rescheduling Past Events](/docs/event-types/advanced/reschedule-past.md)
