How to book tours and activities
This guide books an activity end to end: browse the catalogue, check availability, create the booking, and get the voucher.
Before you start
- A
SessionId. See authentication. - The activity permissions, including
activity_products_list,activity_price_lists,activity_create_booking, andactivity_get_vouchers. - Remember: send
SessionIdin the query string onGETand in the body onPOSTandPUT.
Step 1: Find a product and a variant
Browse the catalogue, open a product, then list its variants. Keep the productTypeUuid.
curl "https://api.hermeseus.com/api/Activity/v2/products?city=Singapore&sort=bestselling&SessionId=8f3c81d2-..." curl "https://api.hermeseus.com/api/Activity/v2/products/PRODUCT_UUID/product-types?SessionId=8f3c81d2-..."
Step 2: Check availability
Read the bookable dates for the variant. If it runs at set times, read the timeslots for the chosen date. Past dates and slots are already filtered out.
curl "https://api.hermeseus.com/api/Activity/v2/product-types/5f3ff236-40b1-4f0a-a780-1db8649d1f5b/price-lists?SessionId=8f3c81d2-..." curl "https://api.hermeseus.com/api/Activity/v2/product-types/5f3ff236-40b1-4f0a-a780-1db8649d1f5b?date=2026-10-15&SessionId=8f3c81d2-..."
Step 3: Create the booking
Reserve the variant for the date, pax mix, and lead customer. You get a booking uuid in reserved status. Keep it.
curl -X POST https://api.hermeseus.com/api/Activity/v2/bookings \
-H "Content-Type: application/json" \
-d '{
"SessionId": "8f3c81d2-...",
"productTypeUuid": "5f3ff236-40b1-4f0a-a780-1db8649d1f5b",
"arrivalDate": "2026-10-15",
"adults": 2,
"customer": { "firstName": "Jane", "lastName": "Doe", "email": "traveller@example.com", "phone": "+441234567890" }
}'Step 4: Confirm
Confirm to move the booking toward issuance. The platform issues it asynchronously.
curl -X PUT https://api.hermeseus.com/api/Activity/v2/bookings/BOOKING_UUID/confirm \
-H "Content-Type: application/json" \
-d '{ "SessionId": "8f3c81d2-..." }'Step 5: Get the voucher
Wait for the booking to be issued, then download the voucher. Watch the booking_status_updated event instead of polling in a loop.
curl "https://api.hermeseus.com/api/Activity/v2/bookings/BOOKING_UUID/vouchers?SessionId=8f3c81d2-..." curl -L -o voucher.pdf \ "https://api.hermeseus.com/api/Activity/v2/bookings/BOOKING_UUID/download-voucher/VOUCHER_UUID?SessionId=8f3c81d2-..."
Full field lists are on the activity reference pages.

