Version: V1.13
Confidential: This document contains confidential information. Do not distribute.
This document describes the overall flow when integrating with Bridgify using the Bridgify Attraction API to book attractions.
The Bridgify Attraction API provides features for:
The booking flow implements purchases for one attraction at a time, where a single attraction is placed in a shopping cart and then purchased.
https://api.bridgify.iohttps://api.dev.bridgify.ioExamples in this document use production URLs. If you are using the dev environment, adjust the base URL accordingly.
This section explains how to use the Booking API directly to purchase attractions. The booking flow can vary based on the data provider and attraction type. Examples of variations:
To handle these variations, call required-fields for the cart item and follow the returned sequence.
create-cartadd-item-to-cartrequired-fieldspickupsseats-mapshipment-methodoptionslanguagesdatestimeslotsticketsoptional-extrascustomer-infosave-in-the-cart (and coupon if applicable)create-orderget-orders to retrieve vouchersget-orders .../cancellation to check or perform cancellationsOrder matters: If you call an earlier required field again, it resets data for all subsequent steps.
A cart manages the booking process. All booking operations require a cart_uuid.
Request
POST https://api.bridgify.io/attractions/booking/cart/
Response
{
"cart_uuid": "f3e8b0fc-c351-468e-a85c-837b457d2cf9",
"short_uuid": "22024070314493931212"
}
cart_uuid — Pass to subsequent endpoints.short_uuid — Will be the order_uuid returned to the customer.Adds an attraction to the cart and returns a cart_item_uuid.
Note: Currently cart functionality is not fully implemented. To finalize an order properly only one
cart_itemshould be added. In the future, multiple items will be supported.
Request
POST https://api.bridgify.io/attractions/booking/cart/items/
Body
{
"cart_uuid": "f3e8b0fc-c351-468e-a85c-837b457d2cf9",
"attraction_uuid": "f80f3ab9-8d1f-45a0-a3a2-f8503591dd87"
}
Response
{ "cart_item_uuid": "911d1684-a61d-470c-985c-3b652f7ddadf" }
Replace the current attraction in a cart item.
Request
PATCH https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}
Body
{ "attraction_uuid": "f80f3ab9-8d1f-45a0-a3a2-f8503591dd87" }
Remove a cart item from the cart.
Request
DELETE https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}
Returns the list of endpoints (and order) required to complete the booking for the current cart item.
Important: Calling an earlier field again resets the data for all following endpoints.
Request
GET https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/required-fields/
Response
{
"required_booking_fields": ["dates", "timeslots", "tickets", "customer-info"]
}
A pickup point is a meeting place where a traveler can be picked up. The response can be:
customer-info.Get Available Pickups
GET https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/pickups/
Response (example: list of points)
{
"available_pickups": [
{
"uuid": "60379a3e-3305-4a32-bbb4-c7f90b70a4db",
"type": "PICKUP",
"name": "Break Sokos Hotel Levi",
"latitude": 67.805595,
"longitude": 24.807596
}
]
}
Response (example: points with times)
{
"available_pickups": [
{
"pickup_point_id": "15500669235",
"pickup_point_description": "Meet at the Wyndham Apollo hotel.",
"pickup_point_location": "LOCATION_ID_123",
"pickup_point_times": ["10:00", "09:30"]
}
]
}
Response (example: options)
{
"available_pickups": [
{ "uuid": "MEET_AT_DEPARTURE_POINT", "name": "I will meet at the departure point" },
{ "uuid": "HOTEL", "name": "Hotel" },
{ "uuid": "CONTACT_SUPPLIER_LATER", "name": "I will contact the supplier later" },
{ "uuid": "AIRPORT", "name": "Airport" }
]
}
Select a Pickup
PATCH https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/pickups/
Bodies (examples)
{ "pickup": "60379a3e-3305-4a32-bbb4-c7f90b70a4db" }
{ "pickup": { "pickup_point_id": "15500669235", "pickup_point_times": ["09:30"] } }
{ "pickup": "CONTACT_SUPPLIER_LATER" }
Returns a URL to a JPG image of the seating map (for theater/sports).
Request
GET https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/seats-map/
Returns methods used to ship tickets (for scenarios without e-tickets or where shipment incurs a fee).
Get Methods
GET https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/shipment-method/
Example
{
"available_shipment_methods": [
{ "shipment_id": "1006", "area_id": "1006", "shipment_name": "E-Ticket", "merchant_price": 0.0 }
]
}
Select Method
PATCH https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/shipment-method/
Body
{ "shipment-method": "1006" }
Returns available options for the event. If required, this typically appears early because options affect subsequent fields.
tickets step."flexible_price": true → show disclaimer).Get Options
GET https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/options/
Example (truncated)
{
"options": [
{
"option_id": "TG1",
"title": "Car+Guide",
"description": "Tour Includes: AC car and Tour Guide. Entrance fee and meal not included.",
"currency": "USD",
"merchant_price": 6.2,
"retail_price": 10.23,
"supplier_discount": 0.0,
"flexible_price": true
}
]
}
Select Option
PATCH https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/options/
Body
{ "option_id": "TG1" }
Returns available languages (codes or full names with service type).
Time slots can depend on the selected language.
Get Languages
GET https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/languages/
Examples
{ "available_languages": ["es", "en"] }
{ "available_languages": ["Spanish - Guide", "English - Guide"] }
Select Language
PATCH https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/languages/
Bodies
{ "language": "es" }
{ "language": "English - Guide" }
Returns a list of available dates (typically within the next 6 months).
These dates come from real-time availability checks and are more authoritative than the generic availability endpoints.
Get Dates
GET https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/dates/
Example
{ "available_dates": ["2024-01-23", "2024-01-24", "2024-01-25", "2024-01-26", "2024-01-27"] }
Select Date
PATCH https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/dates/
Body
{ "date": "2024-01-27" }
Returns a list of available timeslots (or time intervals) for the selected date and other parameters.
Get Timeslots
GET https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/timeslots/
Examples
{ "available_timeslots": ["08:30", "10:30", "12:30"] }
{ "available_timeslots": ["08:30 - 10:30", "12:30 – 14:30"] }
Select Timeslot
PATCH https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/timeslots/
Bodies
{ "timeslot": "10:30" }
{ "timeslot": "08:30 - 10:30" }
Returns available ticket types for the selected parameters and purchase restrictions. The response includes:
restriction — Constraints such as:
max_ticket_types — Max distinct ticket types in one orderadult_required — Adult ticket required to purchase child ticketoverall_max_tickets — Max total tickets in one order{product_id}_minimum_required — Minimum tickets for a specific type{product_id}_max_tickets — Max per specific ticket typeflexible_price — Price depends on quantities → show disclaimerticket_types — Ticket type details. Depending on supplier:
merchant_price, retail_price, supplier_discount, currency, available_selling_quantities, type.Get Ticket Types
GET https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/tickets/
Example (with prices)
{
"restriction": { "overall_max_tickets": 5, "adult_required": true },
"ticket_types": [
{
"product_id": "155041",
"name": "Adult",
"holder_type": "ADULT",
"merchant_price": 51.23,
"retail_price": 55.0,
"supplier_discount": 0.0,
"currency": "USD",
"available_selling_quantities": [1,2,3,4,5],
"type": "musement-realtime"
}
]
}
Example (prices after PATCH)
{
"restriction": { "overall_max_tickets": 5, "adult_required": true, "ADULT_minimum_required": 1 },
"ticket_types": [
{
"product_id": "ADULT",
"name": "ADULT (age 11 - 99)",
"holder_type": "MOBILE_ONLY",
"currency": "USD",
"available_selling_quantities": [1,2,3,4,5],
"type": "PER_PERSON"
}
]
}
Select Tickets
PATCH https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/tickets/
Bodies
{ "tickets": [ { "product_id": "155041", "quantity": 2 }, { "product_id": "155042", "quantity": 2 } ] }
{ "tickets": [ { "product_id": "ADULT", "quantity": 1 } ] }
Price Response (example)
{
"ticket_prices": [
{ "product_id": "ADULT", "quantity": 1, "merchant_price": 102, "retail_price": 120.41, "supplier_discount": 0, "currency": "USD" },
{ "product_id": "TOTAL", "merchant_price": 102, "retail_price": 120.41, "supplier_discount": 0, "currency": "USD" }
]
}
Returns a list of extra services (e.g., food, drinks, booklets).
Get Extras
GET https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/optional-extras/
Example
{
"restriction": { "overall_max_tickets": 5 },
"optional_extras": [
{
"id": "448",
"title": "food",
"option_values": [
{ "value_id": "448_meat", "value_name": "meat", "value_price": "2.00" },
{ "value_id": "448_fish", "value_name": "fish", "value_price": "3.00" }
]
}
]
}
Select Extras
PATCH https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/optional-extras/
Body
{
"optional_extras": [
{
"id": "448",
"option_values": [{ "value_id": "448_meat", "value_count": 1 }]
}
]
}
Returns a JSON Schema describing additional fields required to finalize the order. These can include per-traveler and per-booking questions and always contain a required_customer_contact_info or required_info_for_payment object.
Get Customer Info Schema
GET https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/customer-info/
General Schema
{
"title": "required_customer_info",
"type": "object",
"properties": {},
"required": []
}
Examples (truncated)
{
"title": "required_customer_info",
"type": "object",
"properties": {
"language": {
"type": "object",
"properties": { "language_live": { "type": "string", "enum": ["en"] } },
"oneOf": [{"required": ["language_live"]}]
},
"hotel": { "type": "string", "title": "Hotel" }
},
"required": ["hotel", "language"]
}
{
"title": "required_customer_info",
"type": "object",
"properties": {
"id_adult_number_1": {
"type": "object",
"properties": {
"date_of_birth": { "type": "string" },
"first_name": { "type": "string" },
"last_name": { "type": "string" },
"passport_number": { "type": "string" }
}
},
"required_customer_contact_info": {
"type": "object",
"properties": {
"first_name": { "type": "string" },
"last_name": { "type": "string" },
"phone": { "type": "string" },
"email": { "type": "string" },
"address": { "type": "string" },
"city": { "type": "string" },
"zip_code": { "type": "string" }
},
"required": ["first_name", "last_name", "phone", "email", "address", "city", "zip_code"]
}
},
"required": ["language", "id_adult_number_1", "required_customer_contact_info"]
}
Set Customer Info
PATCH https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/customer-info/
Bodies (examples; truncated)
{
"language": { "language_live": "en" },
"hotel": "The Hotel"
}
{
"id_adult_number_1": {
"date_of_birth": "1900-01-01",
"first_name": "John",
"last_name": "Doe",
"passport_number": "1234567"
},
"language": { "language_live": "en" },
"required_customer_contact_info": {
"first_name": "John",
"last_name": "Doe",
"email": "test@test.test",
"phone": "+12345678",
"address": "Test Test",
"city": "Test",
"zip_code": "1234567"
}
}
Call before payment/order creation to store only relevant information.
transaction_amount — total merchant price for the ordertransaction_currency — e.g., USDRequest
POST https://api.bridgify.io/attractions/booking/save-in-cart/
Body
{
"cart_uuid": "903cb3b9-558a-40ac-9479-46597ff86d55",
"transaction_amount": 3,
"transaction_currency": "USD"
}
Response
{ "Saved.": "" }
Apply client-provided coupons before customer-info.
clearance_price (amount before coupon)discounted_price to use going forward (payment and save-in-the-cart)Request
PATCH https://api.bridgify.io/attractions/booking/cart/items/{cart_item_uuid}/coupon/
Body
{
"clearance_price": 100,
"property": "Isracard",
"coupon_code": "123456",
"currency": "USD"
}
Response
{ "discounted_price": 90, "discount_amount": 10 }
Create/finalize the order after completing the required endpoints.
Merchant mode liability: Once this is called, you are liable for the merchant price (+ rev-share/processing fees) of the purchased tickets.
Request (Merchant Mode)
POST https://api.bridgify.io/attractions/booking/orders
Body
{ "cart_short_uuid": "2024070716031846777", "currency_paid": "USD" }
Response
{ "order_uuid": "2024070716031846777" }
After the order is confirmed, retrieve voucher URLs (PDFs) for the e-tickets.
Some suppliers send vouchers directly to users; we may not have links (especially sports events). Confirmation can be instant or take hours/days depending on supplier.
Request
GET https://api.bridgify.io/attractions/booking/orders/{order_uuid}
Example (truncated)
{
"The booking order: ": [
{
"uuid": "f18c7df8-e63f-403e-8882-5ad0876828e2",
"status": "OK",
"vouchers": [
{ "url": "https://api.musement.com/voucher/view/..." }
]
}
]
}
Gets order information (including vouchers) for all orders or a date range.
Query Params
date_from — Returns attractions with availability after the date (YYYY-MM-DD). Defaults to today.date_to is specified then date_from must be specified.date_to — Returns attractions with availability before the date (YYYY-MM-DD).Request (example)
GET https://api.bridgify.io/attractions/booking/orders?date_from=2024-04-04&date_to=2024-05-05
Each attraction has its own cancellation policy:
Use the cancellation endpoint to check policy, allowed status, and the merchant_total_price refund amount.
Check Cancellation
GET https://api.bridgify.io/attractions/booking/orders/{short_uuid}/cancellation
Example (truncated)
{
"cancellation-info": {
"3be16340-59a9-4744-bae2-70d707b3077b": {
"policy": "For a full refund, cancel at least 24 hours before the scheduled departure time.",
"merchant_total_price": 302.25,
"currency": "USD",
"type": "PERCENTAGE",
"travel_date": "2024-08-14",
"percentage": 100.0,
"cancellation_allowed": true,
"paxes": { "ADULT": 2 },
"title": "Cave Tubing and Zipline Adventure from Belize City"
}
}
}
Cancel an Order
DELETE https://api.bridgify.io/attractions/booking/orders/{short_uuid}/{order_item_uuid}/cancellation
Response
{ "message": "Order has been canceled" }
The API supports searching for attractions, retrieving specific attraction details, and availability.
Refer to the Attraction API (including authentication) documentation for details.
required-fields order; re-calling earlier steps resets later data.tickets PATCH).© Bridgify. All rights reserved.