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.
| Field | Type | Required | Description |
|---|---|---|---|
product_code | string | yes | Experience product code |
option_code | string | yes | Option code from the product details |
date | string | yes | YYYY-MM-DD |
travelers | object | yes | Traveler counts — { adults, children?, youth?, infants? } |
traveler_details | array | yes* | Per-traveler manifest (see below) |
start_time | string | no | HH:MM — required only for fixed-time products |
currency | string | no | ISO-4217 currency code |
language | string | no | Language code |
perk_payment | object | no | Perk-count items to redeem against this booking |
is_demo | boolean | no | Demo/test booking — no notifications, auto-confirmed |
Each traveler_details entry:
| Field | Type | Required | Description |
|---|---|---|---|
first_name | string | yes | Traveler first name |
last_name | string | yes | Traveler last name |
traveler_type | string | yes | Age band, e.g. ADULT, CHILD |
is_lead | boolean | no | Marks the lead/primary traveler |
email | string | no | Required on the lead traveler |
phone | string | no | Contact phone |
phone_country_code | string | no | Dialing code for phone |
question_answers | array | no | Answers to booking questions ({ question_id, answer }) |
https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us./v1/travel/experiences/bookings/holdSandbox 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).
https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us./v1/travel/experiences/bookings/{booking_id}/holdSandbox 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.
https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us./v1/travel/experiences/bookingsSandbox 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.
https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us./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' \