# BeMyGuest API v2.0

The BeMyGuest API is the industry benchmark preferred by online travel agents, designed solely for Asia's attractions, tours and activities. This comprehensive API provides real-time access to a vast inventory of travel products.
### Key Features:
* **Product Discovery**: Search and retrieve detailed information for a wide range of travel products, including attractions, tours, and activities.
* **Real-Time Availability and Pricing**: Check live availability and get up-to-date pricing for specific product types and dates.
* **End-to-End Booking Management**: Create, confirm, and cancel bookings seamlessly.
* **Voucher Retrieval**: Access and download booking vouchers directly through the API.
* **Configuration**: Fetch essential configuration data such as supported languages, currencies, and locations to customize your integration.

Version: 2.1

## Servers

Api Demo Server
```
https://api.demo.bemyguest.com.sg
```

Variables:

Api Production Server
```
https://api.bemyguest.com.sg
```

Variables:

## Security

### BearerAuth

**Recommended.** Short-lived (15 min) OAuth 2.0 Bearer access token
obtained from `POST /v2/oauth/token` (see the "OAuth Tokens" guide).
Refresh tokens are single-use and rotate on every refresh. Attempting
to reuse a refresh token is treated as compromise and locks the
owning API key — see the guide for how to avoid tripping this.

Type: http
Scheme: bearer
Bearer Format: BMG Access Token

### Authorization

Legacy long-lived API key sent in the `X-Authorization` header.
Still fully supported, but new integrations should use `BearerAuth`
for better security (short-lived tokens, refresh-reuse detection).

Type: apiKey
In: header
Name: X-Authorization

## Download OpenAPI description

 - [BeMyGuest API v2.0](https://docs.bemyguest.com.sg/_bundle/openapi.yaml)

## Authentication

 - [POST /v2/oauth/token](https://docs.bemyguest.com.sg/openapi/authentication/issuetoken.md): Exchanges credentials for a short-lived Bearer access token and a single-use refresh token. See the "OAuth Tokens" guide for the full integration walkthrough, lifecycle diagram, and the serialisation
## Products

 - [GET /v2/products](https://docs.bemyguest.com.sg/openapi/products/getproductlist.md): Retrieves a comprehensive list of all available products. This endpoint supports various filtering and sorting options to help you narrow down the results. You can filter by product `type`, `category`
 - [GET /v2/products/{uuid}](https://docs.bemyguest.com.sg/openapi/products/getproductdetails.md): Fetches detailed information for a specific product using its unique identifier (`UUID`). You can specify which `fields` to return and the desired `language` for the response content.
 - [GET /v2/products/{uuid}/restrictions](https://docs.bemyguest.com.sg/openapi/products/getproductrestrictions.md): Returns the origin restrictions configured for a product, scoped to the authenticated distribution partner. Restrictions control which customer origins (by country) are allowed or excluded from purcha
## Product-Types

 - [GET /v2/products/{uuid}/product-types](https://docs.bemyguest.com.sg/openapi/product-types/getproducttypesforproduct.md): Returns a list of all available `product-types` for a given product `UUID`. This is useful for understanding the different variations or options available for a single product.
 - [GET /v2/product-types/{uuid}](https://docs.bemyguest.com.sg/openapi/product-types/getproducttypedetails.md): Retrieves the full details of a specific `product-type` using its `UUID`. This includes information about pricing, availability, and booking requirements. You can specify which `fields` to return and
 - [GET /v2/product-types/{uuid}/price-lists](https://docs.bemyguest.com.sg/openapi/product-types/getpricelistcalendar.md): Provides a calendar view of pricing and availability for a specific `product-type`. You must provide a `date_start` and `date_end` to define the period you are interested in. The date range cannot exc
 - [GET /v2/product-types/{uuid}/price-lists/{date}](https://docs.bemyguest.com.sg/openapi/product-types/checkavailabilityandprice.md): Checks the real-time availability and price for a specific `product-type` on a single given `date`. > It is highly recommended to use this endpoint to confirm availability before proceeding with a boo
## Bookings

 - [POST /v2/bookings](https://docs.bemyguest.com.sg/openapi/bookings/createbooking.md): Creates a new booking. > Before creating a booking, you should always check the availability and price using the `/v2/product-types/{uuid}/price-lists/{date}` endpoint. The request body must contain
 - [GET /v2/bookings](https://docs.bemyguest.com.sg/openapi/bookings/getbookings.md): Retrieves a list of your bookings. You can filter the results by `date_start`, `date_end`, guest information (`first_name`, `last_name`, `email`, `phone`), `partner_reference`, and `status`. Paginatio
 - [GET /v2/bookings/{uuid}](https://docs.bemyguest.com.sg/openapi/bookings/getbookingdetails.md): Retrieves the current status and details of a specific booking using its `UUID`.
 - [PUT /v2/bookings/{uuid}/{status}](https://docs.bemyguest.com.sg/openapi/bookings/updatebookingstatus.md): Updates the status of a booking to either `confirm` or `cancel`. - A new booking starts with the `reserved` status. - To confirm the booking and lock the inventory, you must update the status to `wait
 - [PUT /v2/bookings/{uuid}/reschedule](https://docs.bemyguest.com.sg/openapi/bookings/reschedulebooking.md): Update the arrival date (and, for time-slotted products, the timeslot) of a `reserved` booking in place, without cancelling and re-creating it. Designed as the recovery path when `PUT /v2/bookings/{uu
 - [GET /v2/bookings/{bookingUuid}/vouchers](https://docs.bemyguest.com.sg/openapi/bookings/getvouchers.md): Retrieves the vouchers for a specific booking. > Please note that the download links provided require authorization and should not be sent directly to the end customer. You must download the vouchers
## Configuration

 - [GET /v2/config](https://docs.bemyguest.com.sg/openapi/configuration/getconfig.md): Fetches essential configuration data for the API, including supported `languages`, `currencies`, `locations`, `timezones`, and the base URL for images.
## Requests

 - [CreateBookingRequest](https://docs.bemyguest.com.sg/openapi/requests/createbookingrequest.md): Schema: #/components/schemas/CreateBookingRequest
 - [RescheduleBookingRequest](https://docs.bemyguest.com.sg/openapi/requests/reschedulebookingrequest.md): Schema: #/components/schemas/RescheduleBookingRequest
## Responses

 - [BookingDetailsResponse](https://docs.bemyguest.com.sg/openapi/responses/bookingdetailsresponse.md): Schema: #/components/schemas/BookingDetailsResponse
 - [BookingListResponse](https://docs.bemyguest.com.sg/openapi/responses/bookinglistresponse.md): Schema: #/components/schemas/BookingListResponse
 - [BookingVouchersResponse](https://docs.bemyguest.com.sg/openapi/responses/bookingvouchersresponse.md): Schema: #/components/schemas/BookingVouchersResponse
 - [ConfigurationResponse](https://docs.bemyguest.com.sg/openapi/responses/configurationresponse.md): Schema: #/components/schemas/ConfigurationResponse
 - [ProductListResponse](https://docs.bemyguest.com.sg/openapi/responses/productlistresponse.md): Schema: #/components/schemas/ProductListResponse
 - [ProductResponse](https://docs.bemyguest.com.sg/openapi/responses/productresponse.md): Schema: #/components/schemas/ProductResponse
 - [ProductTypeAvailabilityResponse](https://docs.bemyguest.com.sg/openapi/responses/producttypeavailabilityresponse.md): Schema: #/components/schemas/ProductTypeAvailabilityResponse
 - [ProductTypeCalendarResponse](https://docs.bemyguest.com.sg/openapi/responses/producttypecalendarresponse.md): Schema: #/components/schemas/ProductTypeCalendarResponse
 - [ProductTypeDetailsResponse](https://docs.bemyguest.com.sg/openapi/responses/producttypedetailsresponse.md): Schema: #/components/schemas/ProductTypeDetailsResponse
 - [ProductTypesForProductResponse](https://docs.bemyguest.com.sg/openapi/responses/producttypesforproductresponse.md): Schema: #/components/schemas/ProductTypesForProductResponse
 - [ProductRestrictionsResponse](https://docs.bemyguest.com.sg/openapi/responses/productrestrictionsresponse.md): Schema: #/components/schemas/ProductRestrictionsResponse
## webhooks

 - [POST product_available](https://docs.bemyguest.com.sg/openapi/webhooks/productavailable.md): This webhook is triggered when a new product becomes available.
 - [POST product_updated](https://docs.bemyguest.com.sg/openapi/webhooks/productupdated.md): This webhook is triggered when a product's information is updated.
 - [POST product_type_available](https://docs.bemyguest.com.sg/openapi/webhooks/producttypeavailable.md): This webhook is triggered when a new product type becomes available.
 - [POST product_type_not_available](https://docs.bemyguest.com.sg/openapi/webhooks/producttypenotavailable.md): This webhook is triggered when a product type is no longer available.
 - [POST product_type_content_updated](https://docs.bemyguest.com.sg/openapi/webhooks/producttypecontentupdated.md): This webhook is triggered when the content of a product type is updated.
 - [POST booking_status_updated](https://docs.bemyguest.com.sg/openapi/webhooks/bookingstatusupdated.md): This webhook is triggered when a booking's status is updated.
 - [POST booking_data_updated](https://docs.bemyguest.com.sg/openapi/webhooks/bookingdataupdated.md): This webhook is triggered when a booking's data is updated.
 - [POST booking_tickets_updated](https://docs.bemyguest.com.sg/openapi/webhooks/bookingticketsupdated.md): This webhook is triggered when a booking's tickets are updated.
## Schemas

 - [Token Request](https://docs.bemyguest.com.sg/openapi/schemas/tokenrequest.md): Schema: #/components/schemas/TokenRequest
 - [Token Response](https://docs.bemyguest.com.sg/openapi/schemas/tokenresponse.md): Schema: #/components/schemas/TokenResponse
 - [OAuth Error](https://docs.bemyguest.com.sg/openapi/schemas/oautherror.md): Schema: #/components/schemas/OAuthError
 - [Activity Type](https://docs.bemyguest.com.sg/openapi/schemas/activitytype.md): Schema: #/components/schemas/ActivityType
 - [Activity Types](https://docs.bemyguest.com.sg/openapi/schemas/activitytypes.md): Schema: #/components/schemas/ActivityTypes
 - [AmountBreakdown](https://docs.bemyguest.com.sg/openapi/schemas/amountbreakdown.md): Schema: #/components/schemas/AmountBreakdown
 - [Audio Headset Language](https://docs.bemyguest.com.sg/openapi/schemas/audioheadsetlanguage.md): Schema: #/components/schemas/AudioHeadsetLanguage
 - [Availability](https://docs.bemyguest.com.sg/openapi/schemas/availability.md): Schema: #/components/schemas/Availability
 - [Availability Alternatives](https://docs.bemyguest.com.sg/openapi/schemas/availabilityalternatives.md): Schema: #/components/schemas/AvailabilityAlternatives
 - [AvailabilityDate](https://docs.bemyguest.com.sg/openapi/schemas/availabilitydate.md): Schema: #/components/schemas/AvailabilityDate
 - [Booking Customer](https://docs.bemyguest.com.sg/openapi/schemas/bookingcustomer.md): Schema: #/components/schemas/BookingCustomer
 - [BookingDetails](https://docs.bemyguest.com.sg/openapi/schemas/bookingdetails.md): Schema: #/components/schemas/BookingDetails
 - [BookingOptionValue](https://docs.bemyguest.com.sg/openapi/schemas/bookingoptionvalue.md): Schema: #/components/schemas/BookingOptionValue
 - [BookingOptions](https://docs.bemyguest.com.sg/openapi/schemas/bookingoptions.md): Schema: #/components/schemas/BookingOptions
 - [BookingOptionsPerPax](https://docs.bemyguest.com.sg/openapi/schemas/bookingoptionsperpax.md): Schema: #/components/schemas/BookingOptionsPerPax
 - [Get Bookings Response](https://docs.bemyguest.com.sg/openapi/schemas/bookingsummary.md): Schema: #/components/schemas/BookingSummary
 - [Booking Unavailable Error](https://docs.bemyguest.com.sg/openapi/schemas/bookingunavailableerror.md): Schema: #/components/schemas/BookingUnavailableError
 - [BookingVoucher](https://docs.bemyguest.com.sg/openapi/schemas/bookingvoucher.md): Schema: #/components/schemas/BookingVoucher
 - [Cancellation Policies](https://docs.bemyguest.com.sg/openapi/schemas/cancellationpolicies.md): Schema: #/components/schemas/CancellationPolicies
 - [Categories](https://docs.bemyguest.com.sg/openapi/schemas/categories.md): Schema: #/components/schemas/Categories
 - [Category](https://docs.bemyguest.com.sg/openapi/schemas/category.md): Schema: #/components/schemas/Category
 - [Cities](https://docs.bemyguest.com.sg/openapi/schemas/cities.md): Schema: #/components/schemas/Cities
 - [City](https://docs.bemyguest.com.sg/openapi/schemas/city.md): Schema: #/components/schemas/City
 - [Configuration Object](https://docs.bemyguest.com.sg/openapi/schemas/configuration.md): Schema: #/components/schemas/Configuration
 - [Countries](https://docs.bemyguest.com.sg/openapi/schemas/countries.md): Schema: #/components/schemas/Countries
 - [Country](https://docs.bemyguest.com.sg/openapi/schemas/country.md): Schema: #/components/schemas/Country
 - [Currencies](https://docs.bemyguest.com.sg/openapi/schemas/currencies.md): Schema: #/components/schemas/Currencies
 - [Currency](https://docs.bemyguest.com.sg/openapi/schemas/currency.md): Schema: #/components/schemas/Currency
 - [ErrorResponse](https://docs.bemyguest.com.sg/openapi/schemas/errorresponse.md): Schema: #/components/schemas/ErrorResponse
 - [Language](https://docs.bemyguest.com.sg/openapi/schemas/language.md): Schema: #/components/schemas/Language
 - [LanguageWithDirection](https://docs.bemyguest.com.sg/openapi/schemas/languagewithdirection.md): Schema: #/components/schemas/LanguageWithDirection
 - [Languages](https://docs.bemyguest.com.sg/openapi/schemas/languages.md): Schema: #/components/schemas/Languages
 - [Link](https://docs.bemyguest.com.sg/openapi/schemas/link.md): Schema: #/components/schemas/Link
 - [Location](https://docs.bemyguest.com.sg/openapi/schemas/location.md): Schema: #/components/schemas/Location
 - [Meta](https://docs.bemyguest.com.sg/openapi/schemas/meta.md): Schema: #/components/schemas/Meta
 - [PaginatedResponse](https://docs.bemyguest.com.sg/openapi/schemas/paginatedresponse.md): Schema: #/components/schemas/PaginatedResponse
 - [Pagination](https://docs.bemyguest.com.sg/openapi/schemas/pagination.md): Schema: #/components/schemas/Pagination
 - [Paths](https://docs.bemyguest.com.sg/openapi/schemas/paths.md): Schema: #/components/schemas/Paths
 - [Photo](https://docs.bemyguest.com.sg/openapi/schemas/photo.md): Schema: #/components/schemas/Photo
 - [Price Detail](https://docs.bemyguest.com.sg/openapi/schemas/pricedetail.md): Schema: #/components/schemas/PriceDetail
 - [PriceTypes](https://docs.bemyguest.com.sg/openapi/schemas/pricetypes.md): Schema: #/components/schemas/PriceTypes
 - [Product](https://docs.bemyguest.com.sg/openapi/schemas/product.md): Schema: #/components/schemas/Product
 - [Product Page Visit](https://docs.bemyguest.com.sg/openapi/schemas/productpagevisit.md): Schema: #/components/schemas/ProductPageVisit
 - [Product Summary](https://docs.bemyguest.com.sg/openapi/schemas/productsummary.md): Schema: #/components/schemas/ProductSummary
 - [ProductType](https://docs.bemyguest.com.sg/openapi/schemas/producttype.md): Schema: #/components/schemas/ProductType
 - [ProductTypeOption](https://docs.bemyguest.com.sg/openapi/schemas/producttypeoption.md): Schema: #/components/schemas/ProductTypeOption
 - [ProductTypeOptions](https://docs.bemyguest.com.sg/openapi/schemas/producttypeoptions.md): Schema: #/components/schemas/ProductTypeOptions
 - [ProductTypeSummary](https://docs.bemyguest.com.sg/openapi/schemas/producttypesummary.md): Schema: #/components/schemas/ProductTypeSummary
 - [Origin Restriction Entry](https://docs.bemyguest.com.sg/openapi/schemas/originrestrictionentry.md): Schema: #/components/schemas/OriginRestrictionEntry
 - [Rate Detail](https://docs.bemyguest.com.sg/openapi/schemas/ratedetail.md): Schema: #/components/schemas/RateDetail
 - [State](https://docs.bemyguest.com.sg/openapi/schemas/state.md): Schema: #/components/schemas/State
 - [States](https://docs.bemyguest.com.sg/openapi/schemas/states.md): Schema: #/components/schemas/States
 - [Sub-Category](https://docs.bemyguest.com.sg/openapi/schemas/subcategory.md): Schema: #/components/schemas/SubCategory
 - [SuccessfulResponse](https://docs.bemyguest.com.sg/openapi/schemas/successfulresponse.md): Schema: #/components/schemas/SuccessfulResponse
 - [TicketType](https://docs.bemyguest.com.sg/openapi/schemas/tickettype.md): Schema: #/components/schemas/TicketType
 - [Ticket Types](https://docs.bemyguest.com.sg/openapi/schemas/tickettypes.md): Schema: #/components/schemas/TicketTypes
 - [Product Type Timeslot](https://docs.bemyguest.com.sg/openapi/schemas/timeslot.md): Schema: #/components/schemas/TimeSlot
 - [User](https://docs.bemyguest.com.sg/openapi/schemas/user.md): Schema: #/components/schemas/User
 - [Validity Product](https://docs.bemyguest.com.sg/openapi/schemas/validityproduct.md): Schema: #/components/schemas/ValidityProduct
