VANITYPASS
White-label APIExperiences

Experience Bookings

Hold, confirm, and manage a user's experience bookings.

Experience Bookings

Experiences use a hold-then-pay flow: reserve a slot, capture the traveler manifest, then complete payment before the hold expires. All requests use the end-user's JWT plus X-App-Id and X-Environment headers.

Hold Booking

POST /v1/travel/experiences/bookings/hold

Reserves a slot and returns booking_id, hold_id, expires_at, and expires_in_seconds. The full per-traveler manifest is required at hold time — one entry per traveler, with exactly one lead traveler carrying an email — because the booking is auto-confirmed from the payment webhook.

FieldTypeRequiredDescription
product_codestringyesExperience product code
option_codestringyesOption code from the product details
datestringyesYYYY-MM-DD
travelersobjectyesTraveler counts — { adults, children?, youth?, infants? }
traveler_detailsarrayyes*Per-traveler manifest (see below)
start_timestringnoHH:MM — required only for fixed-time products
currencystringnoISO-4217 currency code
languagestringnoLanguage code
perk_paymentobjectnoPerk-count items to redeem against this booking
is_demobooleannoDemo/test booking — no notifications, auto-confirmed

Each traveler_details entry:

FieldTypeRequiredDescription
first_namestringyesTraveler first name
last_namestringyesTraveler last name
traveler_typestringyesAge band, e.g. ADULT, CHILD
is_leadbooleannoMarks the lead/primary traveler
emailstringnoRequired on the lead traveler
phonestringnoContact phone
phone_country_codestringnoDialing code for phone
question_answersarraynoAnswers to booking questions ({ question_id, answer })
Sandbox-only. Try-it requests target https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us.
POST/v1/travel/experiences/bookings/hold

Sandbox credentials

Keys never leave your browser — they are sent only to cloud.vanitypass.com with X-Environment: Sandbox.

curl -X POST 'https://cloud.vanitypass.com/v1/travel/experiences/bookings/hold' \
  -H 'Content-Type: application/json' \
  -H 'X-Environment: Sandbox' \
  -d '{"product_code":"4026LOND","option_code":"TG1","date":"2026-07-03","start_time":"10:00","currency":"USD","travelers":{"adults":2},"traveler_details":[{"first_name":"Jane","last_name":"Doe","traveler_type":"ADULT","is_lead":true,"email":"jane@example.com","phone":"+447700900000"},{"first_name":"John","last_name":"Doe","traveler_type":"ADULT"}]}'

Get Hold Details

GET /v1/travel/experiences/bookings/{booking_id}/hold

Fetch the hold before payment — includes price breakdown, cancellation policy, any outstanding booking questions, and the time remaining (expires_at / expires_in_seconds).

Sandbox-only. Try-it requests target https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us.
GET/v1/travel/experiences/bookings/{booking_id}/hold

Sandbox credentials

Keys never leave your browser — they are sent only to cloud.vanitypass.com with X-Environment: Sandbox.

curl -X GET 'https://cloud.vanitypass.com/v1/travel/experiences/bookings/{booking_id}/hold' \
  -H 'Content-Type: application/json' \
  -H 'X-Environment: Sandbox' \

List Bookings

GET /v1/travel/experiences/bookings

Returns the authenticated user's experience booking history.

Sandbox-only. Try-it requests target https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us.
GET/v1/travel/experiences/bookings

Sandbox credentials

Keys never leave your browser — they are sent only to cloud.vanitypass.com with X-Environment: Sandbox.

curl -X GET 'https://cloud.vanitypass.com/v1/travel/experiences/bookings' \
  -H 'Content-Type: application/json' \
  -H 'X-Environment: Sandbox' \

Get Booking Details

GET /v1/travel/experiences/bookings/{booking_id}

Returns a single booking confirmation by its UUID.

Sandbox-only. Try-it requests target https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us.
GET/v1/travel/experiences/bookings/{booking_id}

Sandbox credentials

Keys never leave your browser — they are sent only to cloud.vanitypass.com with X-Environment: Sandbox.

curl -X GET 'https://cloud.vanitypass.com/v1/travel/experiences/bookings/{booking_id}' \
  -H 'Content-Type: application/json' \
  -H 'X-Environment: Sandbox' \