Booking flow
All paths below are relative to https://api.kisum.io/venues/public/v1/sites/{siteKey}. The full request and response fields are in the API reference.
1. List spaces
Section titled “1. List spaces”GET /spacesReturns the venue’s active spaces with a published listing: name, capacity, description, amenities, photos and layouts. Use id in the next requests.
2. List slots and packages
Section titled “2. List slots and packages”GET /spaces/{spaceId}/slotsReturns the time slots a space can be booked for, such as an evening slot from 18:00 to 23:00, and the packages offered for each slot.
For each package:
hireFeeCentsis the hire fee before tax.hireFeeWithTaxCentsis the hire fee including tax.venueIncludeslists what the venue provides.promoterResponsibilitieslists what the organizer must provide.
Slots without a package are not returned. Slot times are in the venue’s time zone (timezone in GET /venue).
3. Check availability
Section titled “3. Check availability”GET /spaces/{spaceId}/availability?from=2026-10-01&to=2026-10-31Returns one entry per date. Each entry lists the slots with free: true or free: false:
{ "date": "2026-10-01", "slots": [ { "slotId": "3f1c...", "free": true }, { "slotId": "8a2d...", "free": false } ]}- The range can cover up to 92 days.
- A slot is not free when it is booked, blocked by the venue, held by a pending booking request, or has already started.
- Match
slotIdwith the slots from step 2. Ignore any slot that step 2 did not return.
4. Calculate a price quote
Section titled “4. Calculate a price quote”POST /quote{ "spaceId": "…", "slotId": "…", "packageId": "…", "date": "2026-10-01"}Returns the price for the selected package, slot and date:
hireFeeCents: total before taxtaxCents: taxtotalCents: total including taxdueNowCents: amount due after the contract is signedlines: the price breakdownpayments: the payment instalments the venue will invoice if the booking is confirmed
Each payment has amountCents and dueBasis, which states when it is due:
dueBasis | Due |
|---|---|
after_signing | After the contract is signed. offsetDays is the number of days after signing. |
before_event | Before the event. offsetDays is the number of days before the event. |
before_onsale | Before tickets go on sale. offsetDays is the number of days before the event. |
after_settlement | After the event is settled. offsetDays is the number of days after the event. |
fixed_date | On fixedDate. |
deducted_from_ticket_sales | Deducted from the event’s ticket sales. |
The quote is for display only. It does not hold the date.
5. Send the booking request
Section titled “5. Send the booking request”POST /booking-requests{ "spaceId": "…", "slotId": "…", "packageId": "…", "date": "2026-10-01", "guest": { "name": "Ana Putri", "email": "ana@example.com", "phone": "+62 812 0000 0000", "company": "Sunset Live" }, "message": "Album launch for 400 guests.", "website": ""}guest.nameandguest.emailare required.guest.phone,guest.companyandmessageare optional.websiteis a spam protection field. Keep it hidden from visitors and always send it empty. See Spam protection.
A successful request returns 201:
{ "success": true, "message": "Request sent. The venue will get back to you.", "data": { "reference": "WB-1A2B3C4D", "status": "pending_approval", "holdExpiresAt": "2026-09-20T10:00:00Z" }}Show the reference to the visitor. If the date was booked by someone else in the meantime, the API returns 409. Ask the visitor to select another date.
6. After the request
Section titled “6. After the request”The venue reviews the request in Kisum Venues and accepts or declines it. The venue contacts the visitor directly using the details in the request. The API does not send emails and does not report the decision back to your website.