1.2 Attach or detach services on prebook (Optional)

Overview

Set the ancillary selection (seats / bags) on an existing prebook before confirming the final booking. Each call replaces the prebook's current selection — it is not additive.

When to Use

  • Seat selection - Allow users to choose specific seats after prebook
  • Extra baggage - Let users add additional luggage allowance
  • Detach / clear services - Remove previously attached seats or bags before book
  • Price update - Required when services change the total booking cost
  • Voucher discount - Optional voucherCode when attaching services changes the total and you need the discount reflected on the new payment intent

What You Get

  • Updated prebook with the selected services attached (or cleared)
  • New payment intent (transactionId, secretKey) reflecting the updated total price (after any voucher discount)
  • Same response format as POST /flights/prebooks for easy integration

Key Features

  • Seat selection: Assign specific seats to each passenger and segment
  • Extra baggage: Add checked baggage or overweight allowances
  • Full replacement: Send the complete desired selectedServices list every time
  • Detach: Omit a service from selectedServices to remove it; send selectedServices: [] to clear all seats/bags and refresh the payment intent to the journey-only total
  • Updated payment: Creates a new Stripe payment intent when the prebook used Stripe (usePaymentSdk: true). For whitelabel/CMI prebooks (used_custom_payment_keys), no new intent is returned — re-charge via WL and submit a fresh JWT at POST /flights/bookings
  • Voucher recalculation: When a voucher applies, the discount is recomputed against the updated total (journey + ancillaries); invalid or expired vouchers return 400 (same as prebook)
  • Modifies in place: Updates the existing prebook record in the database

Changing / removing services

This endpoint replaces the prebook's ancillary selection. To detach one seat or bag, re-POST without that item. To detach all services:

{ "selectedServices": [] }

The field must be present (selectedServices is required); an empty array clears the selection. Omitting the field entirely is a validation error.

Quick Start

Provide the prebookId in the URL path and selectedServices in the request body. Optionally pass voucherCode to apply a discount. Use the new transactionId from this response (not the original prebook transactionId) when confirming payment with Stripe and when calling POST /flights/bookings.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
string
required

The prebook ID (must have provider_booking_id from initial prebook)

Body Params

Full replacement set of ancillary services for the prebook. Send selectedServices: [] to detach all.

selectedServices
array of objects
required

Full replacement set of ancillaries (from servicesAttachable.groups in the prebook response). An empty array clears all attached seats/bags and updates pricing / payment intent to the journey-only total.

selectedServices*
string

An optional voucher code to apply discounts to the booking. The vouchers API allows creation of these discounts

Responses

Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json