Bookings related endpoints.
Understory API
This is the reference documentation for the Understory API. Here you can find detailed information about the API endpoints, request and response formats, and authentication methods.
For more general information, go to Documentation.
You’re exploring an early preview of the Understory API documentation. Take a look around and see what’s available.
Want to help us test and improve it? Share your feedback by clicking the chat icon in the bottom right. We’d love to hear your thoughts!
Query availability for events.
Event availability is a computed value based on a number of parameters, including:
- Event capacity and current reservations
- Resources linked to tickets and bookings (e.g., bikes, kayaks, equipment)
- Booking cut-off time
The availability response includes both an overall availability status and a breakdown of individual constraints, allowing you to understand exactly what factors are limiting availability for a given event.
A lowercase ISO 639-1 language code (e.g. "da"), optionally followed by a hyphen and an uppercase ISO 3166-1 country code (e.g. "en-US").
If no value matches what is available in the host's Storefront, an error response is returned.
You can optionally provide multiple language-country pairs with a priority, separated by commas based on content negotiation.
- https://api.understory.io/v1/experiences
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.understory.io/v1/experiences?cursor=string&limit=100' \
-H 'Accept-Language: en-GB; q=1.0, en-US; q=0.8' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'{ "next": "string", "items": [ { … } ] }
- https://api.understory.io/v1/experiences/{experienceId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.understory.io/v1/experiences/{experienceId}' \
-H 'Accept-Language: en-GB; q=1.0, en-US; q=0.8' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'{ "id": "string", "type": "MULTI_SESSION", "state": "ACTIVE", "name": "string", "description": "string", "tag_ids": [ "string" ], "media": [ { … } ], "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "metadata": { "key1": "value1", "key2": "value2" } }
Request
Information requests describes additional information that is collected during the booking flow.
These are usually presented as additional questions to be answered by the guest.
Pagination cursor for fetching the next page of results. Omit or pass an empty string to start from the beginning of the list.
A lowercase ISO 639-1 language code (e.g. "da"), optionally followed by a hyphen and an uppercase ISO 3166-1 country code (e.g. "en-US").
If no value matches what is available in the host's Storefront, an error response is returned.
You can optionally provide multiple language-country pairs with a priority, separated by commas based on content negotiation.
- https://api.understory.io/v1/experiences/{experienceId}/information-requests
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.understory.io/v1/experiences/{experienceId}/information-requests?cursor=string&limit=100' \
-H 'Accept-Language: en-GB; q=1.0, en-US; q=0.8' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'OK
Cursor for the next page of results. An empty string or absent value indicates the end of the list.
The type of information request, determining the expected input method.
Defines at what scope this information is collected.
If the scope is BOOKING, the information is collected once per booking.
If the scope is TICKET, the information is collected for each ticket in the booking, eg. "What size of bicycle do you want?".
{ "next": "string", "items": [ { … } ] }
Pagination cursor for fetching the next page of results. Omit or pass an empty string to start from the beginning of the list.
A lowercase ISO 639-1 language code (e.g. "da"), optionally followed by a hyphen and an uppercase ISO 3166-1 country code (e.g. "en-US").
If no value matches what is available in the host's Storefront, an error response is returned.
You can optionally provide multiple language-country pairs with a priority, separated by commas based on content negotiation.
- https://api.understory.io/v1/experiences/{experienceId}/ticket-variants
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.understory.io/v1/experiences/{experienceId}/ticket-variants?cursor=string&limit=100' \
-H 'Accept-Language: en-GB; q=1.0, en-US; q=0.8' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'OK
Cursor for the next page of results. An empty string or absent value indicates the end of the list.
The price of the ticket variant.
The VAT amount of the ticket variant.
List of add-on variants that can be added to this ticket variant.
The price of the add-on variant.
The VAT amount of the add-on variant.
{ "next": "string", "items": [ { … } ] }
Unique identifier for this webhook message. This ID is the same when a webhook is retried due to a previous failure. Use this for deduplication.
Timestamp of when the webhook was sent, in seconds since epoch. Compare against your system time to prevent replay attacks.
Information about the created experience.
- https://api.understory.io/v1.experience.created
{ "id": "string", "type": "v1.experience.created", "timestamp": "2019-08-24T14:15:22Z", "payload": { "experience_id": "string", "host_id": "string" } }
Unique identifier for this webhook message. This ID is the same when a webhook is retried due to a previous failure. Use this for deduplication.
Timestamp of when the webhook was sent, in seconds since epoch. Compare against your system time to prevent replay attacks.
Information about the updated experience.
- https://api.understory.io/v1.experience.updated
{ "id": "string", "type": "v1.experience.updated", "timestamp": "2019-08-24T14:15:22Z", "payload": { "experience_id": "string", "host_id": "string" } }
Unique identifier for this webhook message. This ID is the same when a webhook is retried due to a previous failure. Use this for deduplication.
Timestamp of when the webhook was sent, in seconds since epoch. Compare against your system time to prevent replay attacks.
Information about the deleted experience.
- https://api.understory.io/v1.experience.deleted
{ "id": "string", "type": "v1.experience.deleted", "timestamp": "2019-08-24T14:15:22Z", "payload": { "experience_id": "string", "host_id": "string" } }