October 2026
New event type: product.variant_pricing_changed
Event subscriptions now support product.variant_pricing_changed, delivered when a listed variant’s price changes for one of the next few dates — currently today, tomorrow, or the day after, in the timezone of the experience’s city. The payload names the productId, variantId, and date whose price changed — re-fetch the price to read the new amounts.Enum additionsproduct.variant_pricing_changedadded to the subscribable event types on Create (API Partner / Affiliate) and Update (API Partner / Affiliate) event subscriptions.- See the Event subscription notification reference (API Partner / Affiliate) for the payload shape and exactly when the event fires.
September 2026
New event type: product.data_changed
Event subscriptions now support product.data_changed, delivered when the content of a listed product changes (name, city, content, locations, policies, reviews, points of interest, or any variant field). The payload’s changedFields array tells you exactly which fields’ response changed.Enum additionsproduct.data_changedadded to the subscribable event types on Create event subscription / Create event subscription and Update event subscription / Update event subscription.- See Event subscription notification / Event subscription notification for the payload shape and the full list of fields that trigger it.
New field: minimumSellingPrice
API Partner pricing responses now include minimumSellingPrice, the price floor for an experience. Do not sell below this value.Where it appearspricing.minimumSellingPriceon Get a product and List all products, at both product and variant levelavailabilities[].pricing.minimumSellingPriceon Normal availabilitiesavailabilities[].slots[].pricing.minimumSellingPriceon Seatmap availabilitiespricing.persons[].minimumSellingPriceon List inventory, one value per person typesections[].seats[].pricing.minimumSellingPriceon Seatmap inventory
- The value is
nullwhen no minimum is set for that experience or person type. - Group pricing tiers do not carry this field.
- Seatmap inventory currently always returns
null. - Existing fields are unchanged.
Rate limit on Create Booking
Create Booking is now rate limited to 100 requests per rolling 30-minute window per API key (sliding window), on both v1 and v2. This protects the booking flow from bursts and keeps slot reservations reliable.New status code429— returned by Create a new booking (v2) and Create a new booking (v1) when the rate limit is exceeded.
429 response includes a retry-after header with the number of seconds to wait before the next request is allowed; the error body message states the same. Use retry-after to schedule your next call.August 2026
New: Event subscriptions API
You can now register HTTPS endpoints to receive signed webhook notifications for product events, instead of polling for changes.New endpoints:POSTCreate event subscription / Create event subscriptionGETList event subscriptions / List event subscriptionsGETGet event subscription / Get event subscriptionPATCHUpdate event subscription / Update event subscriptionDELETEDelete event subscription / Delete event subscriptionPOSTRotate signing secret / Rotate signing secret
X-Headout-Signature header, and carries X-Headout-Event-Id (stable across retries, so you can deduplicate), X-Headout-Event-Type, X-Headout-Delivery-Id and a 1-based X-Headout-Delivery-Attempt — see Event subscription notification for verification steps and retry behavior.Two event types are supported:
product.listing_status_changed (a product was listed or unlisted) and product.variant_listing_status_changed (variants under a product were listed or unlisted).New endpoint: Get a voucher
You can now fetch a structured voucher payload directly via API — no longer limited to the Headout-hostedvoucherUrl link.New endpointsGETGet a voucher — returns the full voucher object with header, redemption callouts, booking details, location instructions (address groups), tickets, and vendor details.
voucherIdadded to the booking response on Create, Update, Get, and List bookings, and on the equivalent v1 booking endpoints. Pass it as the{voucherId}path parameter on the new voucher endpoint, alongside that booking’sbookingId. Existing fields are unchanged.
- Path:
/api/public/v2/bookings/{bookingId}/vouchers/{voucherId}/. bookingStatususes the same vocabulary as the booking endpoints —PENDING,COMPLETED,CANCELLED.ticketSectionandcheckinButtonare null for a cancelled booking, and bookings with no voucher return404.callouts[]is an ordered array of{ title, htmlDescription }banners to render on the voucher.instructionscontains eitherhtmlContentorstructured— exactly one is non-null; branch on which is present.instructions.structured.location.addressGroupsshape varies byaddressSequenceType: flat group forSINGLE_ADDRESS/ALL_ADDRESS_ANY_ORDER, one group per itinerary path forALL_ADDRESS_SPECIFIC_ORDER.
June 2026
New endpoint: Get inventory details by ID
Partners can now fetch the exact customer input fields required for a specific inventory before creating a booking — enabling accurate booking form rendering without guessing from product-level fields.GETGet inventory details by ID — returns aninputFieldsarray for the giveninventoryId.
- Path:
/api/public/v2/inventories/{inventoryId}/— takes the inventory ID from the inventory listing response. - Each field carries a numeric string
id(e.g.,"224713") — use this directly as the field key when submittinginputFieldsin the Create booking request. Legacy string keys ("NAME","CUSTOM_58384") continue to work for existing integrations. validation.valuesuses a typed{type, value}shape:"TEXT"forENUMdropdowns (array of strings),"PREDEFINED_LOCATION"for location fields with predefined options (array of location objects). Omitted for all other field types.- Each field includes a nullable
description— helper text to display to the customer. Populated for supplier-definedCustomfields;nullfor standard fields (e.g.,Name,Email,Phone) and forCustomfields with no description configured. - Optional
languageCodequery parameter for localized field names, option labels, and descriptions. Defaults toEN.
May 2026
New sandbox base URL
The sandbox environment has moved to a new host. All sandbox API calls should now usehttps://www.sandbox-headout.com (previously https://sandbox.api.dev-headout.com).- Update your sandbox base URL — see Setup for the current value and an example request.
- No changes to request/response schemas or authentication; only the host has changed.
- The previous host
https://sandbox.api.dev-headout.comwill continue to work, so existing integrations are unaffected. We recommend migrating to the new host at your convenience. - Production endpoints are unaffected.
Normal product availabilities
AddedGET List availabilities - Normal for retrieving date-level availability for normal (non-seatmap) products.Available for both API Partners and Affiliates:GETList availabilities - Normal — API PartnersGETList availabilities - Normal — Affiliates
- Only applies to products with
inventorySelectionType: NORMAL. - Returns one entry per date, with pricing from the lowest-priced slot.
- Supports optional
currencyCode,startDate, andendDatequery parameters. startDatedefaults to today in the tour city timezone.endDatedefaults tostartDate + 60 days.- The full date range cannot exceed 90 days inclusive.
Cities response now includes country and timezone
The cities listing now returns each city’s country (ISO code + name) and IANA timezone. Existing fields are unchanged — the new fields are purely additive.Schema changes:GETList all cities / List all cities — each city in the response now includescountry: { code, name }andtimezone(e.g.,Europe/London).
Deprecation: listingPrice on V2 product responses
The listingPrice object on List Products and Get Product (both API Partner and Affiliate) is now deprecated. It will continue to be returned for backward compatibility and is not being removed, but new integrations should not rely on it.Use the pricing object instead:- Product-level
pricing— starting “from” price across all variants and time slots - Variant-level
pricing(fromGet Product) — starting price for a specific variant inventory.pricing— live, bookable slot price for checkout totals and booking validation
Seatmap suite
Full seatmap product support is now available for API Partners and Agents. Partners can now discover, browse, and book seat-level theatre and live entertainment products end to end.New endpoints:GETAvailabilities - Seatmap — available show dates, time slots, and pricing per variantGETList Inventory - Seatmap — all available seats for a show, grouped by sectionPOSTValidate - Seatmap — live availability and pricing check on selected seats before checkoutGETVenue Map — CDN URL for the venue layout SVGGETVenue Iframe — Headout-hosted seat selection UI for iframe-based integrations
April 2026
Seatmap availability
AddedGET List availabilities - Seatmap for retrieving seatmap availability for a specific variant within a date range.Available for both API Partners and Affiliates:GETList availabilities - Seatmap — API PartnersGETList availabilities - Seatmap — Affiliates
- Supports optional
currencyCode,startDate, andendDatequery parameters. startDatedefaults to today in the tour city timezone.endDatedefaults tostartDate + 60 days.- The full date range cannot exceed 90 days inclusive.
March 2026
Booking flow
Added support for the full booking lifecycle:POSTCreate a bookingGETList all bookingsGETGet a booking by IDPUTCapture a bookingPOSTCancel a bookingPOSTReschedule a booking
The cancel and reschedule endpoints have moved from
/api/public/v2/partner/booking/{bookingId}/... to /api/public/v2/bookings/{bookingId}/....Existing integrations using the older endpoints will continue to work without changes.Cities and discovery
GETList Cities — returns a paginated, alphabetically sorted list of all discoverable cities.
Response updates
- List Cities: new
limitparameter (default20, max20). - List Bookings: default results per page changed to
20, withlimitcapped at20. - All booking endpoints now return structured error responses (
400,403).
Product pricing
A newpricing field has been added to the Product v2 APIs, giving partners direct access to pricing information without needing to fetch inventory.Available on:- List Products —
pricingat the product level (minimum across all variants) - Get Product —
pricingat both the product and variant level