# Create a booking Creates a new booking. > Before creating a booking, you should always check the availability and price using the endpoint. The request body must contain all the necessary information for the booking, including customer details and product options. Endpoint: POST /v2/bookings Version: 2.1 Security: Authorization ## Request fields (application/json): - `message` (string) message to host - `productTypeUuid` (string) UUID of product type - `customer` (object) Booking person contact data - `customer.email` (string, required) email - `customer.firstName` (string, required) First name - accepts alphabets, spaces, hyphen and apostrophe only - `customer.lastName` (string, required) Last name - accepts alphabets, spaces, hyphen and apostrophe only - `customer.phone` (string, required) Phone number - `customer.salutation` (string, required) Salutation - `adults` (integer) Number of adults, can be 0 when minPax = 0 - `children` (integer) Number of children - `seniors` (integer) Number of seniors - `timeSlotUuid` (string) UUID of timeslot. If timeslots provided. - `arrivalDate` (string) Date - `partnerReference` (string) Your own id of booking - `options` (object) Structure of a booking options object as used when creating a new booking - `options.perBooking` (array, required) Options per booking array - `options.perBooking.uuid` (string) - `options.perBooking.value` (string,number) - `options.perPax` (array, required) ## Response 201 fields (application/json): - `data` (object) This object is returned in the response whenever a booking is created, modified or viewed in the API - `data.adults` (integer) - `data.amountBreakdown` (array) - `data.amountBreakdown.name` (string, required) - `data.amountBreakdown.price` (string, required) - `data.amountBreakdown.quantity` (integer, required) - `data.arrivalDate` (string) - `data.cancellationRequestAt` (string,null) - `data.cancellationRequestStatus` (string) - `data.cancellationStatus` (string,null) - `data.children` (integer) - `data.code` (string) - `data.completedAt` (string,null) - `data.createdAt` (string) - `data.currencyCode` (string) - `data.currencyUuid` (string) - `data.email` (string) - `data.firstName` (string) - `data.lastName` (string) - `data.links` (array) - `data.links.method` (string, required) - `data.links.rel` (string, required) - `data.links.href` (string, required) - `data.options` (array) - `data.partnerReference` (string) - `data.phone` (string) - `data.productTypeTitle` (string) - `data.productTypeTitleTranslated` (string) - `data.productTypeUuid` (string) - `data.refundAmount` (number,null) - `data.refundDate` (string,null) - `data.refundTransaction` (string,null) - `data.salutation` (string) - `data.seniors` (integer) - `data.status` (string) - `data.ticketTypes` (array) - `data.ticketTypes.type` (string, required) - `data.timeSlot` (string) - `data.totalAmount` (number) - `data.updatedAt` (string) - `data.uuid` (string) - `timestamp` (string) ## Response 400 fields (application/json): - `message` (string) A human-readable error message. - `code` (string) An internal error code. - `http_code` (integer) Http Status Code ## Response 401 fields (application/json): - `message` (string) A human-readable error message. - `code` (string) An internal error code. - `http_code` (integer) Http Status Code ## Response 405 fields (application/json): - `message` (string) A human-readable error message. - `code` (string) An internal error code. - `http_code` (integer) Http Status Code ## Response 422 fields (application/json): - `message` (string) A human-readable error message. - `code` (string) An internal error code. - `http_code` (integer) Http Status Code