---
title: "Reschedule a booking"
description: "Moves a meeting that has not started to a new time the page offers, and tells the guest."
url: "https://openemail.uk/docs/api/bookings/reschedule"
area: "API"
category: "Mailbox"
---

# Reschedule a booking

Moves a meeting that has not started to a new time the page offers, and tells the guest.

`POST /bookings/{id}/reschedule`

## POST /bookings/{id}/reschedule

Moves a meeting that has not started to a new time the page offers, and tells the guest.

## Example

Needs `calendar:write` and `emails:send`. List the times it can move to first, with the id of the booking.

**curl**

```
curl "$OE/booking-pages/bkp_5c1e9a7b3d2f48e6a0b4c7d1/times?bookingId=bkg_2b8d4f6a1c3e5079b6d8f0a2" -H "$AUTH"
curl -X POST "$OE/bookings/bkg_2b8d4f6a1c3e5079b6d8f0a2/reschedule" -H "$AUTH" -H 'content-type: application/json' -d '{
  "start": "2026-11-04T13:00:00Z",
  "reason": "Something came up, so I moved us to the afternoon."
}'
```

**Response**

```
{
  "object": "booking",
  "id": "bkg_2b8d4f6a1c3e5079b6d8f0a2",
  "pageId": "bkp_5c1e9a7b3d2f48e6a0b4c7d1",
  "pageName": "Intro call",
  "status": "confirmed",
  "expired": false,
  "past": false,
  "start": "2026-11-04T13:00:00.000Z",
  "end": "2026-11-04T13:30:00.000Z",
  "durationMinutes": 30,
  "guest": { "name": "Ann Lee", "email": "ann@example.com", "timezone": "America/New_York" },
  "guests": [],
  "answers": [
    { "id": "notes", "label": "Anything we should know?", "kind": "long-text", "value": "I would like to talk about pricing." }
  ],
  "location": "https://meet.example.com/hana",
  "eventId": "evt_8a1c3e5f7b2d4960c8e0a2b4",
  "endedBy": null,
  "endReason": null,
  "rescheduleCount": 1,
  "guestMailFailed": false,
  "createdAt": "2026-10-28T14:12:40.115Z"
}
```

> The meeting keeps its length and its calendar event, which moves with it. The guest and everyone they added get the new time with an updated invitation, and `reason` goes into the email when you send one.

> You get a copy at the address of the page, unless `config.notifyHost` is false.

> The time has to be one the page offers for this booking. A paused page can still move its meetings, and the cut-off for guests does not apply to you.

> A booking that waits for approval is confirmed at the new time, because you chose it.

> A time that is not open answers 409 `booking_time_unavailable`, and a booking that ended or has started 409 `booking_ended`.

## Reference

- [`POST /bookings/{id}/reschedule`](https://openemail.uk/docs/api/reference/booking-pages#post-bookings-id-reschedule): full reference
