Activity vouchers
Fetch and download the voucher for an issued activity booking.
Vouchers exist only once the booking has been issued. Poll the booking until its status is issued, then list and download. Send SessionId as a query parameter.
List vouchers
GET/Activity/v2/bookings/{uuid}/vouchers
Access requires the permission activity_get_vouchers
Returns the vouchers for the booking. The list is empty until the booking is issued.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
uuid | string | Yes | The booking reference. |
curl "https://api.hermeseus.com/api/Activity/v2/bookings/1d59a17e-9726-4283-a5b7-bab7886e4709/vouchers?SessionId=8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f"
const uuid = "1d59a17e-9726-4283-a5b7-bab7886e4709";
const res = await fetch(`https://api.hermeseus.com/api/Activity/v2/bookings/${uuid}/vouchers?SessionId=8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f`);
const data = await res.json();import requests
uuid = "1d59a17e-9726-4283-a5b7-bab7886e4709"
res = requests.get(
f"https://api.hermeseus.com/api/Activity/v2/bookings/{uuid}/vouchers",
params={"SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f"},
)
data = res.json()Response
{
"data": [
{
"uuid": "b7c1e2a4-5d6f-4a8b-9c0d-1e2f3a4b5c6d",
"generatedAt": "2026-10-14T11:02:00.000+08:00",
"visualId": "GBB-Z2KB84Z",
"links": [
{ "method": "GET", "rel": "download", "href": "https://api.hermeseus.com/api/Activity/v2/bookings/1d59a17e-9726-4283-a5b7-bab7886e4709/download-voucher/b7c1e2a4-5d6f-4a8b-9c0d-1e2f3a4b5c6d" }
]
}
],
"timestamp": "2026-10-15T16:24:49.648+08:00"
}Download a voucher
GET/Activity/v2/bookings/{uuid}/download-voucher/{voucher}
Access requires the permission activity_get_vouchers
Streams the voucher file as application/pdf through this gateway. Pass the booking uuid and the voucher uuid.
curl -L -o voucher.pdf \ "https://api.hermeseus.com/api/Activity/v2/bookings/1d59a17e-9726-4283-a5b7-bab7886e4709/download-voucher/b7c1e2a4-5d6f-4a8b-9c0d-1e2f3a4b5c6d?SessionId=8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f"
Keep downloads authenticated.
The download needs your session. Do not hand the link to the end customer. Fetch the file yourself and distribute it.
Skip polling where you can.
Instead of polling the booking for issuance, read the
booking_status_updated event on the webhooks endpoint.

