Headout API (1.0.0)

Download OpenAPI specification:

Introduction

Terms of Service

The Headout API enables seamless integration with Headout's platform, providing access to a wide range of functionalities, including querying availability, managing products, processing bookings, and much more.

Features

  • REST API: Simple and easy-to-use endpoints.
  • Supports JSON: For both requests and responses.
  • Data Model: A straightforward and intuitive data structure.
  • Security: Secured with SSL and API Key.
  • Performance: Fast and highly available, hosted on Amazon Web Services.

Do you need an API?

APIs are designed for developers. If you are not familiar with programming, we offer other solutions that may be easier to use. Headout provides a range of plugins for website integration, which do not require direct API usage. To learn more, check the integration plugins available in your Headout account.

Integration Partners

If you're looking to build a new service around Headout’s platform, require additional APIs, or want Headout to directly integrate with your company's software, reach out to our team to review your project and discuss feasibility.

Getting Started

Headout API Partners

Headout offers different API products for various business needs. Make sure to choose the right one for your specific use case.

Headout API for Affiliates

Affiliates using the Headout API will primarily interact with product, category, subcategory, collection, and city APIs to access the necessary data for their platforms. Please note that affiliates will not require access to booking and inventory APIs, as these are more relevant for other types of partners.

The available APIs for affiliates include:

  • Product API: Allows access to detailed product information, including pricing, descriptions, media, and availability across different cities.
  • Category API: Enables retrieval of product categories, helping to organize and display products efficiently.
  • Subcategory API: Provides information on subcategories related to specific products, allowing for more granular classification.
  • Collection API: Offers access to curated collections of products, which can be displayed as themed or seasonal offers.
  • City API: Facilitates access to city-specific data, like Headout supported cities.

By focusing on these APIs, affiliates can seamlessly integrate Headout's offerings into their platforms, ensuring accurate and up-to-date information for their users.

Headout API for Booking Partners

API partners using the Headout API will have access to the full suite of available APIs, enabling comprehensive integration with Headout's platform. This includes access to products, categories, subcategories, collections, cities, bookings, and inventory management.

The available APIs for API partners include:

  • Product API: Allows access to detailed product information, including pricing, descriptions, media, and availability across different cities.
  • Category API: Enables retrieval of product categories, helping to organize and display products efficiently.
  • Subcategory API: Provides information on subcategories related to specific products, allowing for more granular classification.
  • Collection API: Offers access to curated collections of products, which can be displayed as themed or seasonal offers.
  • City API: Facilitates access to city-specific data, like Headout supported cities.
  • Booking API: Enables the creation, retrieval, and management of bookings, making it essential for partners who need to handle reservations directly through their systems.
  • Inventory API: Provides access to real-time inventory data for specific products and variants, ensuring accurate availability information for users.

API partners can utilize this comprehensive set of APIs to fully integrate Headout’s offerings into their own platforms, enabling seamless transactions, accurate data management, and enhanced user experiences.

How to use these APIs?

Flow

Security

All requests to the Headout API must use HTTPS. If you attempt to use HTTP, the request will be automatically redirected to HTTPS with an HTTP Status 301 (Permanent Redirect). The API is not available on non-SSL/TLS ports, ensuring secure communication.

We do not support Cross-Origin Resource Sharing (CORS), so REST calls to the Headout API should not be made directly from a browser. Instead, calls should be made server-to-server or through a secure environment.

All API calls require a valid API Key for authentication. The API Key must be passed as an HTTP header in all requests:

HTTP headers:
Headout-Auth: {api-token}

Example:

Headout-Auth: pk_fgjsfg597sf7g5shsfhgf7hs7fg57s64sfg74h

Obtaining API Keys

To obtain your API Key, sign up on our Affiliate platform / Distributor platform, and you will receive your API keys via email. There are two types of API keys:

  • Production Keys: These are prefixed with pk_ and are valid only in the production environment. Use this key for all live production work.
  • Testing Keys: These are prefixed with tk_ and are valid only in the testing sandbox environment. Use this key for testing purposes.

Versioning

The Headout API is versioned, and you must include the version in the URL when making API calls. Our API is continuously updated within the same version with non-breaking changes, and the version number will be incremented only for major breaking changes.

All Partner APIs are prefixed with /api/public/v{api_version}. For instance, if the API version is v2, the URL structure will be /api/public/v2.

While V1 APIs, which previously followed the /api/v1 structure, will continue to work, it is recommended to transition to the new URL structure: /api/public/v1.

Please refer to the changelog for detailed information on updates and changes.

Currently, the Headout Product API is at version v2, while the Booking and Inventory APIs remain at version v1:

GET https://www.headout.com/api/public/v2/products
POST https://www.headout.com/api/public/v1/booking

Environments

We have both Staging and Production environments. Use the Staging environment to test your integration before moving to the Production environment.

Environment API URL
Staging https://sandbox.api.dev-headout.com
Production https://www.headout.com

Updates are typically released to the Staging environment about one week before they are deployed to Production. Therefore, there may be differences between these environments during that period.

Testing Sandbox

For testing your integration, use the sandbox environment available at https://sandbox.api.dev-headout.com. You will need to use the testing API key to access this environment.

Keep your API key confidential and do not publish it in any publicly available repository or version control system, as this could expose your key to malicious bots frequently scanning for vulnerabilities.

Payload Format

Media Types

The Headout API supports JSON payloads encoded in UTF-8. It is essential to include both the Accept and Content-Type headers in your requests to ensure proper handling of the data:

Content-Type: application/json; charset=UTF-8
Accept: application/json

Pagination

APIs that return multiple items are paginated by default. You can control the pagination using the offset and limit query parameters.

For example:

GET /products?offset=0&limit=100
GET /products?offset=100&limit=100
GET /products?offset=200&limit=100

Response

Pagination responses are wrapped with a pagination-wrapper . You can use the pagination wrapper to help with navigation along with getting to know other metadata about the current pagination.

{
  "items": [],
  "nextUrl": "https://next-url",
  "prevUrl": "https://prev-url",
  "total": 100,
  "nextOffset": 20
}

Date Formats

There are two date formats used in the Headout API:

  • ISO8601 Format: Typically used for fields such as startTime, endTime, dateCreated, and dateUpdated. This format is ideal for precise, timezone-aware timestamps.

  • Localized Format: Based on the supplier's timezone setup on Headout, this format is displayed as yyyy-MM-dd HH:mm:ss and is often used for times that are relevant to the local context, such as tour start times.

When making API requests, you can choose to use either of these formats. If both are provided, the startTime (ISO8601) will take precedence over startTimeLocal (Localized).

By understanding these formats, you can ensure that your application correctly handles date and time data, whether it's for global coordination or local relevance.

Booking

Booking operations

Create a new booking

POST /booking

Create a new booking object in UNCAPTURED state.

The booking creation and acceptance flow is a 2 step flow. Calling this API creates the initial booking in UNCAPTURED state and returns back the same booking along with the new booking id. You should call this API before fulfilling the booking flow on your end. Once you get a response, you can then fulfill the booking flow on your end and then call PUT /booking to capture the booking and start the fulfillment process of the booking on our end.

If the booking capturing doesn't happen within an hour then the booking status is automatically changed to CAPTURE_TIMEOUT.

Request

Request Example
{
  "productId": "5678",
  "variantId": "1234",
  "inventoryId": "1455",
  "customersDetails": {
    "count": 3,
    "customers": [
      {
        "personType": "ADULT",
        "isPrimary": true,
        "inputFields": [
          {
            "id": "EMAIL",
            "value": "a@b.com"
          }
        ]
      }
    ]
  },
  "price": {
    "amount": 100,
    "currencyCode": "USD"
  }
}

Response

Response Example
{
  "bookingId": "126890",
  "partnerReferenceId": null,
  "variantId": "1234",
  "startDateTime": "2017-04-12T19:30:00",
  "product": {
    "id": "2832",
    "name": "Aladdin",
    "variant": {
      "id": "4384",
      "name": "Grand Circle"
    }
  },
  "customersDetails": {
    "count": 3,
    "customers": [
      {
        "personType": "ADULT",
        "isPrimary": true,
        "inputFields": [
          {
            "id": "EMAIL",
            "name": "Name",
            "value": "a@b.com"
          }
        ]
      }
    ]
  },
  "seatInfo": [
    {
      "section": "A",
      "row": "10",
      "seatNumber": "12",
      "seatCode": "A-10-12"
    }
  ],
  "price": {
    "amount": 100,
    "currencyCode": "USD"
  },
  "status": "CAPTURE_TIMEOUT",
  "voucherUrl": "https://www.headout.com/voucher/126890?key=AAAD6AAAABhsDVGlVXsL2YDAf65qMsOQAlqJZdsw80eczQCIL6sa5rITsvOjxoD5NwaoBDiwlEY%3D",
  "tickets": [
    {
      "publicId": "9e4d8330-abc7-40f8-951d-19b9e8731dcf",
      "url": null,
      "type": "QRCODE"
    }
  ],
  "creationTimestamp": 1491902295
}

Notes

  • All bookings start in UNCAPTURED status and must be captured within 1 hour via PUT /booking/{id}
  • The price.amount and price.currencyCode in the response may differ from the request if currency conversion occurs
  • tickets array is typically empty/null for new bookings and populated after fulfillment
  • voucherUrl provides immediate access to booking information even before tickets are generated
  • seatInfo is only populated for seatmap-enabled bookings
  • bookingId represents the itinerary identifier in the system
  • variantId represents the variant (tour) identifier that was booked
Authorizations:
apiKeyAuth
Request Body schema: application/json
required
productId
string

ID of the product which the variant is part of.

variantId
string

ID of the variant to be booked.

inventoryId
string

ID of the inventory to be booked.

object

Details of the customers.

object

Pricing details for the booking.

Responses

Request samples

Content type
application/json
{
  • "productId": "string",
  • "variantId": "string",
  • "inventoryId": "string",
  • "customersDetails": {
    },
  • "price": {
    }
}

Response samples

Content type
application/json
{
  • "bookingId": "string",
  • "partnerReferenceId": "string",
  • "variantId": "string",
  • "startDateTime": "2019-08-24T14:15:22Z",
  • "product": {
    },
  • "customersDetails": {
    },
  • "seatInfo": [
    ],
  • "price": {
    },
  • "status": "UNCAPTURED",
  • "voucherUrl": "string",
  • "tickets": [
    ],
  • "creationTimestamp": 0
}

Fetch all bookings

GET /booking

Retrieve a list of all Bookings.

Response Example
{
    "items": [{
        "bookingId": "126890",
        "partnerReferenceId": "AX67873DDFSR",
        "variantId": "1234",
        "startDateTime": "2017-04-12T19:30:00",
        "product": {
            "id": "2832",
            "name": "Aladdin",
            "variant": {
                "id": "4384",
                "name": "Grand Circle"
            }
        },
        "customersDetails": {
            "count": 3,
            "customers": [{
                "personType": "ADULT",
                "isPrimary": true,
                "inputFields": [{
                    "id": "EMAIL",
                    "name": "Name",
                    "value": "a@b.com"  
                }]
            }]  
        },
        "seatInfo": [
            {
                "section": "A",
                "row": "10",
                "seatNumber": "12",
                "seatCode": "A-10-12"
            }
        ],
        "price": {
            "amount": 100,
            "currencyCode": "USD"
        },
        "status": "CAPTURE_TIMEOUT",
        "voucherUrl": "https://www.headout.com/voucher/126890?key=AAAD6AAAABhsDVGlVXsL2YDAf65qMsOQAlqJZdsw80eczQCIL6sa5rITsvOjxoD5NwaoBDiwlEY%3D",
        "tickets": [
        {
            "publicId": "9e4d8330-abc7-40f8-951d-19b9e8731dcf",
            "url": null,
            "type": "QRCODE"
        }],
        "creationTimestamp": 1491902295

    }],
    "nextUrl": "https://www.headout.com/api/public/v1/booking?offset=1&limit=1",
    "prevUrl": null,
    "total": 100,
    "nextOffset": 1
}
Authorizations:
apiKeyAuth

Responses

Request samples

curl --location 'https://www.headout.com/api/public/v1/booking' \
--header 'Headout-Auth: <YOUR_API_KEY>' \
--header 'Content-Type: application/json'

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "nextUrl": "string",
  • "prevUrl": "string",
  • "total": 0,
  • "nextOffset": 0
}

Fetch a booking by ID

GET /booking/{id}

Retrieve details of a specific Booking by its ID.

Request

MODE KEY TYPE OPTIONAL DESCRIPTION
PATH id string no The booking id.

Response

Response Example
{
  "bookingId": "126890",
  "partnerReferenceId": "AX67873DDFSR",
  "variantId": "1234",
  "startDateTime": "2017-04-12T19:30:00",
  "product": {
    "id": "2832",
    "name": "Aladdin",
    "variant": {
      "id": "4384",
      "name": "Grand Circle"
    }
  },
  "customersDetails": {
    "count": 3,
    "customers": [
      {
        "personType": "ADULT",
        "isPrimary": true,
        "inputFields": [
          {
            "id": "EMAIL",
            "name": "Name",
            "value": "a@b.com"
          }
        ]
      }
    ]
  },
  "seatInfo": [
    {
      "section": "A",
      "row": "10",
      "seatNumber": "12",
      "seatCode": "A-10-12"
    }
  ],
  "price": {
    "amount": 100,
    "currencyCode": "USD"
  },
  "status": "CAPTURE_TIMEOUT",
  "voucherUrl": "https://www.headout.com/voucher/126890?key=AAAD6AAAABhsDVGlVXsL2YDAf65qMsOQAlqJZdsw80eczQCIL6sa5rITsvOjxoD5NwaoBDiwlEY%3D",
  "tickets": [
    {
      "publicId": "9e4d8330-abc7-40f8-951d-19b9e8731dcf",
      "url": null,
      "type": "QRCODE"
    }
  ],
  "creationTimestamp": 1491902295
}
Authorizations:
apiKeyAuth
path Parameters
id
required
string

ID of the booking to fetch.

Responses

Request samples

curl --location 'https://www.headout.com/api/public/v1/booking/<some-booking-id>' \
--header 'Headout-Auth: <YOUR_API_KEY>' \
--header 'Content-Type: application/json'

Response samples

Content type
application/json
{
  • "bookingId": "string",
  • "partnerReferenceId": "string",
  • "variantId": "string",
  • "startDateTime": "2019-08-24T14:15:22Z",
  • "product": {
    },
  • "customersDetails": {
    },
  • "seatInfo": [
    ],
  • "price": {
    },
  • "status": "UNCAPTURED",
  • "voucherUrl": "string",
  • "tickets": [
    ],
  • "creationTimestamp": 0
}

Update a booking

PUT /booking/{id}

Used to modify a booking. Currently this is only used for capturing the booking and assigning a partnerReferenceId. Use this method to capture the booking by specifying the status as PENDING. The booking will be fulfilled on our end only once you capture it.

Request

Request Example
{
  "status": "PENDING",
  "partnerReferenceId": "AX67873DDFSR"
}

Response

Response Example
{
  "bookingId": "126890",
  "partnerReferenceId": "AX67873DDFSR",
  "variantId": "1234",
  "startDateTime": "2017-04-12T19:30:00",
  "product": {
    "id": "2832",
    "name": "Aladdin",
    "variant": {
      "id": "4384",
      "name": "Grand Circle"
    }
  },
  "customersDetails": {
    "count": 3,
    "customers": [
      {
        "personType": "ADULT",
        "isPrimary": true,
        "inputFields": [
          {
            "id": "EMAIL",
            "name": "Name",
            "value": "a@b.com"
          }
        ]
      }
    ]
  },
  "seatInfo": [
    {
      "section": "A",
      "row": "10",
      "seatNumber": "12",
      "seatCode": "A-10-12"
    }
  ],
  "price": {
    "amount": 100,
    "currencyCode": "USD"
  },
  "status": "PENDING",
  "voucherUrl": "https://www.headout.com/voucher/126890?key=AAAD6AAAABhsDVGlVXsL2YDAf65qMsOQAlqJZdsw80eczQCIL6sa5rITsvOjxoD5NwaoBDiwlEY%3D",
  "tickets": [
    {
      "publicId": "9e4d8330-abc7-40f8-951d-19b9e8731dcf",
      "url": null,
      "type": "QRCODE"
    }
  ],
  "creationTimestamp": 1491902295
}
Authorizations:
apiKeyAuth
path Parameters
id
required
string

ID of the booking to update.

Request Body schema: application/json
required
status
string
Enum: "PENDING" "UNCAPTURED" "COMPLETED" "CANCELLED" "FAILED"

Updated status of the booking.

partnerReferenceId
string or null

Updated partner reference ID.

Responses

Request samples

Content type
application/json
{
  • "status": "PENDING",
  • "partnerReferenceId": "string"
}

Response samples

Content type
application/json
{
  • "bookingId": "string",
  • "partnerReferenceId": "string",
  • "variantId": "string",
  • "startDateTime": "2019-08-24T14:15:22Z",
  • "product": {
    },
  • "customersDetails": {
    },
  • "seatInfo": [
    ],
  • "price": {
    },
  • "status": "UNCAPTURED",
  • "voucherUrl": "string",
  • "tickets": [
    ],
  • "creationTimestamp": 0
}

Submit cancellation request for booking

Submit a cancellation request for a bookingId owned by your partner account. This validates input and ownership, creates a request log with status SUBMITTED, and enqueues an asynchronous job for downstream processing. The immediate response acknowledges submission and does not represent the final booking outcome.

Base path: /api/public/v2/partner/booking

Authorizations:
apiKeyAuth
path Parameters
bookingId
required
string

Booking identifier owned by the calling partner.

Request Body schema: application/json
required
reason
required
string
Enum: "TICKETS_NOT_RECEIVED" "CHANGE_OF_TRAVEL_PLANS" "MODIFY_EXISTING_RESERVATION" "FOUND_CHEAPER_OPTION_ELSEWHERE" "OTHER"

Cancellation reason.

comment
string or null

Optional free-text comment

Responses

Request samples

Content type
application/json
{
  • "reason": "CHANGE_OF_TRAVEL_PLANS",
  • "comment": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Cancellation request submitted successfully"
}

Submit reschedule request for booking

Submit a reschedule request for a bookingId owned by your partner account. This validates input and ownership, creates a request log with status SUBMITTED, and enqueues an asynchronous job for downstream processing. The immediate response acknowledges submission and does not represent the final booking outcome.

Base path: /api/public/v2/partner/booking

Authorizations:
apiKeyAuth
path Parameters
bookingId
required
string

Booking identifier owned by the calling partner.

Request Body schema: application/json
required
startDateTime
required
string <date-time>

Local date-time values.

endDateTime
required
string <date-time>

Local date-time values.

comment
string or null

Optional free-text comment

Responses

Request samples

Content type
application/json
{
  • "startDateTime": "2025-11-02T09:00:00",
  • "endDateTime": "2025-11-02T11:00:00",
  • "comment": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Cancellation request submitted successfully"
}

Collection

Collection operations

List all categories by city

GET /category/list-by/city

Retrieve a list of all categories for a specific city.

Request

MODE KEY TYPE OPTIONAL DESCRIPTION
QUERY cityCode string no The city code. Eg: NEW_YORK, DUBAI
QUERY offset string yes The offset for pagination. Ref: Pagination - Request Params
QUERY limit int yes The limit for pagination. Ref: Pagination - Request Params

Response

Response Example
{
    "items": [
        {
            "id": "123",
            "name": "Broadway",
            "cityCode": "NEW_YORK",
            "canonicalUrl": "https://www.headout.com/category/24/broadway"
        }
    ],
    "nextUrl": "https://www.headout.com/api/public/v1/category/list-by/city?cityCode=NEW_YORK,offset=21,limit=20",
    "prevUrl": "https://www.headout.com/api/public/v1/category/list-by/city?cityCode=NEW_YORK,offset=0,limit=20",
    "total": 100,
    "nextOffset": 21
}
Authorizations:
apiKeyAuth
query Parameters
cityCode
required
string

City code to list categories for.

offset
string

Number of items to skip before starting to collect the result set.

limit
integer

Maximum number of items to return.

Responses

Request samples

curl --location 'https://www.headout.com/api/public/v1/category/list-by/city?cityCode=DUBAI' \
--header 'Headout-Auth: <YOUR_API_KEY>'

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "nextUrl": "string",
  • "prevUrl": "string",
  • "total": 0,
  • "nextOffset": 0
}

List all collections

GET /collections

Overview

The Partner Collections API v2 provides endpoints for accessing the collections. This API is designed to facilitate partners in fetching relevant data for different cities and languages.

Request

API Parameters

Parameter Required / Optional Description Default Value
cityCode Required The city code to fetch collections for.
languageCode Optional Language code. EN
offset Optional Offset for pagination. 0
limit Optional Limit for pagination. 10

API Headers

Header Required / Optional Description
Headout-Auth Required The Authorization Token.

Response

Response Example
{
  "collections": [
    {
      "id": "24",
      "name": "Broadway",
      "cityCode": "NEW_YORK",
      "localeSpecificUrls": {
        "EN": "/broadway-tickets-c-24/",
        "ES": "/es/entradas-espectaculos-de-broadway-c-24/",
        "FR": "/fr/billets-comedie-musicale-broadway-c-24/",
        "IT": "/it/broadway-biglietti-c-24/",
        "DE": "/de/broadway-tickets-c-24/",
        "PT": "/pt/broadway-c-24/",
        "NL": "/nl/broadway-c-24/"
      },
      "canonicalUrl": "https://www.headout.com/broadway-tickets-c-24/"
    },
    {
      "id": "161",
      "name": "Off Broadway Show Tickets",
      "cityCode": "NEW_YORK",
      "localeSpecificUrls": {
        "EN": "/off-broadway-show-tickets-c-161/",
        "ES": "/es/entradas-espectaculos-off-broadway-c-161/",
        "FR": "/fr/off-broadway-c-161/",
        "IT": "/it/biglietti-per-spettacoli-off-broadway-c-161/",
        "DE": "/de/off-broadway-c-161/",
        "PT": "/pt/ingressos-para-espetaculos-off-broadway-c-161/",
        "NL": "/nl/off-broadway-c-161/"
      },
      "canonicalUrl": "https://www.headout.com/off-broadway-show-tickets-c-161/"
    },
    {
      "id": "121",
      "name": "Statue of Liberty",
      "cityCode": "NEW_YORK",
      "localeSpecificUrls": {
        "EN": "/statue-of-liberty-cruises-c-121/",
        "ES": "/es/estatua-de-la-libertad-c-121/",
        "FR": "/fr/statue-de-la-liberte-c-121/",
        "IT": "/it/statua-della-liberta-c-121/",
        "DE": "/de/freiheitsstatue-c-121/",
        "PT": "/pt/estatua-da-liberdade-c-121/",
        "NL": "/nl/vrijheidsbeeld-c-121/"
      },
      "canonicalUrl": "https://www.headout.com/statue-of-liberty-cruises-c-121/"
    }
  ],
  "nextUrl": null,
  "prevUrl": null,
  "total": 3,
  "nextOffset": null
}

Notes

  • Ensure that all required parameters are included in your requests.
  • Use appropriate city and language codes as per your application requirements.
  • Pagination parameters (offset and limit) help in managing large datasets.
Authorizations:
apiKeyAuth
query Parameters
cityCode
required
string

The code of the city for which data is being requested.

languageCode
string
Default: "EN"
Enum: "EN" "ES" "FR" "IT" "DE" "PT" "NL" "PL"

The language code for localization. Default is 'EN'.

offset
string

The number of items to skip before starting to collect the result set.

limit
integer

The numbers of items to return.

Responses

Request samples

curl --location 'https://www.headout.com/api/public/v2/collections?cityCode=<CITY_CODE>&languageCode=<LANGUAGE_CODE>&limit=<LIMIT>&offset=<OFFSET>' \
--header 'Headout-Auth: <YOUR_API_KEY>'

Response samples

Content type
application/json
{
  • "collections": [
    ],
  • "nextUrl": "string",
  • "prevUrl": "string",
  • "total": 0,
  • "nextOffset": 0
}

City

City operations

List all active cities

GET /city

List all the active cities.

Request

MODE KEY TYPE OPTIONAL DESCRIPTION
QUERY offset string yes The offset for pagination. Ref: Pagination - Request Params
QUERY limit int yes The limit for pagination. Ref: Pagination - Request Params

Response

Response Example
{
    "items": [
        {
            "code": "NEW_YORK",
            "name": "New York",
            "image": "https://cdn-imgix.headout.com/cities/new-york/images/mobile/morning.jpg"
        }
    ],
    "nextUrl": "https://www.headout.com/api/public/v1/city?offset=21,limit=20",
    "prevUrl": "https://www.headout.com/api/public/v1/city?offset=0,limit=20",
    "total": 100,
    "nextOffset": 21
}
Authorizations:
apiKeyAuth
query Parameters
offset
string

Number of items to skip before starting to collect the result set.

limit
integer

Maximum number of items to return.

Responses

Request samples

curl --location 'https://www.headout.com/api/public/v1/city' \
--header 'Headout-Auth: <YOUR_API_KEY>'

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "nextUrl": "string",
  • "prevUrl": "string",
  • "total": 0,
  • "nextOffset": 0
}

Variant

Variant operations

List available inventory for a variant

GET /inventory/list-by/variant

Get the available inventory for a variant.

Request

MODE KEY TYPE OPTIONAL DESCRIPTION
QUERY variantId string no The ID of the variant for which the inventory needs to be fetched.
QUERY startDateTime string yes The start date time from which the inventory needs to be fetched. If unspecified then the current timestamp is taken into consideration. Format: fm-date-time. Ref: inventory.startDateTime
QUERY endDateTime string yes The end date time till which the inventory needs to be fetched. If unspecified then this is taken as infinity. Format: fm-date-time. Ref: inventory.startDateTime
QUERY offset string yes The offset for pagination. Ref: Pagination - Request Params
QUERY limit int yes The limit for pagination. Ref: Pagination - Request Params
QUERY currencyCode string yes The currency in which pricing information will be returned. Eg: USD, AED. Ref: https://en.wikipedia.org/wiki/ISO_4217

Response

Response Example
{
    "items": [
        {
            "id": "1212121",
            "startDateTime": "2017-03-30T15:30:00",
            "endDateTime": "2017-03-30T15:30:00",
            "availability": "LIMITED/UNLIMITED/CLOSED",
            "remaining": 5,
            "pricing": {
                "persons": [
                    {
                        "type": "ADULT",
                        "name": "Adult",
                        "ageFrom": 13,
                        "ageTo": null,
                        "price": 100,
                        "originalPrice": 110
                    },
                    {
                        "type": "CHILD",
                        "name": "Child",
                        "ageFrom": 4,
                        "ageTo": 12,
                        "price": 50,
                        "originalPrice": 60
                    }
                ],
                "groups": [
                    {
                        "size": 4,
                        "price": 100,
                        "originalPrice": 120
                    }
                ]
            }
        }
    ],
    "nextUrl": "https://www.headout.com/api/public/v1/inventory/list-by/variant?variantId=1234&offset=21&limit=20",
    "prevUrl": "https://www.headout.com/api/public/v1/inventory/list-by/variant?variantId=1234&offset=0&limit=20",
    "total": 100,
    "nextOffset": 21
}
Authorizations:
apiKeyAuth
query Parameters
variantId
required
string

ID of the variant to list inventory for.

startDateTime
string

Start date and time for inventory availability.

endDateTime
string

End date and time for inventory availability.

offset
string

Number of items to skip before starting to collect the result set.

limit
integer

Maximum number of items to return.

currencyCode
string
Enum: "EUR" "GBP" "AED" "USD" "SGD" "AUD" "THB" "INR" "HKD" "KRW" "CAD" "JPY" "NZD" "CHF" "ZAR" "MYR" "BRL" "RUB" "SEK" "IDR" "ISK" "MOP" "CNY" "TWD" "MXN" "EGP" "QAR" "SAR" "DKK" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BSD" "BTN" "BWP" "BYR" "BZD" "CDF" "CLP" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DOP" "DZD" "ERN" "ETB" "FJD" "FKP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HNL" "HRK" "HTG" "HUF" "ILS" "IMP" "IQD" "IRR" "JEP" "JMD" "JOD" "KES" "KGS" "KHR" "KMF" "KPW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MRO" "MUR" "MVR" "MWK" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "RON" "RSD" "RWF" "SBD" "SCR" "SDG" "SHP" "SLL" "SOS" "SPL" "SRD" "SSP" "STD" "SVC" "SYP" "SZL" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TZS" "UAH" "UGX" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZMW" "ZWD"

Currency code for inventory pricing.

Responses

Request samples

curl --location 'https://www.headout.com/api/public/v1/inventory/list-by/variant?variantId=2671&offset=0&limit=150&currencyCode=AED' \
--header 'Headout-Auth: <YOUR_API_KEY>'

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "nextUrl": "string",
  • "prevUrl": "string",
  • "total": 0,
  • "nextOffset": 0
}

Product

Product operations

Get product by ID

GET /product/get/{product_id}

Gets a product by productId.

Request

MODE KEY TYPE OPTIONAL DESCRIPTION
PATH productId string no Product id
QUERY currencyCode string yes The currency in which pricing information will be returned. Eg: USD, AED. Ref: https://en.wikipedia.org/wiki/ISO_4217
QUERY fetch-variants boolean yes (Default: true) Flag to toggle the option of fetching variants.
QUERY language string yes (Default: EN) The language in which the product details will be returned. Eg: EN, ES, FR, IT, DE, PT, NL, etc.

Response

Response Example
{
  "id": 512,
  "name": "Wicked",
  "url": "/broadway-tickets/wicked-e-512/",
  "canonicalUrl": "https://www.headout.com/broadway-tickets/wicked-e-512/",
  "neighbourhood": "",
  "city": {
    "name": "New York",
    "code": "NEW_YORK"
  },
  "currency": {
    "code": "USD",
    "name": "United States Dollar",
    "symbol": "US$",
    "localSymbol": "$",
    "precision": 2
  },
  "displayTags": [
    "Broadway",
    "Musical",
    "Best of Broadway",
    "Entertainment"
  ],
  "images": [
    {
      "url": "https://cdn-imgix.headout.com/media/images/5276fb91a066165e4069516143ae2ea3-512-new-york-wicked-01.jpg",
      "altText": "wicked-1",
      "description": "Wicked Newyork",
      "credit": "Broadway Inbound, Inc"
    }
  ],
  "contentListHtml": [
    {
      "title": "Summary",
      "type": "SUMMARY_HTML",
      "html": "<h2>Why Watch Wicked</h2>\n<p>Dive deep into the enchanting world of Oz, presented from a perspective you've never witnessed before. Secure your Wicked Broadway tickets to step into a multi-award-winning phenomenon. With its spellbinding cast, extraordinary crew, and accolades that stretch beyond Broadway's glimmering lights, Wicked is an unmatched theatrical experience. The numerous awards and consistent critical acclaim stand testimony to its brilliance. Don't miss your chance to be swept away by this bewitching tale of friendship, love, and the cost of integrity.</p>\n<h2>The Story</h2>\n<p>Before Dorothy and her famous ruby slippers, there was a profound friendship between two young women, one with emerald green skin. This is their story. Book your Wicked Broadway tickets now and embark on a magical journey that unveils the untold tale of the witches of Oz. Witness the transformation of Elphaba, the future Wicked Witch of the West, and Glinda, the Good Witch. It's a mesmerizing, heart-tugging story filled with songs and emotions that promise to leave an indelible mark on your soul.</p>\n<h2>Great For</h2>\n<p>Fans of Fantasy | Musical Enthusiasts | Night Out with Family</p>"
    }
  ],
  "content": [
    {
      "title": "Summary",
      "type": "SUMMARY_HTML",
      "html": "<h2>Why Watch Wicked</h2>\n<p>Dive deep into the enchanting world of Oz, presented from a perspective you've never witnessed before. Secure your Wicked Broadway tickets to step into a multi-award-winning phenomenon. With its spellbinding cast, extraordinary crew, and accolades that stretch beyond Broadway's glimmering lights, Wicked is an unmatched theatrical experience. The numerous awards and consistent critical acclaim stand testimony to its brilliance. Don't miss your chance to be swept away by this bewitching tale of friendship, love, and the cost of integrity.</p>\n<h2>The Story</h2>\n<p>Before Dorothy and her famous ruby slippers, there was a profound friendship between two young women, one with emerald green skin. This is their story. Book your Wicked Broadway tickets now and embark on a magical journey that unveils the untold tale of the witches of Oz. Witness the transformation of Elphaba, the future Wicked Witch of the West, and Glinda, the Good Witch. It's a mesmerizing, heart-tugging story filled with songs and emotions that promise to leave an indelible mark on your soul.</p>\n<h2>Great For</h2>\n<p>Fans of Fantasy | Musical Enthusiasts | Night Out with Family</p>"
    }
  ],
  "startLocation": {
    "geolocation": {
      "latitude": 40.762332916259766,
      "longitude": -73.98523712158203
    },
    "address": {
      "addressLine1": "Gershwin Theatre",
      "addressLine2": "222 West 51 Street",
      "cityName": "New York",
      "postalCode": "10019",
      "state": "New York",
      "countryName": "United States"
    }
  },
  "endLocation": {
    "geolocation": {
      "latitude": 40.762332916259766,
      "longitude": -73.98523712158203
    },
    "address": {
      "addressLine1": "Gershwin Theatre",
      "addressLine2": "222 West 51 Street",
      "cityName": "New York",
      "postalCode": "10019",
      "state": "New York",
      "countryName": "United States"
    }
  },
  "productType": "EVENT",
  "ratingCumulative": {
    "avg": 4.43,
    "count": 1262
  },
  "hasInstantConfirmation": false,
  "hasMobileTicket": false,
  "variants": [
    {
      "id": 647,
      "name": "Rear Orchestra/Rear Mezzanine",
      "description": "",
      "duration": 9900000,
      "inventoryType": "FIXED_START_FIXED_DURATION",
      "pax": {
        "min": 1,
        "max": 8
      },
      "cashback": {
        "value": 0.0000,
        "type": "PERCENTAGE"
      },
      "ticketDeliveryInfoHtml": null,
      "inputFields": [
        {
          "oldId": 62,
          "id": "NAME",
          "name": "Full Name",
          "dataType": "STRING",
          "validation": {
            "regex": "\\s*[^\\s]+\\s+[^\\s]+.*",
            "minLength": 3,
            "maxLength": 80,
            "minValue": null,
            "maxValue": null,
            "required": true,
            "values": null
          },
          "level": "PRIMARY_CUSTOMER"
        },
        {
          "oldId": 237880,
          "id": "CUSTOM_237880",
          "name": "Passport Details",
          "description": "Passport ID number",
          "dataType": "STRING",
          "validation": {
            "regex": null,
            "minLength": null,
            "maxLength": null,
            "minValue": null,
            "maxValue": null,
            "required": true,
            "values": null
          },
          "level": "ALL_CUSTOMER"
        },
        {
          "oldId": 247089,
          "id": "CUSTOM_247089",
          "name": "Pickup Location",
          "description": "Please select your pickup location",
          "dataType": "LOCATION",
          "validation": {
            "regex": null,
            "minLength": null,
            "maxLength": null,
            "minValue": null,
            "maxValue": null,
            "required": true,
            "values": [
              {
                "id": 292744,
                "latitude": 7.79685,
                "longitude": 98.311755,
                "address": "Rawai, Mueang Phuket District, Phuket 83100, Thailand",
                "displayName": "2c Phuket Residence",
                "timingConfig": {
                  "startTime": null,
                  "endTime": null,
                  "minPeriod": null,
                  "maxPeriod": null
                },
                "note": null
              },
              {
                "id": 292745,
                "latitude": 7.880448,
                "longitude": 98.39225,
                "address": "Phuket, Mueang Phuket District, Phuket 83000, Thailand",
                "displayName": "A2 Home",
                "timingConfig": {
                  "startTime": null,
                  "endTime": null,
                  "minPeriod": null,
                  "maxPeriod": null
                },
                "note": null
              }
            ]
          },
          "level": "PRIMARY_CUSTOMER"
        },
      ],
      "tags": [
        "BROADWAY",
        "BROADWAY2",
        "BROADWAYFORKIDS",
        "BROADWAYFORKIDS2",
        "BTTFA"
      ]
    }
  ],
  "pricing": {
    "type": "PER_PERSON",
    "currencyCode": "USD",
    "minimumPrice": {
      "originalPrice": 96.50,
      "finalPrice": 96.50
    },
    "bestDiscount": 0
  }
}
Authorizations:
apiKeyAuth
path Parameters
productId
required
string

ID of the product to fetch.

query Parameters
currencyCode
string
Enum: "EUR" "GBP" "AED" "USD" "SGD" "AUD" "THB" "INR" "HKD" "KRW" "CAD" "JPY" "NZD" "CHF" "ZAR" "MYR" "BRL" "RUB" "SEK" "IDR" "ISK" "MOP" "CNY" "TWD" "MXN" "EGP" "QAR" "SAR" "DKK" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BSD" "BTN" "BWP" "BYR" "BZD" "CDF" "CLP" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DOP" "DZD" "ERN" "ETB" "FJD" "FKP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HNL" "HRK" "HTG" "HUF" "ILS" "IMP" "IQD" "IRR" "JEP" "JMD" "JOD" "KES" "KGS" "KHR" "KMF" "KPW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MRO" "MUR" "MVR" "MWK" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "RON" "RSD" "RWF" "SBD" "SCR" "SDG" "SHP" "SLL" "SOS" "SPL" "SRD" "SSP" "STD" "SVC" "SYP" "SZL" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TZS" "UAH" "UGX" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZMW" "ZWD"

Currency code for product pricing.

fetch-variants
boolean

Flag to fetch product variants.

language
string
Default: "EN"
Enum: "EN" "ES" "FR" "IT" "DE" "PT" "NL" "PL"
Example: language=EN

Language code for localization.

Responses

Request samples

curl --location 'https://www.headout.com/api/v1/product/get/3336?currencyCode=EUR&language=PT&fetch-variants=true' \
--header 'Headout-Auth: <YOUR_API_KEY>'

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "canonicalUrl": "string",
  • "content": {
    },
  • "city": {
    },
  • "media": [
    ],
  • "startLocation": {
    },
  • "address": {
    },
  • "productType": "string",
  • "reviewsSummary": {
    },
  • "listingPrice": {
    },
  • "currency": {
    },
  • "localeSpecificUrls": {
    },
  • "hasInstantConfirmation": true,
  • "hasMobileTicket": true,
  • "primaryCategory": {
    },
  • "primarySubCategory": {
    },
  • "primaryCollection": {
    },
  • "variants": [
    ],
  • "cancellationPolicy": {
    },
  • "reschedulePolicy": {
    },
  • "pois": [
    ],
  • "cutoffTimeInMinutes": 0,
  • "inventorySelectionType": "string"
}

List product listing by city

GET /product/listing/list-by/city

List product listing using city.

Request

MODE KEY TYPE OPTIONAL DESCRIPTION
QUERY cityCode string no The city code. Eg: NEW_YORK, DUBAI
QUERY currencyCode string yes The currency in which pricing information will be returned. Eg: USD, AED. Ref: https://en.wikipedia.org/wiki/ISO_4217
QUERY language string yes (Default: EN) The language in which the product details will be returned. Eg: EN, ES, FR, IT, DE, PT, NL
QUERY offset string yes The offset for pagination. Ref: Pagination - Request Params
QUERY limit int yes The limit for pagination. Ref: Pagination - Request Params

Response

Response Example
{
  "items": [
    {
      "id": "2844",
      "name": "Fast Track Tickets to the London Eye",
      "url": "/london-eye-tickets/fast-track-tickets-to-the-london-eye-e-2844/",
      "canonicalUrl": "https://www.headout.com/london-eye-tickets/fast-track-tickets-to-the-london-eye-e-2844/",
      "city": {
        "name": "London",
        "code": "LONDON"
      },
      "image": {
        "url": "https://cdn-imgix.headout.com/tour/4407/TOUR-IMAGE/12d3a2c5-a39e-4f0f-9724-dcd63f5429cb-2844-london-london-eye--fast-track-entry-tickets-04.jpg"
      },
      "neighbourhood": null,
      "primaryCategory": {
        "id": 279,
        "name": "London Eye Tickets",
        "cityCode": "LONDON",
        "url": "/category/279"
      },
      "currency": {
        "code": "USD",
        "currencyName": "United States Dollar",
        "symbol": "US$",
        "localSymbol": "$",
        "precision": 2,
        "currency": "USD"
      },
      "startGeolocation": {
        "latitude": 51.50345230102539,
        "longitude": -0.119518555700779
      },
      "ratingCumulative": {
        "avg": 4.47,
        "count": 3398
      },
      "pricing": {
        "type": "PER_PERSON",
        "currencyCode": "USD",
        "minimumPrice": {
          "originalPrice": 58.4,
          "finalPrice": 58.4
        },
        "bestDiscount": 0
      },
      "hasInstantConfirmation": true
    }
  ],
  "nextUrl": "https://www.headout.com/api/v1/product/listing/list-by/city?cityCode=LONDON&currencyCode=USD&language=EN&offset=11&limit=1",
  "prevUrl": "https://www.headout.com/api/v1/product/listing/list-by/city?cityCode=LONDON&currencyCode=USD&language=EN&offset=9&limit=1",
  "total": 224,
  "nextOffset": 11
}
Authorizations:
apiKeyAuth
query Parameters
cityCode
required
string

City code to list product listings for.

currencyCode
string
Enum: "EUR" "GBP" "AED" "USD" "SGD" "AUD" "THB" "INR" "HKD" "KRW" "CAD" "JPY" "NZD" "CHF" "ZAR" "MYR" "BRL" "RUB" "SEK" "IDR" "ISK" "MOP" "CNY" "TWD" "MXN" "EGP" "QAR" "SAR" "DKK" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BSD" "BTN" "BWP" "BYR" "BZD" "CDF" "CLP" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DOP" "DZD" "ERN" "ETB" "FJD" "FKP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HNL" "HRK" "HTG" "HUF" "ILS" "IMP" "IQD" "IRR" "JEP" "JMD" "JOD" "KES" "KGS" "KHR" "KMF" "KPW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MRO" "MUR" "MVR" "MWK" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "RON" "RSD" "RWF" "SBD" "SCR" "SDG" "SHP" "SLL" "SOS" "SPL" "SRD" "SSP" "STD" "SVC" "SYP" "SZL" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TZS" "UAH" "UGX" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZMW" "ZWD"

Currency code for product pricing.

language
string
Default: "EN"
Enum: "EN" "ES" "FR" "IT" "DE" "PT" "NL" "PL"
Example: language=EN

Language code for localization.

offset
string

Number of items to skip before starting to collect the result set.

limit
integer

Maximum number of items to return.

Responses

Request samples

curl --location 'https://www.headout.com/api/v1/product/listing/list-by/city?cityCode=LONDON&currencyCode=CAD&language=FR&limit=10&offset=10' \
--header 'Headout-Auth: <YOUR_API_KEY>'

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "nextUrl": "string",
  • "prevUrl": "string",
  • "total": 0,
  • "nextOffset": 0
}

List product listing by category

GET /product/listing/list-by/category

List product listing using category.

Request

MODE KEY TYPE OPTIONAL DESCRIPTION
QUERY categoryId string no The id of the category.
QUERY language string yes (Default: EN) The language in which the product details will be returned. Eg: EN, ES, FR, IT, DE, PT, NL
QUERY currencyCode string yes The currency in which pricing information will be returned. Eg: USD, AED. Ref: https://en.wikipedia.org/wiki/ISO_4217
QUERY limit int yes The limit for pagination. Ref: Pagination - Request Params
QUERY offset string yes The offset for pagination. Ref: Pagination - Request Params

Response

Response Example
{
  "items": [
    {
      "id": "11228",
      "name": "Tickets to Khao Kheow Open Zoo",
      "url": "/es/khao-kheow-open-zoo/khao-kheow-open-zoo-e-11228/",
      "canonicalUrl": "https://www.headout.com/es/khao-kheow-open-zoo/khao-kheow-open-zoo-e-11228/",
      "city": {
        "name": "Pattaya",
        "code": "PATTAYA"
      },
      "image": {
        "url": "https://cdn-imgix.headout.com/tour/21259/TOUR-IMAGE/4dd55cf1-4beb-45ad-aa50-7d6b8b58ca39-11228-pattaya-khao-kheow-open-zoo-01.jpg"
      },
      "neighbourhood": null,
      "primaryCategory": {
        "id": 4842,
        "name": "Khao Kheow Open Zoo",
        "cityCode": "PATTAYA",
        "url": "/category/4842"
      },
      "currency": {
        "code": "EUR",
        "currencyName": "Euro",
        "symbol": "EUR",
        "localSymbol": "€",
        "precision": 2,
        "currency": "EUR"
      },
      "startGeolocation": {
        "latitude": 13.214982986450195,
        "longitude": 101.05597686767578
      },
      "ratingCumulative": {
        "avg": 4.44,
        "count": 2023
      },
      "pricing": {
        "type": "PER_PERSON",
        "currencyCode": "EUR",
        "minimumPrice": {
          "originalPrice": 6.51,
          "finalPrice": 5.73
        },
        "bestDiscount": 12
      },
      "hasInstantConfirmation": true
    }
  ],
  "nextUrl": "https://www.headout.com/api/v1/product/listing/list-by/category?categoryId=3956&language=ES&currencyCode=EUR&offset=11&limit=1",
  "prevUrl": "https://www.headout.com/api/v1/product/listing/list-by/category?categoryId=3956&language=ES&currencyCode=EUR&offset=9&limit=1",
  "total": 25,
  "nextOffset": 11
}
Authorizations:
apiKeyAuth
query Parameters
categoryId
required
string

Category ID to list product listings for.

language
string
Default: "EN"
Enum: "EN" "ES" "FR" "IT" "DE" "PT" "NL" "PL"
Example: language=EN

Language code for localization.

currencyCode
string
Enum: "EUR" "GBP" "AED" "USD" "SGD" "AUD" "THB" "INR" "HKD" "KRW" "CAD" "JPY" "NZD" "CHF" "ZAR" "MYR" "BRL" "RUB" "SEK" "IDR" "ISK" "MOP" "CNY" "TWD" "MXN" "EGP" "QAR" "SAR" "DKK" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BSD" "BTN" "BWP" "BYR" "BZD" "CDF" "CLP" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DOP" "DZD" "ERN" "ETB" "FJD" "FKP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HNL" "HRK" "HTG" "HUF" "ILS" "IMP" "IQD" "IRR" "JEP" "JMD" "JOD" "KES" "KGS" "KHR" "KMF" "KPW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MRO" "MUR" "MVR" "MWK" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "RON" "RSD" "RWF" "SBD" "SCR" "SDG" "SHP" "SLL" "SOS" "SPL" "SRD" "SSP" "STD" "SVC" "SYP" "SZL" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TZS" "UAH" "UGX" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZMW" "ZWD"

Currency code for product pricing.

offset
string

Number of items to skip before starting to collect the result set.

limit
integer

Maximum number of items to return.

Responses

Request samples

curl --location 'https://www.headout.com/api/v1/product/listing/list-by/category?categoryId=3956&language=ES&currencyCode=EUR&limit=20&offset=10' \
--header 'Headout-Auth: <YOUR_API_KEY>'

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "nextUrl": "string",
  • "prevUrl": "string",
  • "total": 0,
  • "nextOffset": 0
}

List all products

GET /products

Overview

The Partner Products API v2 provides endpoints for accessing the products. This API is designed to facilitate partners in fetching relevant product information for different cities and languages.

Request

API Parameters

Parameter Required / Optional Description Default Value
cityCode Required The city code to fetch products for.
collectionId Optional Collection ID to filter products.
categoryId Optional Category ID to filter products.
subCategoryId Optional Subcategory ID to filter products.
languageCode Optional Language code. EN
currencyCode Optional Currency code.
campaignName Optional Campaign name for filtering.
offset Optional Offset for pagination. 0
limit Optional Limit for pagination. 20

API Headers

Header Required / Optional Description
Headout-Auth Required The Authorization Token.

Response

Response Example
{
  "products": [
    {
      "id": "19513",
      "name": "Edge Observation Deck Tickets",
      "canonicalUrl": "https://www.headout.com/edge-observation-deck-tickets/tickets-to-edge-observation-deck-e-19513/?affiliate_code=n5cprT&utm_medium=affiliate&utm_source=",
      "city": {
        "code": "NEW_YORK",
        "name": "New York",
        "image": {
          "url": "//cdn-imgix.headout.com/media/images/ee075882083344be170ed38c8c76b4a1-new-york-city-01.jpeg"
        }
      },
      "media": [
        {
          "url": "https://cdn-imgix.headout.com/media/images/7dff2143faf0c49109d1aeca8a7dcd9f-19513-new-york-edge-observation-deck-adimssion-tickets--09.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/13457e49907d62d8240ed934d0c3ee4e-19513-TicketstoEdgeObservationDeck---002.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/649480a68651bab273b313916235160e-19513-TicketstoEdgeObservationDeck---003.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/4ef5529db833ea7a1798d495cee3ccb0-19513-TicketstoEdgeObservationDeck---004.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/cb2d4b053a719b3cf6c74459795258f4-19513-TicketstoEdgeObservationDeck---005.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/4b621678552897b11e5632d62be8160c-19513-new-york-edge-observation-deck-adimssion-tickets--07.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/94dc11b01eb6040267b2d3ac96444d55-19513-new-york-edge-observation-deck-adimssion-tickets--06.jpg",
          "type": "IMAGE"
        }
      ],
      "startLocation": {
        "latitude": 40.75412368774414,
        "longitude": -74.0009765625
      },
      "productType": "ATTRACTION",
      "reviewsSummary": {
        "ratingsCount": 2763,
        "averageRating": 4.03
      },
      "listingPrice": {
        "type": "PER_PERSON",
        "currencyCode": "USD",
        "minimumPrice": {
          "originalPrice": 41.00,
          "finalPrice": 41.00
        },
        "bestDiscount": 0
      },
      "currency": {
        "code": "USD",
        "currencyName": "United States Dollar",
        "symbol": "US$",
        "localSymbol": "$",
        "precision": 2,
        "currency": "USD"
      },
      "localeSpecificUrls": {
        "EN": "/edge-observation-deck-tickets/tickets-to-edge-observation-deck-e-19513/",
        "ES": "/es/edge-nyc/entradas-a-la-plataforma-de-observacion-edge-e-19513/",
        "FR": "/fr/edge-nyc/billets-pour-le-pont-dobservation-edge-e-19513/",
        "IT": "/it/edge-nyc/biglietti-per-il-ponte-di-osservazione-di-edge-30-hudson-yards-e-19513/",
        "DE": "/de/rand-nyc/tickets-fur-die-aussichtsplattform-the-edge-e-19513/",
        "PT": "/pt/borda-nyc/ingressos-para-o-edge-observation-deck-e-19513/",
        "NL": "/nl/rand-nyc/tickets-voor-edge-observation-deck-e-19513/"
      },
      "hasInstantConfirmation": true,
      "hasMobileTicket": true,
      "primaryCategory": {
        "id": "1",
        "name": "Tickets",
        "localeSpecificUrls": {
          "EN": "/tickets-new_york-ca-1~21553/",
          "ES": "/es/entradas-new_york-ca-1~21553/",
          "FR": "/fr/billets-new_york-ca-1~21553/",
          "IT": "/it/biglietti-new_york-ca-1~21553/",
          "DE": "/de/tickets-new_york-ca-1~21553/",
          "PT": "/pt/ingressos-new_york-ca-1~21553/",
          "NL": "/nl/tickets-new_york-ca-1~21553/"
        },
        "canonicalUrl": "https://www.headout.com/tickets-new_york-ca-1~21553/"
      },
      "primarySubCategory": {
        "id": "1007",
        "name": "Landmarks",
        "categoryId": "1",
        "canonicalUrl": "https://www.headout.com/landmarks-new_york-sc-1007~21553/",
        "localeSpecificUrls": {
          "EN": "/landmarks-new_york-sc-1007~21553/",
          "ES": "/es/principales-atracciones-new_york-sc-1007~21553/",
          "FR": "/fr/monuments-new_york-sc-1007~21553/",
          "IT": "/it/punti-di-interesse-new_york-sc-1007~21553/",
          "DE": "/de/wahrzeichen-new_york-sc-1007~21553/",
          "PT": "/pt/marcos-historicos-new_york-sc-1007~21553/",
          "NL": "/nl/bezienswaardigheden-new_york-sc-1007~21553/"
        }
      },
      "primaryCollection": {
        "id": "4012",
        "name": "Edge NYC",
        "cityCode": "NEW_YORK",
        "localeSpecificUrls": {},
        "canonicalUrl": "https://www.headout.com/edge-observation-deck-tickets-c-4012/"
      },
      "cancellationPolicy": {
        "cancellable": false,
        "cancellableUpToInMinutes": null
      },
      "reschedulePolicy": {
        "reschedulable": false,
        "reschedulableUpToInMinutes": null
      }
    },
    {
      "id": "593",
      "name": "Empire State Building Observatory Skip-the-Line Tickets",
      "canonicalUrl": "https://www.headout.com/empire-state-building-tickets/empire-state-building-observatory-tickets-e-593/?affiliate_code=n5cprT&utm_medium=affiliate&utm_source=",
      "city": {
        "code": "NEW_YORK",
        "name": "New York",
        "image": {
          "url": "//cdn-imgix.headout.com/media/images/ee075882083344be170ed38c8c76b4a1-new-york-city-01.jpeg"
        }
      },
      "media": [
        {
          "url": "https://cdn-imgix.headout.com/media/images/e783f141025783e733cf2e6f80d745ba-593-new-york-empire-state-building-observatory-tickets-11.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/tour/724/TOUR-IMAGE/9622bde2-0000-408f-b3f2-1d8938367795-593-new-york-empire-state-building-observatory-tickets-06.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/tour/724/TOUR-IMAGE/43205213-a763-4533-a23a-d544b4148b17-593-new-york-empire-state-building-observatory-tickets-09.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/tour/724/TOUR-IMAGE/94b5164c-1ebc-4bf1-aaa1-7df77868daa8-593-new-york-empire-state-building-observatory-tickets-08.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/tour/724/TOUR-IMAGE/5dbcd7d1-108d-42cb-b408-c2619a99f005-593-new-york-empire-state-building-observatory-tickets-07.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/tour/724/TOUR-IMAGE/ee824c63-5a83-4f2f-a122-9abec55543bb-593-new-york-empire-state-building-observatory-tickets-04.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/tour/724/TOUR-IMAGE/68e4067d-1135-497c-99c8-47b1e6d3af64-593-new-york-empire-state-building-observatory-tickets-03.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/tour/724/TOUR-IMAGE/ab7aabf3-994f-4a01-92cf-bf57553e4c53-593-new-york-empire-state-building-observatory-tickets-01.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/tour/724/TOUR-IMAGE/0d5d7d1c-7d6f-4d31-9bc0-14a24ee22f74-593-new-york-empire-state-building-observatory-tickets-02.jpg",
          "type": "IMAGE"
        }
      ],
      "startLocation": {
        "latitude": 40.74843978881836,
        "longitude": -73.98566436767578
      },
      "productType": "ATTRACTION",
      "reviewsSummary": {
        "ratingsCount": 3873,
        "averageRating": 4.31
      },
      "listingPrice": {
        "type": "PER_PERSON",
        "currencyCode": "USD",
        "minimumPrice": {
          "originalPrice": 43.98,
          "finalPrice": 43.98
        },
        "bestDiscount": 0
      },
      "currency": {
        "code": "USD",
        "currencyName": "United States Dollar",
        "symbol": "US$",
        "localSymbol": "$",
        "precision": 2,
        "currency": "USD"
      },
      "localeSpecificUrls": {
        "EN": "/empire-state-building-tickets/empire-state-building-observatory-tickets-e-593/",
        "ES": "/es/entradas-empire-state-building/entradas-al-empire-state-building-e-593/",
        "FR": "/fr/empire-state-building/billets-pour-lobservatoire-de-lempire-state-building-e-593/",
        "IT": "/it/biglietti-empire-state-building/biglietti-regolari-e-salta-la-coda-per-empire-state-building-e-593/",
        "DE": "/de/buchen-sie-empire-state-building-tickets-skip-the-line-zugang/empire-state-building-tickets-fur-die-aussichtsplattform-e-593/",
        "PT": "/pt/ingressos-empire-state-building/ingressos-observatorio-empire-state-building-e-593/",
        "NL": "/nl/boek-tickets-voor-het-empire-state-building-toegang-tot-de-wachtrij/empire-state-building-observatory-skip-the-line-tickets-e-593/"
      },
      "hasInstantConfirmation": true,
      "hasMobileTicket": true,
      "primaryCategory": {
        "id": "1",
        "name": "Tickets",
        "localeSpecificUrls": {
          "EN": "/tickets-new_york-ca-1~21553/",
          "ES": "/es/entradas-new_york-ca-1~21553/",
          "FR": "/fr/billets-new_york-ca-1~21553/",
          "IT": "/it/biglietti-new_york-ca-1~21553/",
          "DE": "/de/tickets-new_york-ca-1~21553/",
          "PT": "/pt/ingressos-new_york-ca-1~21553/",
          "NL": "/nl/tickets-new_york-ca-1~21553/"
        },
        "canonicalUrl": "https://www.headout.com/tickets-new_york-ca-1~21553/"
      },
      "primarySubCategory": {
        "id": "1007",
        "name": "Landmarks",
        "categoryId": "1",
        "canonicalUrl": "https://www.headout.com/landmarks-new_york-sc-1007~21553/",
        "localeSpecificUrls": {
          "EN": "/landmarks-new_york-sc-1007~21553/",
          "ES": "/es/principales-atracciones-new_york-sc-1007~21553/",
          "FR": "/fr/monuments-new_york-sc-1007~21553/",
          "IT": "/it/punti-di-interesse-new_york-sc-1007~21553/",
          "DE": "/de/wahrzeichen-new_york-sc-1007~21553/",
          "PT": "/pt/marcos-historicos-new_york-sc-1007~21553/",
          "NL": "/nl/bezienswaardigheden-new_york-sc-1007~21553/"
        }
      },
      "primaryCollection": {
        "id": "234",
        "name": "Empire State Building",
        "cityCode": "NEW_YORK",
        "localeSpecificUrls": {},
        "canonicalUrl": "https://www.headout.com/empire-state-building-tickets-c-234/"
      },
      "cancellationPolicy": {
        "cancellable": true,
        "cancellableUpToInMinutes": 1440
      },
      "reschedulePolicy": {
        "reschedulable": false,
        "reschedulableUpToInMinutes": null
      }
    },
    {
      "id": "16722",
      "name": "SUMMIT One Vanderbilt Tickets",
      "canonicalUrl": "https://www.headout.com/summit-one-vanderbilt/summit-one-vanderbilt-summit-experience-tickets-e-16722/?affiliate_code=n5cprT&utm_medium=affiliate&utm_source=",
      "city": {
        "code": "NEW_YORK",
        "name": "New York",
        "image": {
          "url": "//cdn-imgix.headout.com/media/images/ee075882083344be170ed38c8c76b4a1-new-york-city-01.jpeg"
        }
      },
      "media": [
        {
          "url": "https://cdn-imgix.headout.com/media/images/d8105cea5ffac3d7b626719b57856d96-16722Vanderbilt-0000s-0018-SUMMITOVAffinityDaytimeFather-DaughterCloseUp.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/e0f42ed5b1c6163fff9afb92b2a2b579-16722Vanderbilt-0000s-0016-SUMMITOneVanderbiltAffinity2.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/ae9ec1e1323fde409b4feea088fad2d6-16722Vanderbilt-0000s-0005-SUMMITOneVanderbiltUnity.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/0d0e3e2c66b6b7f4de9a3f9c5043627b-16722Vanderbilt-0000s-0009-SUMMITOVReflect.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/ea537004c0390a31240213121ae73e2b-16722Vanderbilt-0000s-0006-SUMMITOneVanderbiltAerialCloseUp.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/2cbc6ad100ede58f651bd25212d428d8-16722Vanderbilt-0000s-0003-SUMMITOVApre-sTerraceBar.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/b9e3d346f2089a1b4b738fc504555f46-16722Vanderbilt-0000s-0004-SUMMITOVApre-sCafe-SouthView.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/78f0895523e615963d3c5f297f833359-16722Vanderbilt-0000s-0012-SUMMITOneVanderbiltTranscendenceLounging.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/2868ac656026e65fe63573ff0fadbc52-16722Vanderbilt-0000s-0021-Transcendence-Sunset.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/4dcf25c322347255fe64e5d19bd00ca8-16722Vanderbilt-0000s-0011-SUMMITOneVanderbiltTranscendencePortal.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/97a3d307e00ddfa34ec8bbdca2130c24-16722Vanderbilt-0000s-0013-SUMMITOneVanderbiltTranscendenceatNight.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/15389840d6fd3520417f100458098c27-16722Vanderbilt-0000s-0015-SUMMITOneVanderbiltatNight3.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/9b0e785ceff45ece83c1dcc817f36c4d-16722Vanderbilt-0000s-0000-OneVanderbiltAerialatSunset.jpg",
          "type": "IMAGE"
        },
        {
          "url": "https://cdn-imgix.headout.com/media/images/e4c991ee65e4ef7390082a32b9c4e9d4-16722Vanderbilt-0000s-0010-OneVanderbiltatNight.jpg",
          "type": "IMAGE"
        }
      ],
      "startLocation": {
        "latitude": 40.75276565551758,
        "longitude": -73.97874450683594
      },
      "productType": "TOUR",
      "reviewsSummary": {
        "ratingsCount": 2246,
        "averageRating": 4.45
      },
      "listingPrice": {
        "type": "PER_PERSON",
        "currencyCode": "USD",
        "minimumPrice": {
          "originalPrice": 42.00,
          "finalPrice": 42.00
        },
        "bestDiscount": 0
      },
      "currency": {
        "code": "USD",
        "currencyName": "United States Dollar",
        "symbol": "US$",
        "localSymbol": "$",
        "precision": 2,
        "currency": "USD"
      },
      "localeSpecificUrls": {
        "EN": "/summit-one-vanderbilt/summit-one-vanderbilt-summit-experience-tickets-e-16722/",
        "ES": "/es/entradas-para-summit-one-vanderbilt-nueva-york-headout/entradas-summit-one-vanderbilt-e-16722/",
        "FR": "/fr/billets-pour-le-summit-one-vanderbilt-new-york-headout/billets-pour-le-summit-one-vanderbilt-e-16722/",
        "IT": "/it/biglietti-per-summit-one-vanderbilt-new-york-uscita-di-testa/biglietti-per-summit-one-vanderbilt-e-16722/",
        "DE": "/de/summit-one-vanderbilt-tickets-new-york-headout/summit-one-vanderbilt-tickets-e-16722/",
        "PT": "/pt/ingressos-summit-one-vanderbilt-nova-york-headout/ingressos-para-summit-one-vanderbilt-e-16722/",
        "NL": "/nl/tickets-voor-summit-one-vanderbilt-new-york/tickets-voor-summit-one-vanderbilt-e-16722/"
      },
      "hasInstantConfirmation": true,
      "hasMobileTicket": true,
      "primaryCategory": {
        "id": "1",
        "name": "Tickets",
        "localeSpecificUrls": {
          "EN": "/tickets-new_york-ca-1~21553/",
          "ES": "/es/entradas-new_york-ca-1~21553/",
          "FR": "/fr/billets-new_york-ca-1~21553/",
          "IT": "/it/biglietti-new_york-ca-1~21553/",
          "DE": "/de/tickets-new_york-ca-1~21553/",
          "PT": "/pt/ingressos-new_york-ca-1~21553/",
          "NL": "/nl/tickets-new_york-ca-1~21553/"
        },
        "canonicalUrl": "https://www.headout.com/tickets-new_york-ca-1~21553/"
      },
      "primarySubCategory": {
        "id": "1007",
        "name": "Landmarks",
        "categoryId": "1",
        "canonicalUrl": "https://www.headout.com/landmarks-new_york-sc-1007~21553/",
        "localeSpecificUrls": {
          "EN": "/landmarks-new_york-sc-1007~21553/",
          "ES": "/es/principales-atracciones-new_york-sc-1007~21553/",
          "FR": "/fr/monuments-new_york-sc-1007~21553/",
          "IT": "/it/punti-di-interesse-new_york-sc-1007~21553/",
          "DE": "/de/wahrzeichen-new_york-sc-1007~21553/",
          "PT": "/pt/marcos-historicos-new_york-sc-1007~21553/",
          "NL": "/nl/bezienswaardigheden-new_york-sc-1007~21553/"
        }
      },
      "primaryCollection": {
        "id": "3732",
        "name": "SUMMIT One Vanderbilt",
        "cityCode": "NEW_YORK",
        "localeSpecificUrls": {},
        "canonicalUrl": "https://www.headout.com/summit-one-vanderbilt-c-3732/"
      },
      "cancellationPolicy": {
        "cancellable": false,
        "cancellableUpToInMinutes": null
      },
      "reschedulePolicy": {
        "reschedulable": false,
        "reschedulableUpToInMinutes": null
      }
    }
  ],
  "nextUrl": "/api/public/v2/products?cityCode=NEW_YORK&offset=3&limit=3",
  "prevUrl": null,
  "total": 69,
  "nextOffset": 3
}

Notes

  • Ensure that all required parameters are included in your requests.
  • Use appropriate city and language codes as per your application requirements.
  • Pagination parameters (offset and limit) help in managing large datasets.
Authorizations:
apiKeyAuth
query Parameters
cityCode
required
string

The code of the city for which data is being requested.

collectionId
string

The ID of the collection.

categoryId
string

The ID of the category.

subCategoryId
string

The ID of the subcategory.

languageCode
string
Default: "EN"
Enum: "EN" "ES" "FR" "IT" "DE" "PT" "NL" "PL"

The language code for localization. Default is 'EN'.

currencyCode
string
Enum: "EUR" "GBP" "AED" "USD" "SGD" "AUD" "THB" "INR" "HKD" "KRW" "CAD" "JPY" "NZD" "CHF" "ZAR" "MYR" "BRL" "RUB" "SEK" "IDR" "ISK" "MOP" "CNY" "TWD" "MXN" "EGP" "QAR" "SAR" "DKK" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BSD" "BTN" "BWP" "BYR" "BZD" "CDF" "CLP" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DOP" "DZD" "ERN" "ETB" "FJD" "FKP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HNL" "HRK" "HTG" "HUF" "ILS" "IMP" "IQD" "IRR" "JEP" "JMD" "JOD" "KES" "KGS" "KHR" "KMF" "KPW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MRO" "MUR" "MVR" "MWK" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "RON" "RSD" "RWF" "SBD" "SCR" "SDG" "SHP" "SLL" "SOS" "SPL" "SRD" "SSP" "STD" "SVC" "SYP" "SZL" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TZS" "UAH" "UGX" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZMW" "ZWD"

The currency code for price information.

campaignName
string

The name of the campaign.

offset
string

The number of items to skip before starting to collect the result set.

limit
integer

The numbers of items to return.

Responses

Request samples

curl --location 'https://www.headout.com/api/public/v2/products?cityCode=<CITY_CODE>&collectionId=<COLLECTION_ID>&campaignName=<CAMPAIGN_NAME>&languageCode=<LANGUAGE_CODE>&currencyCode=<CURRENCY_CODE>&limit=<LIMIT>&offset=<OFFSET>' \
--header 'Headout-Auth: <YOUR_API_KEY>'

Response samples

Content type
application/json
{
  • "products": [
    ],
  • "nextUrl": "string",
  • "prevUrl": "string",
  • "total": 0,
  • "nextOffset": 0
}

Fetch product by ID

GET /products/{productId}

Overview

The Partner Products API v2 provides endpoints for accessing the products. This API is designed to facilitate partners in fetching relevant product information for different cities and languages.

Request

API Parameters

Mode Parameter Required / Optional Description Default Value
PATH productId Required Product ID to fetch the details for.
QUERY languageCode Optional Language code. EN
QUERY currencyCode Optional Currency code.
QUERY campaignName Optional Campaign name for filtering.
QUERY offset Optional Offset for pagination. 0
QUERY limit Optional Limit for pagination. 20

API Headers

Header Required / Optional Description
Headout-Auth Required The Authorization Token.

Response

Response Example
{
    "id": "19513",
    "name": "Edge Observation Deck Tickets: Timed Entry",
    "canonicalUrl": "https://www.headout.com/edge-observation-deck-tickets/tickets-to-edge-observation-deck-e-19513/?affiliate_code=kn70d3&utm_medium=affiliate&utm_source=N/A&ci=4&cm=kn70d3_Internal_API_Mohak+Nahta_#NA",
    "city": {
        "code": "NEW_YORK",
        "name": "New York",
        "image": {
            "url": "//cdn-imgix.headout.com/media/images/ee075882083344be170ed38c8c76b4a1-new-york-city-01.jpeg"
        }
    },
    "content": {
        "highlights": "- Start your experience with a spectacular multimedia journey through Hudson Yards’ history before soaring up to Edge NYC in a sky pod elevator.\r\n- Behold an unparalleled perspective of the entire borough of Manhattan and its breathtaking skyline from 1,100 feet up in the air.\r\n- Feel your pulse race as you explore the cutting-edge design with its angled glass wall, glass floor, and picturesque skyline steps.\r\n- Upgrade to the Flex Pass for anytime access or the Express Pass, which allows you to skip the line and enter anytime.\r\n- **Fun Fact:** The elevator ride to Edge takes only 52 seconds!",
        "inclusions": "- Timed entry to Edge Observation Deck\r\n\r\n**Access to:**\r\n\r\n- Indoor observation deck on Level 100\r\n    \r\n- Outdoor sky deck with angled walls\r\n    \r\n- Glass Floor, Skyline Steps, and Eastern Point\r\n\r\n- 15% discount at the Harry Potter Shop, New York (till April 30)\r\n    \r\n- Flexible entry (as per option selected)\r\n    \r\n- Priority access (as per option selected)",
        "exclusions": "",
        "shortSummary": "Visit Edge New York, home to the highest outdoor sky deck in the Western Hemisphere, to enjoy uninterrupted 360° views of the city.",
        "highlightsHtml": "<ul>\n<li>\n<p>Start your experience with a spectacular multimedia journey through Hudson Yards’ history before soaring up to Edge NYC in a sky pod elevator.</p>\n</li>\n<li>\n<p>Behold an unparalleled perspective of the entire borough of Manhattan and its breathtaking skyline from 1,100 feet up in the air.</p>\n</li>\n<li>\n<p>Feel your pulse race as you explore the cutting-edge design with its angled glass wall, glass floor, and picturesque skyline steps.</p>\n</li>\n<li>\n<p>Upgrade to the Flex Pass for anytime access or the Express Pass, which allows you to skip the line and enter anytime.</p>\n</li>\n<li>\n<p><strong>Fun Fact:</strong> The elevator ride to Edge takes only 52 seconds!</p>\n</li>\n</ul>",
        "inclusionsHtml": "<ul>\n<li>Timed entry to Edge Observation Deck</li>\n</ul>\n<p><strong>Access to:</strong></p>\n<ul>\n<li>\n<p>Indoor observation deck on Level 100</p>\n</li>\n<li>\n<p>Outdoor sky deck with angled walls</p>\n</li>\n<li>\n<p>Glass Floor, Skyline Steps, and Eastern Point</p>\n</li>\n<li>\n<p>Flexible entry (as per option selected)</p>\n</li>\n<li>\n<p>Priority access (as per option selected)</p>\n</li>\n</ul>",
        "exclusionsHtml": "<ul>\n<li>Hotel pickup</li>\n</ul>",
        "summaryHtml": "<h2>Your experience</h2>\n<p>Treat yourself to the thrill of standing over 1,100 feet in the air and soaking in magnificent views of Manhattan from Edge New York, a feat of architecture and engineering suspended above The Shops at Hudson Yards.</p>\n<p>Before your journey begins, explore Level 4 for an exciting multimedia experience that delves into how Hudson Yards was designed, constructed, and remains sustainably operated.</p>\n<h3>Up Above the World</h3>\n<p>Reach the dizzying heights at Edge NYC, and then take it one step further 80 feet out into the open air on the outdoor sky deck. Experience an exhilarating sense of freedom as you lean against glass walls that independently cantilever outwards over a bustling skyline below. Take a daring step now and stand on the glass floor, peering down 100 stories at the streets below.</p>\n<p>Edge's Eastern Point provides a unique experience of being surrounded by nothing but air, sky, and glass – it's an image you'll never forget! On the upper level, take in the skyline steps and gaze through the glass panels beyond the deck's edge.</p>",
        "faqHtml": "<h2>Know before you go</h2>\n<h3>What's not allowed</h3>\n<ul>\n<li>Prohibited items: Large bags are luggage</li>\n</ul>\n<h3>Accessibility</h3>\n<ul>\n<li>\n<p>Mobility: Wheelchair accessible</p>\n</li>\n<li>\n<p>Service animals are also permitted at Edge.</p>\n</li>\n</ul>\n<h3>Additional information</h3>\n<ul>\n<li>\n<p>Children under 12 must be accompanied by an adult during their visit.</p>\n</li>\n<li>\n<p>It's advised to dress according to the weather conditions.</p>\n</li>\n<li>\n<p>The last elevator ride is 50 minutes before closing.</p>\n</li>\n</ul>"
    },
    "media": [
        {
            "url": "https://cdn-imgix.headout.com/media/images/7dff2143faf0c49109d1aeca8a7dcd9f-19513-new-york-edge-observation-deck-adimssion-tickets--09.jpg",
            "type": "IMAGE"
        },
        {
            "url": "https://cdn-imgix.headout.com/media/images/4ef5529db833ea7a1798d495cee3ccb0-19513-TicketstoEdgeObservationDeck---004.jpg",
            "type": "IMAGE"
        },
        {
            "url": "https://cdn-imgix.headout.com/media/images/1af8d1d6a730714c2d1d74b385f96d2a-Exposure2.jpg",
            "type": "IMAGE"
        },
        {
            "url": "https://cdn-imgix.headout.com/media/images/f4a7393f8ff59bd7f20cab5bd990cb35-Edge-EasternPoint-.jpg",
            "type": "IMAGE"
        },
        {
            "url": "https://cdn-imgix.headout.com/media/images/b54f81b9a9fab93f9806c6b160486bc3-Edge-Indoorskydeck.jpg",
            "type": "IMAGE"
        },
        {
            "url": "https://cdn-imgix.headout.com/media/images/54e5cc8ddd2f7b343af7b4a492864c53-Edge-EasternOverhang.jpg",
            "type": "IMAGE"
        },
        {
            "url": "https://cdn-imgix.headout.com/media/images/eebd60c7f817ad0b1fc9b7e3d6aec9af-ShadesEdge.jpg",
            "type": "IMAGE"
        },
        {
            "url": "https://cdn-imgix.headout.com/media/images/0ab1680af58f609c5c3d4e7d7522c374-Edge-WesternOverhang.jpg",
            "type": "IMAGE"
        },
        {
            "url": "https://cdn-imgix.headout.com/media/images/134058522edd6d49f02c1284395f4cad-Edgeview.jpg",
            "type": "IMAGE"
        },
        {
            "url": "https://cdn-imgix.headout.com/media/images/e8f724125cba493d7859d5b64edcbb20-Edge-SouthView-.jpg",
            "type": "IMAGE"
        },
        {
            "url": "https://cdn-imgix.headout.com/media/images/b5218cbd84e05502edf7e3aff9f30ab6-Edge-Glassflooratnight.jpg",
            "type": "IMAGE"
        },
        {
            "url": "https://cdn-imgix.headout.com/media/images/e5f17edd85a120f7d5b114eb781551a9-Edge.jpg",
            "type": "IMAGE"
        }
    ],
    "startLocation": {
        "latitude": 40.753395080566406,
        "longitude": -74.00105285644531
    },
    "address": {
        "address": "30 Hudson Yards, New York, NY 10001, USA",
        "city": "NEW_YORK",
        "country": "United States",
        "postalCode": "10001",
        "latitude": 40.753395080566406,
        "longitude": -74.00105285644531
    },
    "productType": "ATTRACTION",
    "reviewsSummary": {
        "ratingsCount": 5743,
        "averageRating": 4.4
    },
    "listingPrice": {
        "type": "PER_PERSON",
        "currencyCode": "USD",
        "minimumPrice": {
            "originalPrice": 39.20,
            "finalPrice": 39.20
        },
        "bestDiscount": 0
    },
    "currency": {
        "code": "USD",
        "currencyName": "United States Dollar",
        "symbol": "US$",
        "localSymbol": "$",
        "precision": 2,
        "currency": "USD"
    },
    "localeSpecificUrls": {
        "EN": "/edge-observation-deck-tickets/tickets-to-edge-observation-deck-e-19513/",
        "ES": "/es/edge-nyc/entradas-a-la-plataforma-de-observacion-edge-e-19513/",
        "FR": "/fr/edge-nyc/billets-pour-le-pont-dobservation-edge-e-19513/",
        "IT": "/it/edge-nyc/biglietti-per-il-ponte-di-osservazione-di-edge-30-hudson-yards-e-19513/",
        "DE": "/de/rand-nyc/tickets-fur-die-aussichtsplattform-the-edge-e-19513/",
        "PT": "/pt/borda-nyc/ingressos-para-o-edge-observation-deck-e-19513/",
        "NL": "/nl/rand-nyc/tickets-voor-edge-observation-deck-e-19513/",
        "PL": "/pl/edge-observation-deck-tickets/tarasy-widokowe-edge-bilety-wstep-o-okreslonej-godzinie-e-19513/",
        "DA": "/da/edge-observation-deck-tickets/billetter-til-edge-observationsdk-tidsbestemt-adgang-e-19513/",
        "NO": "/no/edge-observation-deck-tickets/billetter-til-edge-observasjonsdekk-tidsbestemt-inngang-e-19513/",
        "RO": "/ro/edge-observation-deck-tickets/puncte-de-observatie-edge-acces-pe-ore-e-19513/",
        "RU": "/ru/edge-observation-deck-tickets/edge-e-19513/",
        "SV": "/sv/edge-observation-deck-tickets/biljetter-till-edge-observationsdack-tidsbestamd-entre-e-19513/",
        "TR": "/tr/edge-observation-deck-tickets/edge-gozlem-guvertesi-biletleri-zamanl-giris-e-19513/"
    },
    "hasInstantConfirmation": true,
    "hasMobileTicket": true,
    "primaryCategory": {
        "id": "1",
        "name": "Tickets",
        "localeSpecificUrls": {
            "EN": "/tickets-new_york-ca-1~21553/",
            "ES": "/es/entradas-new_york-ca-1~21553/",
            "FR": "/fr/billets-new_york-ca-1~21553/",
            "IT": "/it/biglietti-new_york-ca-1~21553/",
            "DE": "/de/tickets-new_york-ca-1~21553/",
            "PT": "/pt/ingressos-new_york-ca-1~21553/",
            "NL": "/nl/tickets-new_york-ca-1~21553/",
            "PL": "/pl/bilety-new_york-ca-1~21553/",
            "DA": "/da/billetter-new_york-ca-1~21553/",
            "NO": "/no/billetter-new_york-ca-1~21553/",
            "RO": "/ro/bilete-new_york-ca-1~21553/",
            "RU": "/ru/-new_york-ca-1~21553/",
            "SV": "/sv/biljetter-new_york-ca-1~21553/",
            "TR": "/tr/biletler-new_york-ca-1~21553/"
        },
        "canonicalUrl": "https://www.headout.com/tickets-new_york-ca-1~21553/"
    },
    "primarySubCategory": {
        "id": "1098",
        "name": "Observation Decks",
        "categoryId": "1",
        "canonicalUrl": "https://www.headout.com/observation-decks-new_york-sc-1098~21553/",
        "localeSpecificUrls": {
            "EN": "/observation-decks-new_york-sc-1098~21553/",
            "ES": "/es/plataformas-de-observacion-new_york-sc-1098~21553/",
            "FR": "/fr/ponts-dobservation-new_york-sc-1098~21553/",
            "IT": "/it/ponti-di-osservazione-new_york-sc-1098~21553/",
            "DE": "/de/aussichtsplattformen-new_york-sc-1098~21553/",
            "PT": "/pt/mirantes-new_york-sc-1098~21553/",
            "NL": "/nl/observatiedekken-new_york-sc-1098~21553/",
            "PL": "/pl/observation-decks-new_york-sc-1098~21553/",
            "DA": "/da/observation-decks-new_york-sc-1098~21553/",
            "NO": "/no/observation-decks-new_york-sc-1098~21553/",
            "RO": "/ro/observation-decks-new_york-sc-1098~21553/",
            "RU": "/ru/observation-decks-new_york-sc-1098~21553/",
            "SV": "/sv/observation-decks-new_york-sc-1098~21553/",
            "TR": "/tr/observation-decks-new_york-sc-1098~21553/"
        }
    },
    "primaryCollection": {
        "id": "4012",
        "name": "Edge NYC",
        "content": {
          "description": "Top picks in the city",
          "subtext": "Editor's choice"
        },
        "cityCode": "NEW_YORK",
        "localeSpecificUrls": {},
        "canonicalUrl": "https://www.headout.com/edge-observation-deck-tickets-c-4012/",
        "heroImage": {
          "url": "https://cdn/hero.jpg",
          "type": "IMAGE"
        },
        "cardImage": {
          "url": "https://cdn/card.jpg",
          "type": "IMAGE"
        }
    },
    "inventorySelectionType": "NORMAL",
    "variants": [
        {
            "id": 38164,
            "name": "General Admission: Timed Entry",
            "description": "- Entry to Edge Observatory Deck at the time slot selected\r\n- Access to:\r\n    - Indoor observation deck on Level 100\r\n    - Outdoor sky deck with angled walls\r\n    - Glass Floor, Skyline Steps, and Eastern Point",
            "duration": 60000,
            "inventoryType": "FIXED_START_FLEXIBLE_DURATION",
            "properties": {
              "LANGUAGE_CODE": "EN"
            },
            "propertiesV2": {
              "LANGUAGE_CODE": ["EN", "FR"]
            },
            "cutoffTimeInMinutes": 1440,
            "contentsHtml": "<p>Variant-specific info</p>",
            "pax": {
                "min": 1,
                "max": 10
            },
            "cashback": {
                "value": 0.0000,
                "type": "ABSOLUTE"
            },
            "ticketDeliveryInfoHtml": null,
            "cancellationPolicy": {
              "cancellable": false,
              "cancellableUpTo": null
            },
            "meetingPointInfo": {
              "latitude": "40.7541783",
              "longitude": "-74.0008789",
              "address": "30 Hudson Yards, New York, NY 10001, USA"
            },
            "inputFields": [
                {
                    "oldId": 119867,
                    "id": "NAME",
                    "name": "Full Name",
                    "dataType": "STRING",
                    "validation": {
                        "regex": "\\s*[^\\s]+\\s+[^\\s]+.*",
                        "minLength": 3,
                        "maxLength": 80,
                        "minValue": null,
                        "maxValue": null,
                        "required": true,
                        "values": null
                    },
                    "level": "PRIMARY_CUSTOMER"
                },
                {
                    "oldId": 119868,
                    "id": "EMAIL",
                    "name": "Email",
                    "dataType": "STRING",
                    "validation": {
                        "regex":"(?i)^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\ -\퟿\豈-\﷏\ﷰ-\￯]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])))\\.)+(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])))+(\\s*,\\s*((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\ -\퟿\豈-\﷏\ﷰ-\￯]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])))\\.)+(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])))+)*$",
                        "minLength": 5,
                        "maxLength": null,
                        "minValue": null,
                        "maxValue": null,
                        "required": true,
                        "values": null
                    },
                    "level": "PRIMARY_CUSTOMER"
                },
                {
                    "oldId": 119869,
                    "id": "PHONE",
                    "name": "Phone",
                    "dataType": "STRING",
                    "validation": {
                        "regex": null,
                        "minLength": null,
                        "maxLength": 40,
                        "minValue": null,
                        "maxValue": null,
                        "required": true,
                        "values": null
                    },
                    "level": "PRIMARY_CUSTOMER"
                },
                {
                    "oldId": 247089,
                    "id": "CUSTOM_247089",
                    "name": "Pickup Location",
                    "description": "Please select your pickup location",
                    "dataType": "LOCATION",
                    "validation": {
                        "regex": null,
                        "minLength": null,
                        "maxLength": null,
                        "minValue": null,
                        "maxValue": null,
                        "required": true,
                        "values": [
                            {
                                "id": 292744,
                                "latitude": 7.79685,
                                "longitude": 98.311755,
                                "address": "Rawai, Mueang Phuket District, Phuket 83100, Thailand",
                                "displayName": "2c Phuket Residence",
                                "timingConfig": {
                                "startTime": null,
                                "endTime": null,
                                "minPeriod": null,
                                "maxPeriod": null
                                },
                                "note": null
                            },
                            {
                                "id": 292745,
                                "latitude": 7.880448,
                                "longitude": 98.39225,
                                "address": "Phuket, Mueang Phuket District, Phuket 83000, Thailand",
                                "displayName": "A2 Home",
                                "timingConfig": {
                                "startTime": null,
                                "endTime": null,
                                "minPeriod": null,
                                "maxPeriod": null
                                },
                                "note": null
                            }
                        ],
                        "level": "PRIMARY_CUSTOMER"
                    }
                },
            ],
            "tags": [
                "OFFERS",
                "OFFERS14",
                "RECOMMENDED",
                "RECOMMENDED0",
                "SCHEDULE-300-DAYS"
            ],
            "properties": {},
            "propertiesV2": {}
        },
        {
            "id": 38165,
            "name": "Flex Pass: Enter Anytime",
            "description": "- Entry to Edge Observatory Deck anytime within operating hours\r\n- Access to:\r\n    - Indoor observation deck on Level 100\r\n    - Outdoor sky deck with angled walls\r\n    - Glass Floor, Skyline Steps, and Eastern Point",
            "duration": 43200000,
            "inventoryType": "FLEXIBLE_START_FLEXIBLE_DURATION",
            "pax": {
                "min": 1,
                "max": 10
            },
            "cashback": {
                "value": 0.0000,
                "type": "ABSOLUTE"
            },
            "ticketDeliveryInfoHtml": null,
            "cancellationPolicy": {
              "cancellable": true,
              "cancellableUpTo": 1440
            },
            "meetingPointInfo": {
              "latitude": "40.7541783000000100",
              "longitude": "-74.0008789000000000",
              "address": "30 Hudson Yards, New York, NY 10001, USA"
            },
            "inputFields": [
                {
                    "oldId": 119870,
                    "id": "NAME",
                    "name": "Full Name",
                    "dataType": "STRING",
                    "validation": {
                        "regex": "\\s*[^\\s]+\\s+[^\\s]+.*",
                        "minLength": 3,
                        "maxLength": 80,
                        "minValue": null,
                        "maxValue": null,
                        "required": true,
                        "values": null
                    },
                    "level": "PRIMARY_CUSTOMER"
                },
                {
                    "oldId": 119871,
                    "id": "EMAIL",
                    "name": "Email",
                    "dataType": "STRING",
                    "validation": {
                        "regex":"(?i)^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\ -\퟿\豈-\﷏\ﷰ-\￯]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])))\\.)+(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])))+(\\s*,\\s*((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\ -\퟿\豈-\﷏\ﷰ-\￯]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])))\\.)+(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])))+)*$",
                        "minLength": 5,
                        "maxLength": null,
                        "minValue": null,
                        "maxValue": null,
                        "required": true,
                        "values": null
                    },
                    "level": "PRIMARY_CUSTOMER"
                },
                {
                    "oldId": 119872,
                    "id": "PHONE",
                    "name": "Phone",
                    "dataType": "STRING",
                    "validation": {
                        "regex": null,
                        "minLength": null,
                        "maxLength": 40,
                        "minValue": null,
                        "maxValue": null,
                        "required": true,
                        "values": null
                    },
                    "level": "PRIMARY_CUSTOMER"
                }
            ],
            "tags": [
                "OFFERS",
                "OFFERS14",
                "RECOMMENDED",
                "RECOMMENDED0",
                "SCHEDULE-300-DAYS"
            ],
            "properties": {},
            "propertiesV2": {}
        },
        {
            "id": 55003,
            "name": "Express Pass: Skip-the-Line & Enter Anytime",
            "description": "- Priority elevator access\r\n- Priority entry to Edge Observatory Deck anytime within operating hours\r\n- Access to:\r\n    - Indoor observation deck on Level 100\r\n    - Outdoor sky deck with angled walls\r\n    - Glass Floor, Skyline Steps, and Eastern Point",
            "duration": 0,
            "inventoryType": "FLEXIBLE_START_FLEXIBLE_DURATION",
            "pax": {
                "min": 1,
                "max": 10
            },
            "cashback": {
                "value": 0.0000,
                "type": "PERCENTAGE"
            },
            "ticketDeliveryInfoHtml": null,
            "cancellationPolicy": {
              "cancellable": true,
              "cancellableUpTo": 1440
            },
            "meetingPointInfo": {
              "latitude": null,
              "longitude": null,
              "address": null
            },
            "inputFields": [
                {
                    "oldId": 177676,
                    "id": "NAME",
                    "name": "Full Name",
                    "dataType": "STRING",
                    "validation": {
                        "regex": "\\s*[^\\s]+\\s+[^\\s]+.*",
                        "minLength": 3,
                        "maxLength": 80,
                        "minValue": null,
                        "maxValue": null,
                        "required": true,
                        "values": null
                    },
                    "level": "PRIMARY_CUSTOMER"
                },
                {
                    "oldId": 177677,
                    "id": "EMAIL",
                    "name": "Email",
                    "dataType": "STRING",
                    "validation": {
                        "regex":"(?i)^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\ -\퟿\豈-\﷏\ﷰ-\￯]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])))\\.)+(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])))+(\\s*,\\s*((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\ -\퟿\豈-\﷏\ﷰ-\￯]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])))\\.)+(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])))+)*$",
                        "minLength": 5,
                        "maxLength": null,
                        "minValue": null,
                        "maxValue": null,
                        "required": true,
                        "values": null
                    },
                    "level": "PRIMARY_CUSTOMER"
                },
                {
                    "oldId": 177678,
                    "id": "PHONE",
                    "name": "Phone",
                    "dataType": "STRING",
                    "validation": {
                        "regex": null,
                        "minLength": null,
                        "maxLength": 40,
                        "minValue": null,
                        "maxValue": null,
                        "required": true,
                        "values": null
                    },
                    "level": "PRIMARY_CUSTOMER"
                }
            ],
            "tags": [],
            "properties": {},
            "propertiesV2": {}
        },
        {
            "id": 75587,
            "name": "General Admission: Timed Entry + Champagne Experience",
            "description": "- A glass of bubbly\r\n- Entry to Edge Observatory Deck at the time slot selected\r\n- Access to:\r\n    - Indoor observation deck on Level 100\r\n    - Outdoor sky deck with angled walls\r\n    - Glass Floor, Skyline Steps, and Eastern Point",
            "duration": 0,
            "inventoryType": "FIXED_START_FLEXIBLE_DURATION",
            "pax": {
                "min": 1,
                "max": 10
            },
            "cashback": {
                "value": 0.0000,
                "type": "PERCENTAGE"
            },
            "ticketDeliveryInfoHtml": null,
            "cancellationPolicy": {
              "cancellable": true,
              "cancellableUpTo": 1440
            },
            "meetingPointInfo": {
              "latitude": null,
              "longitude": null,
              "address": ""
            },
            "inputFields": [
                {
                    "oldId": 245554,
                    "id": "NAME",
                    "name": "Full Name",
                    "dataType": "STRING",
                    "validation": {
                        "regex": "\\s*[^\\s]+\\s+[^\\s]+.*",
                        "minLength": 3,
                        "maxLength": 80,
                        "minValue": null,
                        "maxValue": null,
                        "required": true,
                        "values": null
                    },
                    "level": "PRIMARY_CUSTOMER"
                },
                {
                    "oldId": 245555,
                    "id": "EMAIL",
                    "name": "Email",
                    "dataType": "STRING",
                    "validation": {
                        "regex":"(?i)^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\ -\퟿\豈-\﷏\ﷰ-\￯]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])))\\.)+(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])))+(\\s*,\\s*((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\/=\\?\\^_`{\\|}~]|[\ -\퟿\豈-\﷏\ﷰ-\￯])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\ -\퟿\豈-\﷏\ﷰ-\￯]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|\\d|[\ -\퟿\豈-\﷏\ﷰ-\￯])))\\.)+(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])|(([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])([a-z]|\\d|-|\\.|_|~|[\ -\퟿\豈-\﷏\ﷰ-\￯])*([a-z]|[\ -\퟿\豈-\﷏\ﷰ-\￯])))+)*$",
                        "minLength": 5,
                        "maxLength": null,
                        "minValue": null,
                        "maxValue": null,
                        "required": true,
                        "values": null
                    },
                    "level": "PRIMARY_CUSTOMER"
                },
                {
                    "oldId": 245556,
                    "id": "PHONE",
                    "name": "Phone",
                    "dataType": "STRING",
                    "validation": {
                        "regex": null,
                        "minLength": null,
                        "maxLength": 40,
                        "minValue": null,
                        "maxValue": null,
                        "required": true,
                        "values": null
                    },
                    "level": "PRIMARY_CUSTOMER"
                }
            ],
            "tags": [],
            "properties": {},
            "propertiesV2": {}
        }
    ],
    "inventorySelectionType": "NORMAL",
    "cancellationPolicy": {
        "cancellable": false,
        "cancellableUpToInMinutes": null
    },
    "reschedulePolicy": {
        "reschedulable": false,
        "reschedulableUpToInMinutes": null
    },
    "pois": [
        {
          "name": "SUMMIT One Vanderbilt",
          "operatingSchedules": [
            {
              "startDate": "2025-01-01",
              "endDate": "2025-12-31",
              "scheduleName": "annual operating schedule",
              "operatingDaySchedules": [
                {
                  "dayOfWeek": "MONDAY",
                  "openingTime": "09:00",
                  "closingTime": "00:00",
                  "lastEntryTime": "22:30",
                  "closed": false
                },
                {
                  "dayOfWeek": "TUESDAY",
                  "openingTime": "09:00",
                  "closingTime": "00:00",
                  "lastEntryTime": "22:30",
                  "closed": false
                },
                {
                  "dayOfWeek": "WEDNESDAY",
                  "openingTime": "09:00",
                  "closingTime": "00:00",
                  "lastEntryTime": "22:30",
                  "closed": false
                },
                {
                  "dayOfWeek": "THURSDAY",
                  "openingTime": "09:00",
                  "closingTime": "00:00",
                  "lastEntryTime": "22:30",
                  "closed": false
                },
                {
                  "dayOfWeek": "FRIDAY",
                  "openingTime": "09:00",
                  "closingTime": "00:00",
                  "lastEntryTime": "22:30",
                  "closed": false
                },
                {
                  "dayOfWeek": "SATURDAY",
                  "openingTime": "09:00",
                  "closingTime": "00:00",
                  "lastEntryTime": "22:30",
                  "closed": false
                },
                {
                  "dayOfWeek": "SUNDAY",
                  "openingTime": "09:00",
                  "closingTime": "00:00",
                  "lastEntryTime": "22:30",
                  "closed": false
                }
              ]
            }
          ],
          "holidays": [],
          "freeEntryDays": []
        },
        {
          "name": "Vessel",
          "operatingSchedules": [
            {
              "startDate": "2025-01-01",
              "endDate": "2025-12-31",
              "scheduleName": "Every Year",
              "operatingDaySchedules": [
                {
                  "dayOfWeek": "MONDAY",
                  "openingTime": "11:00",
                  "closingTime": "19:00",
                  "lastEntryTime": "18:00",
                  "closed": false
                },
                {
                  "dayOfWeek": "TUESDAY",
                  "openingTime": "11:00",
                  "closingTime": "19:00",
                  "lastEntryTime": "18:00",
                  "closed": false
                },
                {
                  "dayOfWeek": "WEDNESDAY",
                  "openingTime": "11:00",
                  "closingTime": "19:00",
                  "lastEntryTime": "18:00",
                  "closed": false
                },
                {
                  "dayOfWeek": "THURSDAY",
                  "openingTime": "11:00",
                  "closingTime": "19:00",
                  "lastEntryTime": "18:00",
                  "closed": false
                },
                {
                  "dayOfWeek": "FRIDAY",
                  "openingTime": "11:00",
                  "closingTime": "19:00",
                  "lastEntryTime": "18:00",
                  "closed": false
                },
                {
                  "dayOfWeek": "SATURDAY",
                  "openingTime": "11:00",
                  "closingTime": "19:00",
                  "lastEntryTime": "18:00",
                  "closed": false
                },
                {
                  "dayOfWeek": "SUNDAY",
                  "openingTime": "11:00",
                  "closingTime": "19:00",
                  "lastEntryTime": "18:00",
                  "closed": false
                }
              ]
            }
          ],
          "holidays": [],
          "freeEntryDays": []
        }
    ],
    "cutoffTimeInMinutes": 0
}

Notes

  • Ensure that all required parameters are included in your requests.
  • Use appropriate language codes as per your application requirements.
Authorizations:
apiKeyAuth
query Parameters
languageCode
string
Default: "EN"
Enum: "EN" "ES" "FR" "IT" "DE" "PT" "NL" "PL"

The language code for localization. Default is 'EN'.

currencyCode
string
Enum: "EUR" "GBP" "AED" "USD" "SGD" "AUD" "THB" "INR" "HKD" "KRW" "CAD" "JPY" "NZD" "CHF" "ZAR" "MYR" "BRL" "RUB" "SEK" "IDR" "ISK" "MOP" "CNY" "TWD" "MXN" "EGP" "QAR" "SAR" "DKK" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BSD" "BTN" "BWP" "BYR" "BZD" "CDF" "CLP" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DOP" "DZD" "ERN" "ETB" "FJD" "FKP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HNL" "HRK" "HTG" "HUF" "ILS" "IMP" "IQD" "IRR" "JEP" "JMD" "JOD" "KES" "KGS" "KHR" "KMF" "KPW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MRO" "MUR" "MVR" "MWK" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "RON" "RSD" "RWF" "SBD" "SCR" "SDG" "SHP" "SLL" "SOS" "SPL" "SRD" "SSP" "STD" "SVC" "SYP" "SZL" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TZS" "UAH" "UGX" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZMW" "ZWD"

The currency code for price information.

campaignName
string

The name of the campaign.

Responses

Request samples

curl --location 'https://www.headout.com/api/public/v2/products/<PRODUCT_ID>?campaignName=<CAMPAIGN_NAME>&languageCode=<LANGUAGE_CODE>&currencyCode=<CURRENCY_CODE>' \
--header 'Headout-Auth: <YOUR_API_KEY>'

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "canonicalUrl": "string",
  • "content": {
    },
  • "city": {
    },
  • "media": [
    ],
  • "startLocation": {
    },
  • "address": {
    },
  • "productType": "string",
  • "reviewsSummary": {
    },
  • "listingPrice": {
    },
  • "currency": {
    },
  • "localeSpecificUrls": {
    },
  • "hasInstantConfirmation": true,
  • "hasMobileTicket": true,
  • "primaryCategory": {
    },
  • "primarySubCategory": {
    },
  • "primaryCollection": {
    },
  • "variants": [
    ],
  • "cancellationPolicy": {
    },
  • "reschedulePolicy": {
    },
  • "pois": [
    ],
  • "cutoffTimeInMinutes": 0,
  • "inventorySelectionType": "string"
}

Category

Category operations

List all categories

GET /categories

Overview

The Partner Categories API v2 provides endpoints for accessing the categories. This API is designed to facilitate partners in fetching relevant data for different cities and languages.

Request

API Parameters

Parameter Required / Optional Description Default Value
cityCode Required The city code to fetch categories for.
languageCode Optional Language code. EN

API Headers

Header Required / Optional Description
Headout-Auth Required The Authorization Token.

Response

Response Example
{
  "categories": [
    {
      "id": "1",
      "name": "Tickets",
      "localeSpecificUrls": {
        "EN": "/tickets-new_york-ca-1~21553/",
        "ES": "/es/entradas-new_york-ca-1~21553/",
        "FR": "/fr/billets-new_york-ca-1~21553/",
        "IT": "/it/biglietti-new_york-ca-1~21553/",
        "DE": "/de/tickets-new_york-ca-1~21553/",
        "PT": "/pt/ingressos-new_york-ca-1~21553/",
        "NL": "/nl/tickets-new_york-ca-1~21553/"
      },
      "canonicalUrl": "https://www.headout.com/tickets-new_york-ca-1~21553/"
    },
    {
      "id": "2",
      "name": "Tours",
      "localeSpecificUrls": {
        "EN": "/tours-new_york-ca-2~21553/",
        "ES": "/es/tours-new_york-ca-2~21553/",
        "FR": "/fr/visites-new_york-ca-2~21553/",
        "IT": "/it/tour-new_york-ca-2~21553/",
        "DE": "/de/touren-new_york-ca-2~21553/",
        "PT": "/pt/tours-new_york-ca-2~21553/",
        "NL": "/nl/tours-new_york-ca-2~21553/"
      },
      "canonicalUrl": "https://www.headout.com/tours-new_york-ca-2~21553/"
    },
    {
      "id": "3",
      "name": "Transportation",
      "localeSpecificUrls": {
        "EN": "/transportation-new_york-ca-3~21553/",
        "ES": "/es/traslados-new_york-ca-3~21553/",
        "FR": "/fr/transport-new_york-ca-3~21553/",
        "IT": "/it/trasferimenti-new_york-ca-3~21553/",
        "DE": "/de/transfer-new_york-ca-3~21553/",
        "PT": "/pt/transporte-new_york-ca-3~21553/",
        "NL": "/nl/vervoer-new_york-ca-3~21553/"
      },
      "canonicalUrl": "https://www.headout.com/transportation-new_york-ca-3~21553/"
    }
  ]
}

Notes

  • Ensure that all required parameters are included in your requests.
  • Use appropriate city and language codes as per your application requirements.
Authorizations:
apiKeyAuth
query Parameters
cityCode
required
string

The code of the city for which data is being requested.

languageCode
string
Default: "EN"
Enum: "EN" "ES" "FR" "IT" "DE" "PT" "NL" "PL"

The language code for localization. Default is 'EN'.

Responses

Request samples

curl --location 'https://www.headout.com/api/public/v2/categories?cityCode=<CITY_CODE>&languageCode=<LANGUAGE_CODE>' \
--header 'Headout-Auth: <YOUR_API_KEY>'

Response samples

Content type
application/json
{
  • "categories": [
    ]
}

Subcategory

Subcategory operations

List all subcategories

GET /subcategories

Overview

The Partner Subcategories API v2 provides endpoints for accessing the subcategories. This API is designed to facilitate partners in fetching relevant data for different cities and languages.

Request

API Parameters

Parameter Required / Optional Description Default Value
cityCode Required The city code to fetch categories for.
languageCode Optional Language code. EN

API Headers

Header Required / Optional Description
Headout-Auth Required The Authorization Token.

Response

Object: SubCategory

Response Example
{
  "subCategories": [
    {
      "id": "1002",
      "name": "Museums",
      "categoryId": "1",
      "canonicalUrl": "https://www.headout.com/museums-new_york-sc-1002~21553/",
      "localeSpecificUrls": {
        "EN": "/museums-new_york-sc-1002~21553/",
        "ES": "/es/museos-new_york-sc-1002~21553/",
        "FR": "/fr/musees-new_york-sc-1002~21553/",
        "IT": "/it/musei-new_york-sc-1002~21553/",
        "DE": "/de/museen-new_york-sc-1002~21553/",
        "PT": "/pt/museus-new_york-sc-1002~21553/",
        "NL": "/nl/musea-new_york-sc-1002~21553/"
      }
    },
    {
      "id": "1006",
      "name": "Religious Sites",
      "categoryId": "1",
      "canonicalUrl": "https://www.headout.com/religious-sites-new_york-sc-1006~21553/",
      "localeSpecificUrls": {
        "EN": "/religious-sites-new_york-sc-1006~21553/",
        "ES": "/es/sitios-religiosos-new_york-sc-1006~21553/",
        "FR": "/fr/site-religieux-new_york-sc-1006~21553/",
        "IT": "/it/siti-religiosi-new_york-sc-1006~21553/",
        "DE": "/de/religiose-statten-new_york-sc-1006~21553/",
        "PT": "/pt/locais-religiosos-new_york-sc-1006~21553/",
        "NL": "/nl/religieuze-plaatsen-new_york-sc-1006~21553/"
      }
    },
    {
      "id": "1007",
      "name": "Landmarks",
      "categoryId": "1",
      "canonicalUrl": "https://www.headout.com/landmarks-new_york-sc-1007~21553/",
      "localeSpecificUrls": {
        "EN": "/landmarks-new_york-sc-1007~21553/",
        "ES": "/es/principales-atracciones-new_york-sc-1007~21553/",
        "FR": "/fr/monuments-new_york-sc-1007~21553/",
        "IT": "/it/punti-di-interesse-new_york-sc-1007~21553/",
        "DE": "/de/wahrzeichen-new_york-sc-1007~21553/",
        "PT": "/pt/marcos-historicos-new_york-sc-1007~21553/",
        "NL": "/nl/bezienswaardigheden-new_york-sc-1007~21553/"
      }
    }
  ]
}

Error Handling

Refer to this document for handling errors in the APIs.

Notes

  • Ensure that all required parameters are included in your requests.
  • Use appropriate city and language codes as per your application requirements.
Authorizations:
apiKeyAuth
query Parameters
cityCode
required
string

The code of the city for which data is being requested.

languageCode
string
Default: "EN"
Enum: "EN" "ES" "FR" "IT" "DE" "PT" "NL" "PL"

The language code for localization. Default is 'EN'.

Responses

Request samples

curl --location 'https://www.headout.com/api/public/v2/subcategories?cityCode=<CITY_CODE>&languageCode=<LANGUAGE_CODE>' \
--header 'Headout-Auth: <YOUR_API_KEY>'

Response samples

Content type
application/json
{
  • "subCategories": [
    ]
}

Inventory

Inventory operations

List inventory by tour

GET /inventory/list-by/tour

Get the available inventory for a tour within a specified date range.

Request

MODE KEY TYPE OPTIONAL DESCRIPTION
QUERY tourId string no The unique identifier of the tour for which the inventory needs to be fetched.
QUERY startDateTime string no The start date time from which the inventory needs to be fetched. Format: fm-date-time. Ref: inventory.startDateTime
QUERY endDateTime string no The end date time till which the inventory needs to be fetched. Format: fm-date-time. Ref: inventory.startDateTime
QUERY currencyCode string no The currency in which pricing information will be returned. Eg: EUR, USD, GBP. Ref: https://en.wikipedia.org/wiki/ISO_4217
QUERY offset string yes The offset for pagination.
QUERY limit int yes The limit for pagination.

Response

Response Example
{
    "items": [
        {
            "id": "450931848",
            "startDateTime": "2025-07-25T11:30:00",
            "endDateTime": "2025-07-25T18:30:00",
            "availability": "UNLIMITED",
            "remaining": 6,
            "pricing": {
                "persons": [
                    {
                        "type": "ADULT",
                        "name": "Adult",
                        "description": "Above 8 Years",
                        "ageFrom": null,
                        "ageTo": null,
                        "price": 38.04,
                        "originalPrice": 43.29,
                        "netPrice": 38.04,
                        "headoutSellingPrice": 43.29,
                        "remaining": 200,
                        "availability": "LIMITED",
                        "paxRange": { "min": null, "max": 8 }
                    },
                    {
                        "type": "CHILD",
                        "name": "Child",
                        "description": null,
                        "ageFrom": 3,
                        "ageTo": 8,
                        "price": 29.66,
                        "originalPrice": 33.76,
                        "netPrice": 29.66,
                        "headoutSellingPrice": 33.76,
                        "remaining": 200,
                        "availability": "LIMITED",
                        "paxRange": { "min": null, "max": 8 }
                    }
                ],
                "groups": [
                    {
                        "size": 4,
                        "price": 120.00,
                        "originalPrice": 140.00,
                        "netPrice": 118.00,
                        "headoutSellingPrice": 120.00,
                        "remaining": 2,
                        "availability": "LIMITED"
                    }
                ]
            }
        }
    ],
    "nextUrl": "https://sandbox.api.dev-headout.com:443/api/public/v2/inventory/list-by/tour?tourId=52850&startDateTime=2025-07-25T00%3A00&endDateTime=2025-07-27T00%3A00&currencyCode=EUR&offset=1&limit=1",
    "prevUrl": null,
    "total": 28,
    "nextOffset": 1
}
Authorizations:
apiKeyAuth
query Parameters
tourId
required
string

The unique identifier of the tour

startDateTime
required
string <date-time>

Start date and time in ISO 8601 format (URL encoded)

endDateTime
required
string <date-time>

End date and time in ISO 8601 format (URL encoded)

currencyCode
string
Enum: "EUR" "GBP" "AED" "USD" "SGD" "AUD" "THB" "INR" "HKD" "KRW" "CAD" "JPY" "NZD" "CHF" "ZAR" "MYR" "BRL" "RUB" "SEK" "IDR" "ISK" "MOP" "CNY" "TWD" "MXN" "EGP" "QAR" "SAR" "DKK" "AFN" "ALL" "AMD" "ANG" "AOA" "ARS" "AWG" "AZN" "BAM" "BBD" "BDT" "BGN" "BHD" "BIF" "BMD" "BND" "BOB" "BSD" "BTN" "BWP" "BYR" "BZD" "CDF" "CLP" "COP" "CRC" "CUC" "CUP" "CVE" "CZK" "DJF" "DOP" "DZD" "ERN" "ETB" "FJD" "FKP" "GEL" "GGP" "GHS" "GIP" "GMD" "GNF" "GTQ" "GYD" "HNL" "HRK" "HTG" "HUF" "ILS" "IMP" "IQD" "IRR" "JEP" "JMD" "JOD" "KES" "KGS" "KHR" "KMF" "KPW" "KWD" "KYD" "KZT" "LAK" "LBP" "LKR" "LRD" "LSL" "LTL" "LVL" "LYD" "MAD" "MDL" "MGA" "MKD" "MMK" "MNT" "MRO" "MUR" "MVR" "MWK" "MZN" "NAD" "NGN" "NIO" "NOK" "NPR" "OMR" "PAB" "PEN" "PGK" "PHP" "PKR" "PLN" "PYG" "RON" "RSD" "RWF" "SBD" "SCR" "SDG" "SHP" "SLL" "SOS" "SPL" "SRD" "SSP" "STD" "SVC" "SYP" "SZL" "TJS" "TMT" "TND" "TOP" "TRY" "TTD" "TVD" "TZS" "UAH" "UGX" "UYU" "UZS" "VEF" "VND" "VUV" "WST" "XAF" "XCD" "XDR" "XOF" "XPF" "YER" "ZMW" "ZWD"

The currency code for price information.

offset
string

The number of items to skip before starting to collect the result set.

limit
integer

The numbers of items to return.

Responses

Request samples

curl --location 'https://www.headout.com/api/public/v2/inventory/list-by/tour?tourId=52850&startDateTime=2025-07-25T00%3A00&endDateTime=2025-07-27T00%3A00&currencyCode=EUR&offset=0&limit=1' \
--header 'Headout-Auth: <YOUR_API_KEY>'

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "nextUrl": "string",
  • "prevUrl": "string",
  • "total": 0,
  • "nextOffset": 0
}

Webhooks

Webhook operations

Create webhook configuration

Booking Status Webhooks

Overview

Booking status webhooks provide real-time notifications when booking statuses change in the Headout system. Receive instant updates for booking confirmations, cancellations, and completions.

Booking Status Lifecycle

Status Definitions

Status Description Webhook Trigger
PENDING Booking is pending fulfillment ✅ On capture
COMPLETED Booking completed successfully ✅ On completion
CANCELLED Booking has been cancelled ✅ On cancellation
FAILED Booking failed due to payment or system errors ✅ On failure

Webhook Payload Structure

Standard Payload

{
  "bookingId": 123456789,
  "status": "COMPLETED",
  "eventTimestamp": "2024-01-15T10:30:00"
}

Payload Fields

Field Type Required Description
bookingId number Unique booking identifier (corresponds to itinerary ID)
status string Current booking status from ItineraryStatus enum
eventTimestamp string ISO 8601 timestamp when status change occurred (local time)

Implementation Guide

Webhook Configuration

  • Configure your webhook endpoint URL through the Headout Partner API
  • Ensure your endpoint accepts POST requests with JSON payload
  • Return HTTP 2xx status codes for successful processing
  • Return HTTP 5xx for temporary failures (will trigger retries)
  • Return HTTP 4xx for permanent failures (no retries)

Endpoint Requirements

  • HTTPS Only: All webhook URLs must use HTTPS protocol
  • Response Time: Respond within 30 seconds to avoid timeouts
  • Idempotency: Handle potential duplicate deliveries gracefully
  • Error Handling: Implement proper error responses

Example Payloads

Booking Captured
{
  "bookingId": 987654321,
  "status": "PENDING",
  "eventTimestamp": "2024-01-15T14:22:33"
}
Booking Completed
{
  "bookingId": 987654321,
  "status": "COMPLETED",
  "eventTimestamp": "2024-01-15T14:25:18"
}
Booking Cancelled
{
  "bookingId": 987654321,
  "status": "CANCELLED",
  "eventTimestamp": "2024-01-16T09:15:42"
}
Booking Failed
{
  "bookingId": 987654321,
  "status": "FAILED",
  "eventTimestamp": "2024-01-15T14:23:05"
}

Best Practices

Performance

  • Respond to webhooks within 30 seconds
  • Process webhooks asynchronously when possible
  • Use appropriate HTTP status codes

Notes

  • Webhooks are retried up to 4 times with exponential backoff
  • Use the Partner API to manage webhook configurations
  • Contact support for webhook delivery troubleshooting
Authorizations:
apiKeyAuth
Request Body schema: application/json
required
url
required
string <uri> [ 1 .. 2048 ] characters ^https://.*

HTTPS URL where webhooks will be delivered (must use HTTPS)

enabled
boolean
Default: true

Whether the webhook is active

Responses

Request samples

Content type
application/json

Response samples

Content type
application/json
{
  • "timestamp": 1756977070403,
  • "message": "Webhook configuration created successfully"
}

Get webhook configuration

Retrieve your current webhook configuration

Authorizations:
apiKeyAuth

Responses

Request samples

curl --location 'https://www.headout.com/api/public/v2/webhooks/' \
--header 'Headout-Auth: <YOUR_API_KEY>'

Response samples

Content type
application/json
{ }

Update webhook configuration

Update your existing webhook configuration

Authorizations:
apiKeyAuth
Request Body schema: application/json
required
url
required
string <uri> ^https://.*

HTTPS URL where webhooks will be delivered (must use HTTPS)

enabled
boolean
Default: true

Whether the webhook is active

Responses

Request samples

Content type
application/json

Response samples

Content type
application/json
{
  • "timestamp": 1756977149760,
  • "message": "Webhook configuration updated successfully"
}

Glossary

This section defines standard ENUMs and error codes used across Headout APIs. Developers should use these as reference values when integrating.

Overview

The Headout API uses standardized ENUMs and error codes to ensure consistent data structures and error handling across all endpoints. This glossary serves as a comprehensive reference for developers implementing Headout API integrations.

ENUMs

Language Codes

Supported language codes for API localization.

Code Language
EN English
ES Spanish
FR French
IT Italian
DE German
PT Portuguese
NL Dutch
PL Polish

Currency Codes

Supported currencies follow the ISO 4217 standard. Any currency listed in the ISO 4217 specification is supported.

City Codes

Supported cities are returned dynamically by the City API. This list may change over time, so always handle cities dynamically rather than hardcoding values.

Media Types

Supported media types in product details.

Type Description
IMAGE Image media
VIDEO Video media
PDF PDF document

Product Types

Supported product types within product details.

Type
TOUR
ACTIVITY
EVENT
ATTRACTION
TRANSFER
AIRPORT_TRANSFER
ADD_ON

Listing Price Types

Pricing types used in product listings.

Type Description
PER_PERSON Price per individual person
PER_GROUP Price for entire group

Inventory Types

Variant inventory types for booking management.

Type Description
FIXED_START_FIXED_DURATION Fixed start time and duration
FIXED_START_FLEXIBLE_DURATION Fixed start time, flexible duration
FLEXIBLE_START_FIXED_DURATION Flexible start time, fixed duration
FLEXIBLE_START_FLEXIBLE_DURATION Flexible start time and duration

Input Field Types

Input field types for variant-specific customer information.

Field Description
NAME Customer name
EMAIL Email address
PHONE Phone number
ADDRESS Address information
AGE_ Age-related fields
COUNTRY_ Country information
DATE_OF_BIRTH_ Date of birth
DROP_OFF_LOCATION_ Drop-off location
FULL_NAME_ Full name fields
GENDER_ Gender information
IDENTITY_DOCUMENT_DETAILS_ ID document details
LANGUAGE_ Language preference
NATIONALITY_ Nationality
PASSPORT_DETAILS_ Passport information
PHYSICAL_INFORMATION_-_HEIGHT_ Physical characteristics
PICK_UP_DETAILS_ Pickup information
PICKUP_LOCATION Pickup location
CUSTOM_* Custom dynamic fields provided by supply partners

Note: Many more values may appear dynamically from supply partners. Always handle unknown values gracefully.

Input Field Data Types

Different Data types an inputField can have.

Data type Description
STRING Free-form text value (e.g., John Doe).
ENUM One of a predefined set of literals (e.g., MALE, FEMALE, OTHER). Enum values can be found in the values array of the input field.
BOOL Boolean flag (e.g., true or false).
INT Whole-number value (e.g., 25).
FLOAT Decimal number for values (e.g., 25.50).
LOCATION String of pickup address (e.g., 123 Main St, Anytown, USA).

Person Types

Person types valid for booking variants.

Type
ADULT
CHILD
INFANT
SENIOR
GENERAL
STUDENT
YOUTH

Note: Additional types such as RESIDENT, NON_EUR_CHILD, etc. may appear dynamically.

Cashback Types

Cashback value types for promotional offers.

Type Description
PERCENTAGE Percentage-based cashback
ABSOLUTE Fixed amount cashback

Inventory Selection Types

Inventory selection types for booking interfaces.

Type Description
NORMAL Standard selection interface
SEATMAP Seat map selection interface

Inventory Availability

Availability status within inventory slots.

Status Description
UNLIMITED Unlimited availability
LIMITED Limited availability
CLOSED No availability

Booking Status

Booking lifecycle statuses.

Status Description
UNCAPTURED Booking created but not yet captured
PENDING Captured, waiting for fulfillment
COMPLETED Booking fulfilled successfully
CANCELLED Booking was cancelled
FAILED Booking failed (payment/system error)
CAPTURE_TIMEDOUT Capture did not happen within allowed time

Cancellation Detail Reasons

Permitted cancellation reasons for partner cancellation requests.

Value Description
TICKETS_NOT_RECEIVED Tickets or voucher not received by the customer
CHANGE_OF_TRAVEL_PLANS Customer changed travel plans
MODIFY_EXISTING_RESERVATION Customer wants to modify an existing reservation
FOUND_CHEAPER_OPTION_ELSEWHERE Customer found a cheaper alternative
OTHER Other reason not listed above

Error Codes

Generic Errors

Code Category Description
CAL_0000 Generic Unknown error occurred

Cart Error Codes

Code Category Description
CAL_0100 Itinerary Unknown error occurred

Legitimacy Issues

Code Category Description
CAL_0101 Itinerary Tour information is not legitimate
CAL_0102 Itinerary Tour or language does not exist
CAL_0103 Itinerary Tour's addon does not exist
CAL_0104 Itinerary Price information is not legitimate
CAL_0105 Itinerary Itinerary item does not exist
CAL_0106 Itinerary Price of the item has changed
CAL_0107 Itinerary No ADULT in free booking
CAL_0108 Itinerary Children not permitted without adult
CAL_0109 Itinerary Minimum number of tickets not selected
CAL_0110 Itinerary Maximum number of tickets exceeded
CAL_0111 Itinerary Max 2 children per 1 Adult/Student/Senior
CAL_0112 Itinerary Minimum number of pax not selected
CAL_0113 Itinerary Maximum number of pax exceeded
CAL_0114 Itinerary Book now pay later not eligible

Expiration Issues

Code Category Description
CAL_0120 Inventory Slot not available anymore
CAL_0121 Itinerary Tour not available anymore
CAL_0122 Itinerary Pricing has changed
CAL_0123 Itinerary Selected date-time closed or invalid

Double Booking Issues

Code Category Description
CAL_0130 Itinerary Duplicate booking attempt within 30 min

Booking Error Codes

Pre-payment Gateway

Code Category Description
CAL_0200 Booking Unknown booking error
CAL_0201 Booking Could not create booking, retry
CAL_0202 Booking Reserved for use

Booking Results Viewing

Code Category Description
CAL_0220 Booking No recent order found
CAL_0221 Booking Booking currency mismatch
CAL_0222 Booking Itinerary vs booking currency mismatch
CAL_0223 Booking Reservation failed via plugin

Expiration

Code Category Description
CAL_0231 Booking Tour prices have changed

Unsupported Operations

Code Category Description
CAL_0241 Booking Unsupported operation for API version

City Error Codes

Code Category Description
CAL_0310 City City not found

Booking UserField Error Codes

Code Category Description
CAL_0600 BookingUserField Incorrect user field
CAL_0601 BookingUserField Missing last name
CAL_0602 BookingUserField Missing mandatory user fields
CAL_0603 BookingUserField Invalid phone number
CAL_0604 BookingUserField Primary customer details missing

Calipso Product Error Codes

Code Category Description
CAL_0900 Product Error in Calipso Product

Partner Error Codes

Code Category Description
CAL_1000 Partner Valid API key not found

Partner Booking Error Codes

Code Category Description
CAL_1300 Booking Count doesn't match number of customers

My Reservations Error Codes

Code Category Description
CAL_1400 Reservations Invalid date range (from > to)
CAL_1401 Reservations Booking does not exist
CAL_1402 Reservations Could not fetch voucher; booking missing
CAL_1403 Reservations Unsupported itinerary type (combo)
CAL_1404 Reservations Authentication failed for voucher
CAL_1405 Reservations Temporary error fetching booking
CAL_1406 Reservations Booking does not belong to user

Springboot Pre-controller Errors

Code Category Description
CAL_1600 Malformed request Invalid body/query/path parameters

Cancellation & Booking Details

Code Category Description
CAL_1801 Cancellation Failed to cancel ticket
CAL_1802 Booking Could not fetch booking (server error)
CAL_1803 Booking Failed to reschedule booking
CAL_1804 Booking Live inventory not available for reschedule

Audio Guide Errors

Code Category Description
CAL_1900 Audio guide Vendor audio guide not found
CAL_1901 Audio guide Could not add audio guide
CAL_1902 Audio guide Audio guide expired
CAL_1903 Audio guide Share limit exceeded
CAL_1904 Audio guide Audio guide unavailable
CAL_1905 Audio guide Unsupported form type
CAL_1906 Audio guide Non-nullable attribute is null
CAL_1907 Audio guide Quote not found
CAL_1908 Audio guide Tour user fields not found

FAQs

Audience and Scope

Who is this FAQ for?

Developers integrating Partner APIs. Technical operations teams can use it for SLA, sandbox, and troubleshooting context. Sales teams should refer to the non-technical brief.

Which endpoints do affiliates vs. API partners use?

  • Affiliates: Catalog-only — cities, categories, collections, products.
  • API partners: Full API suite — catalog, booking, and inventory endpoints for handling transactions.

Environments and Access

Base URLs

Environment Application URL API Base URL
Staging https://sandbox.deimos.dev-headout.com https://sandbox.api.dev-headout.com
Production https://www.headout.com https://www.headout.com

Note: Staging mirrors ~70–80% of production data.


Authentication and Security

How do I authenticate?

Add Headout-Auth: {api-token} to every request.

  • pk_… → production key.
  • tk_… → sandbox key.
  • Enforce HTTPS.
  • Set Content-Type and Accept to application/json.

Are browser-based CORS calls supported?

No. The APIs are server-to-server. Never expose API keys in client apps or public repositories.

What are the key security best practices?

  • Keep API keys private and rotate them when compromised.
  • Log response traceId values for debugging.
  • Minimize PII storage; redact where possible.
  • Enforce HTTPS-only transport.

Why am I seeing Not Allowed … PartnerKeyInvalidException?

Occurs when:

  • The API key is invalid, or
  • The account is not flagged as an API partner.

Resolution: Verify you are using the correct key for the environment. Escalate to your Headout SPOC if the issue persists.


Integration Flow

  1. List active cities via the City API.
  2. Fetch products for the city using the List All Products API.
  3. Retrieve product details and variants with the Product API.
  4. Pull inventory for the variant via the Inventory API.
  5. Create the booking with the Create Booking API (initial status UNCAPTURED).
  6. Capture the booking using the Update Booking API (status moves to PENDING).
  7. Poll booking status or subscribe to webhooks for final status and voucherUrl.

Catalog and Inventory

How is the product catalog structured?

  • City: Top-level aggregation (e.g., Paris).
  • Product: Experience within the city (e.g., Eiffel Tower Guided Tour).
  • Variant: Specific option of a product (e.g., 10 AM tour).
  • Inventory: Date/time slot for the requested pax count.

Curation layers

  • Category: E.g., Tickets.
  • Subcategory: E.g., Landmarks Tickets.
  • Collections: E.g., All Eiffel Tower Tickets.
  • Combos: E.g., Eiffel Tower + Seine Cruise.

How do I list categories and collections for a city?

  • GET /category/list-by/city
  • GET /collections with cityCode
  • Use pagination (offset, limit).

How do I list products for a city?

GET /products with:

  • Required: cityCode
  • Optional: collectionId, categoryId, subCategoryId, languageCode, currencyCode, offset, limit

How large is the catalog?

~5,500 products with ~3 variants per product, growing rapidly.

How do product, variant, and inventory IDs differ?

inventoryId represents a specific date-time slot — distinct from productId and variantId.

Why am I seeing “No inventory/slot”?

  • If availability = UNLIMITED, book immediately.
  • If availability = LIMITED, check the remaining count.
  • Slots may disappear between check and booking, especially on sandbox. Re-check before retrying.

What does error CAL-0120: slot not available indicate?

The slot was taken just before booking. Re-check availability and retry. Escalate if frequent.

Experience available via API but not on the website?

Unexpected. Escalate to your Headout contact.


Booking Creation and Capture

What is partnerReferenceId?

Your internal booking identifier for reconciliation.

Sample booking request (sandbox)

curl --location 'https://sandbox.api.dev-headout.com/api/public/v1/booking' \
  --header 'Headout-Auth: <AUTH>' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "variantId": "15786",
    "productId": "8839",
    "inventoryId": "436127621",
    "price": {
      "amount": 13.08,
      "currencyCode": "USD"
    },
    "customersDetails": {
      "count": 1,
      "customers": [
        {
          "personType": "GENERAL",
          "isPrimary": true,
          "inputFields": [
            { "id": "NAME",  "value": "Jonathan Marroquin" },
            { "id": "EMAIL", "value": "asim.kt@gmail.com" },
            { "id": "PHONE", "value": "+919048812190" }
          ]
        }
      ]
    }
  }'

What are the booking status transitions?

  • UNCAPTURED → Booking created.
  • PENDING → Capture requested, fulfillment started.
  • Final states: COMPLETED, CANCELLED, FAILED.
  • CAPTURE_TIMEOUT → Not captured within ~1 hour.

What is the difference between normal and custom input fields?

  • Normal fields: Standard participant data (EMAIL, PHONE, NAME).
  • Custom fields: Product-specific selections (e.g., seat choice). Follow the product details schema to see required fields.

Do I need to collect details for every guest?

Check inputFields.level:

  • ALL → Collect per guest.
  • PRIMARY_CUSTOMER → Only the primary guest.

How do I send custom fields correctly?

Avoid generic IDs such as:

{ "id": "CUSTOM", "name": "Age", "value": "32" }

Instead, use IDs from the Product API:

{ "id": "CUSTOM_144871", "value": "32" }

This prevents “Missing mandatory userFields”.

Why is phone number validation failing?

Use the regex provided in the variant input fields (usually + plus country code).

Which fields are mandatory in a booking request?

  • variantId, inventoryId
  • customersDetails.count
  • price.amount, price.currencyCode
  • Per customer: personType, isPrimary, and product-required inputFields (e.g., EMAIL, PHONE, FULL_NAME, DATE_OF_BIRTH)

Always confirm via GET /products/{productId}.

Booking works without price — is it still required?

Yes. Always send the price object to avoid downstream errors.

Will sandbox send emails or vouchers?

No emails are sent. The API response includes voucherUrl for validation.

What is the turnaround time for non-instant confirmation?

Average ~60 minutes; max 4–6 hours (longer delays are rare but possible).

NOTE: In Sandbox environment, try Instant Confirmation tickets as non-instant confirmation tickets may never be confirmed. (eg. 7809, 1878, 25198, etc.)

How do I test instant confirmation on sandbox?

Product ID QR code on voucher?
8839 No
26149 No
26150 No
15810 Yes

Pricing and Pax

How should I handle age rules and pricing?

  • Use ageFrom / ageTo from the Inventory API.
  • Pricing may be per-person or bundled.
  • For bundles (e.g., group size 4), calculate totals using group pricing and pax min/max.
  • If ageFrom is null, use the upper limit of the CHILD age range.

How do I determine pax limits?

Check pax.min and pax.max at the variant level to validate UI inputs and booking payloads.

Should netPrice equal headoutSellingPrice?

Not unless contractually agreed. Escalate mismatches for pricing review.

How do I support group or bundle pricing?

Leverage pax.min, pax.max, and type fields from the Product API. Validate logic per product.


Caching, Pagination, Formats

What caching strategy do you recommend?

  • Cache product lists/details for ~1 day.
  • Always perform live inventory checks before booking.
  • Never make booking decisions on cached inventory.

How is pagination handled?

Use offset and limit. Responses provide nextUrl, prevUrl, total, and nextOffset.

Which date/time formats are used?

  • ISO 8601 in API requests/responses.
  • Localized yyyy-MM-dd HH:mm:ss may appear in payloads.
  • When both formats exist, ISO startTime takes precedence.
  • Always account for supplier time zones.

Reliability and Escalation

What are the usual debugging steps?

  1. Check the API version.
  2. Verify the API key.
  3. Confirm inventory availability and slot.
  4. Validate request payload and pricing.
  5. Ensure product and variant IDs are not swapped.
  6. Double-check inputFields (common errors include GENERAL vs. ADULT).

How should I report errors?

Provide:

  • Full request body.
  • Full response (untruncated).
  • Request IDs and any supporting context.

What if I hit repeated 500 errors or booking failures?

Retry transiently. Persistent failures are unexpected — escalate with request IDs and redacted payloads. Include the full payload when sharing with Headout, for example:

curl --location 'https://sandbox.api.dev-headout.com/api/public/v1/booking' \
  --header 'Headout-Auth: <AUTH>' \
  --header 'Content-Type: application/json' \
  --data-raw '{...}'  # Include complete payload when escalating

Roadmap and References

What partner-requested features are on the roadmap?

  • Reviews, itinerary fields, combo bookings.
  • Live entertainment seat maps.
  • “Know Before You Go” and “My Tickets”.
  • Search by city + dates + pax.

Where can I find enum glossaries or master lists?

Refer to the shared enums master list in the API documentation. Use Product API responses to map required IDs per product.