What is bookingkit event structure (options)?
bookingkit has a special structure when it comes to sub-events/options. We generate a new event when an event has either a new price list (special prices, such as weekends) or different durations. They are linked to the main root_event via root_event_id.
What is the difference between an event and a merged event? I've used the same event ID in the merged event and event detail endpoints and have received responses in both.
Our suppliers can define multiple price groups for a single event—for instance, offering different prices for Monday–Friday and Saturday–Sunday. The
/events
endpoint returns one event per price group (e.g., “event name - Monday till Friday” and “event name - Saturday and Sunday”). To consolidate these into a single “root event,” you can use the/merged_events
endpoint.To merge all durations and price groups into one unified event in the response, apply the filters
only_root_events=1
andonly_main_duration=1
. This will return all price groups, but only for the default duration. Note that the duration may still vary depending on the event date (refer to the event ID specific to that date).What is the difference between the BOOKING and REQUEST types used by events?
"BOOKING" type events are those that can be booked instantly online by making a payment either through our website or via integrations. In contrast, "REQUEST" type events cannot be booked immediately—they can only be requested on our website. If the selected date is available, the supplier manually approves the request, after which the customer can proceed with the payment. Since this manual approval process is required, "REQUEST" type events are not supported via integrations. You may use a filter in the API to retrieve only "BOOKING" type events.
Do you handle open ticket activities? Those in which you can purchase a ticket without a specific date and use it within a valid time period? For example, buying a museum ticket that can be used throughout the next year. If so, how can I identify events of that type?
No, the API currently does not support this type of ticket.
Does your API handle pickups?
Suppliers can define both an event location and a separate meeting point in the CMS. These are represented in the API as "location" and "meeting_location," respectively. In some cases, both may be the same, or only the "location" may be provided. However, these fields do not necessarily indicate pickup services. Often, the event takes place at the "location," but customers are expected to arrive at the "meeting_location" at the beginning of the event.
Do orders require creation and confirmation, or are they done in a single step?
Order creation is handled in a single step. You can create an order with the status set to "ACCEPTED" as soon as your system confirms that the order can be placed. While a few integrations follow a two-step process due to specific internal requirements, this approach is not recommended as it adds unnecessary complexity. Additionally, some status values in the documentation are only relevant to those cases. The standard and preferred method is a single-step order flow.
6. How can I cancel an order? I haven't seen any specific endpoint.
To cancel an order, send a
PATCH
request to the order endpoint and set the status to"CANCELED"
. Updating the status on the order object will cancel the entire order. Alternatively, you can apply the same logic to the ticket or participant objects. For example, setting the"CANCELED"
status on a specific participant object within the order will cancel only that participant, without affecting the rest of the order.Regarding cancellation: Is there a place where I can find the cancellation policies defined for each event?
Currently, the system and API do not support the definition or retrieval of cancellation policies.
Can you provide examples of order creations and cancellations? The schema in the request body of the documentation looks more like a response than a request.
Below is a basic example of order creation and cancellation.
You may need to include additional parameters depending on your specific requirements.
Details such as
"vendor_id"
,"currency"
,"price_id"
, and"event_id"
can be retrieved from theGET /events
endpoint, while the"date_id"
is available through theGET /events/{id}/dates
endpoint. (Please note that the example below is a placeholder configuration—you’ll need to update it with the actual values obtained from the endpoints above.)Place order
{
"vendor_id": "440c0c6d2dfb884b46f99a8856fd8d6",
"status": "ACCEPTED",
"lang": "en",
"currency": "EUR",
"email": "mail@mail.de",
"name": "Name",
"date": "2025-04-10T13:00:00Z",
"country": "DE",
"tickets": [
{
"date_id": "b87d521e07f6c12c2751ce02bf2ec74",
"event_id": "43f2a8bd3c38a16c591da49bc24874b",
"status": "ACCEPTED",
"vat": "19.00",
"participants": [
{
"status": "ACCEPTED",
"name": "Name",
"price_id": 263569
}
]
}
]
}
Cancellation
{
"vendor_id": "440c0c6d2dfb884b46f99a8856fd8d6",
"status": "CANCELED",
"lang": "en",
"currency": "EUR",
"email": "mail@mail.de",
"name": "Name",
"date": "2025-04-10T13:00:00Z",
"country": "DE",
"tickets": [
{
"date_id": "b87d521e07f6c12c2751ce02bf2ec74",
"event_id": "43f2a8bd3c38a16c591da49bc24874b",
"status": "CANCELED",
"vat": "19.00",
"participants": [
{
"status": "CANCELED",
"name": "Name",
"price_id": 263569
}
]
}
]
}
FAQ
L
Written by Lena Withus
Updated over a week ago