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

# Manage Bookings

> Retrieve, filter, cancel, and reschedule bookings, and keep your systems in sync

Once bookings exist - created by your [integration](/guides/build-a-booking-integration), the brand's storefront, or the dashboard - this guide covers operating on them: finding the right ones, cancelling and refunding, rescheduling, and staying in sync.

## Retrieve and filter bookings

[Get bookings](/api-reference/bookings/get-bookings) returns purchaser details, participants, amounts, payment method, status, and the booked session. It supports precise filtering:

| To find bookings by... | Use                                                                                                                                                                      |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Cart                   | `?cartId=7cbcbac1-...` - all bookings purchased together in one checkout                                                                                                 |
| Confirmation code      | `?confirmationCode=bje5P8q5Y` (booking's code) or `?cartConfirmationCode=aKojdafy8` (the code returned by [book-bulk](/api-reference/carts-and-checkout/create-booking)) |
| Experience             | `?experienceId=f74183e6-...`                                                                                                                                             |
| Purchaser              | `?purchaserEmail=alice@example.com` or `?purchaserLastName=Rivera`                                                                                                       |
| Creation window        | `?createdFrom=2026-07-01&createdTo=2026-07-31`                                                                                                                           |
| Recent changes         | `?updatedFrom=...&updatedTo=...` - the workhorse for reconciliation                                                                                                      |
| Experience date        | `?filters[0][name]=experienceDateRange&filters[0][operator]=range&filters[0][value][from]=2026-08-15&filters[0][value][to]=2026-08-16`                                   |

A daily check-in list is one query - everyone booked for an experience on a given date:

```bash theme={null}
curl "$WAY_API/v1/bookings?experienceId=f74183e6-...&filters[0][name]=experienceDateRange&filters[0][operator]=range&filters[0][value][from]=2026-08-15&filters[0][value][to]=2026-08-15" \
  --header "Authorization: Bearer $WAY_API_KEY"
```

For per-guest detail at the door, [Get booking participants](/api-reference/bookings/get-booking-participants) returns the experience and each participant.

<Tip>
  Organization-level keys query bookings across all your brands in one call. See [Authentication](/authentication#brand-keys-and-organization-keys).
</Tip>

### Pagination and sorting

Responses carry `meta` (counts, pages - 15 items per page by default) and `links` (first/previous/next/last) objects; page with `?page=` and `?limit=`. Sort with `?sortBy=booking.createdAt&sortDir=DESC` - other keys include `booking.status`, `booking.purchaser`, `booking.amount`, `experience.title`, and `event.startDateTime`.

## Cancel and refund

[Cancel bookings](/api-reference/bookings/cancel-booking) takes a batch of operations:

```json theme={null}
{
  "bookings": [
    { "bookingId": "019f5ca1-4dc1-775d-a40d-833f44bfccf4", "cancel": true }
  ]
}
```

* **Full cancellation**: `"cancel": true` with no `participants` cancels the whole booking.
* **Partial cancellation**: pass `participants` (participant IDs from the booking) to cancel only some guests - the booking stays active for the rest, and each cancelled participant gets a `cancelledAt` timestamp.
* **Refunds**: add `refundAmount` to record a refund, together with or independent of cancelling.

The response returns the updated bookings (status `cancelled` when fully cancelled). Cancellations fire the [`booking.cancelled`](/webhooks/events/booking-cancelled) webhook; refunds fire [`booking.refunded`](/webhooks/events/booking-refunded).

## Reschedule

[Reschedule booking](/api-reference/bookings/reschedule-booking) moves a booking to another session:

```bash theme={null}
curl -X POST "$WAY_API/v1/bookings/019f5ca1-.../reschedule" \
  --header "Authorization: Bearer $WAY_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{ "sessionTime": "2026-08-17T10:00:00", "sessionDuration": 60 }'
```

Pick the target session from the [availability endpoints](/api-reference/listings/get-listing-sessions) first - rescheduling into a sold-out session fails. A successful reschedule returns `204` and fires [`booking.rescheduled`](/webhooks/events/booking-rescheduled) (plus [`booking.modified`](/webhooks/events/booking-modified) when the price changes).

## Guest-initiated flows

Two endpoints support building self-service cancel/reschedule UIs for guests: [guest cancellation](/api-reference/bookings/guest-cancel-booking) honors the experience's cancellation policy automatically, and [guest reschedule](/api-reference/bookings/get-guest-reschedule) lists a cart's reschedulable bookings (it requires the guest `token` from their confirmation email link, so it's only usable in flows that start from Way's guest communications).

## Keeping your systems in sync

Prefer push over poll: subscribe to the [`booking.*` webhooks](/webhooks/events/overview) and treat the API as the source of truth when handling them. For reconciliation (after downtime, or as a nightly job), poll [Get bookings](/api-reference/bookings/get-bookings) with `updatedFrom` set to your last sync point.
