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

# Booking Creation Flow

> How to submit a booking after availability checks and handle all possible outcomes.

This flow picks up where the [Availability Flow](/booking-channel-api/availability-flow) ends — once [Get Booking Availability](/booking-channel-api/methods/availability/booking) has confirmed the slot is available and returned the applicable booking conditions.

***

## Booking conditions

The [Get Booking Availability](/booking-channel-api/methods/availability/booking) response returns the applicable conditions for the booking. You must present them to the customer and obtain their explicit acceptance before submitting the booking.

* **Duration or end-time notice** — The reservation has a defined end time, set in the [Time Slot](/getting-started/key-concepts#time-slot). This may vary by work day, shift, or number of guests.
* **Cancellation policy terms** — The customer must accept the cancellation policy terms and provide a credit card to confirm the reservation.

***

## Overview

```mermaid theme={null}
flowchart TD
    A(["From: Availability Flow"]) --> B

    B["Create Booking"]
    B --> C{"response.status?"}

    C -- CONFIRMED --> D["Redirect customer to redirectUrl"]

    C -- REQUESTED --> E["Show 'pending confirmation' state Booking awaits venue review"]

    C -- PENDING_WAIT_LIST_BOOKING --> G["Show 'on wait list' state Booking is not yet confirmed"]

    D --> Z(["End"])
    E --> Z
    G --> Z

    style A fill:#28a745,stroke:#1e7e34,color:#ffffff
    style Z fill:#28a745,stroke:#1e7e34,color:#ffffff
```

***

## Step 1 — Create the booking

**Endpoint:** [`POST /bookings`](/booking-channel-api/methods/bookings/create)

Carry forward the values collected during the availability flow and include the customer data. See the endpoint reference for the full list of fields.

### Customer consent

The customer object carries two separate consents, and only one of them is
optional for the customer.

* **`hasGdprConsent`** — consent to process their personal data so the venue can
  manage the booking. `false` is not accepted and fails with
  `CUSTOMER_GDPR_CONSENT_REQUIRED`: without it there is no customer, and so no
  booking. Send `true` only for a customer who has actually given it.
* **`acceptsMarketing`** — consent to receive marketing communications. Entirely
  the customer's choice, and `false` is a normal value.

### Notice periods

Restoo allows venues to configure a minimum and maximum advance notice before a [Shift](/getting-started/key-concepts#shift) or [Time Slot](/getting-started/key-concepts#time-slot). Submitting a booking outside these windows may result in the request being rejected or in the booking requiring manual confirmation by the venue.

### Group reservations

When the number of guests exceeds a threshold configured per [Work Day](/getting-started/key-concepts#work-day) and/or [Shift](/getting-started/key-concepts#shift), the booking is treated as a group reservation. Group reservations are always created with `REQUESTED` status and must be manually confirmed by venue staff.

***

## Step 2 — Handle the response

The response includes the full booking object and a `redirectUrl`.

### Redirect the customer

Every create booking response includes a `redirectUrl` with the page to present to the customer after the booking is created.

* **If the booking has a cancellation policy requiring signature**: redirecting to `redirectUrl` is **mandatory**. The customer must complete the signature on Restoo's hosted page before the booking is fully active.
* **Otherwise**: redirecting to `redirectUrl` is **recommended**. If you choose not to, inform the customer of the booking outcome based on `status` and any applicable [booking conditions](#booking-conditions) — such as a maximum duration or end time.

<Warning>
  If the customer does not complete the signature within the allowed timeframe,
  the booking is **automatically cancelled**. Make sure the customer completes
  the signature before it expires.
</Warning>

### Booking confirmed

The response `status` is `CONFIRMED`: the booking is accepted and confirmed by the venue.

### Pending venue confirmation

The response `status` is `REQUESTED`: the venue does not auto-confirm bookings. Show the customer a "pending confirmation" state — the booking is awaiting manual review by venue staff.

### Added to the wait list

The response `status` is `PENDING_WAIT_LIST_BOOKING`: the requested shift has no available slots. Show the customer a "you're on the wait list" state — the booking is not yet confirmed.
