Skip to main content
Stay up to date with the latest changes to the Headout API. Each release is documented here with the date and a summary of what changed.

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 additions

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 additions

New field: minimumSellingPrice

API Partner pricing responses now include minimumSellingPrice, the price floor for an experience. Do not sell below this value.Where it appearsKey details
  • The value is null when 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 codeThe 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:Every delivery is signed with HMAC-SHA256 via an 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-hosted voucherUrl link.New endpoints
  • GET Get a voucher — returns the full voucher object with header, redemption callouts, booking details, location instructions (address groups), tickets, and vendor details.
Schema changes
  • voucherId added 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’s bookingId. Existing fields are unchanged.
Key details:
  • Path: /api/public/v2/bookings/{bookingId}/vouchers/{voucherId}/.
  • bookingStatus uses the same vocabulary as the booking endpoints — PENDING, COMPLETED, CANCELLED. ticketSection and checkinButton are null for a cancelled booking, and bookings with no voucher return 404.
  • callouts[] is an ordered array of { title, htmlDescription } banners to render on the voucher.
  • instructions contains either htmlContent or structured — exactly one is non-null; branch on which is present.
  • instructions.structured.location.addressGroups shape varies by addressSequenceType: flat group for SINGLE_ADDRESS/ALL_ADDRESS_ANY_ORDER, one group per itinerary path for ALL_ADDRESS_SPECIFIC_ORDER.
See Voucher API deep dive for a complete field-by-field walkthrough.

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.Key details:
  • 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 submitting inputFields in the Create booking request. Legacy string keys ("NAME", "CUSTOM_58384") continue to work for existing integrations.
  • validation.values uses a typed {type, value} shape: "TEXT" for ENUM dropdowns (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-defined Custom fields; null for standard fields (e.g., Name, Email, Phone) and for Custom fields with no description configured.
  • Optional languageCode query parameter for localized field names, option labels, and descriptions. Defaults to EN.

May 2026

New sandbox base URL

The sandbox environment has moved to a new host. All sandbox API calls should now use https://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.com will 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

Added GET List availabilities - Normal for retrieving date-level availability for normal (non-seatmap) products.Available for both API Partners and Affiliates:Notes:
  • Only applies to products with inventorySelectionType: NORMAL.
  • Returns one entry per date, with pricing from the lowest-priced slot.
  • Supports optional currencyCode, startDate, and endDate query parameters.
  • startDate defaults to today in the tour city timezone.
  • endDate defaults to startDate + 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:

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 (from Get Product) — starting price for a specific variant
  • inventory.pricing — live, bookable slot price for checkout totals and booking validation
Note: the starting “from” price varies by date/time-slot even for single-variant products, since slot-level and supplier-backed inventory pricing changes. Treat it as the lowest currently-known starting point, not a fixed quote.

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:

April 2026

Seatmap availability

Added GET List availabilities - Seatmap for retrieving seatmap availability for a specific variant within a date range.Available for both API Partners and Affiliates:Notes:
  • Supports optional currencyCode, startDate, and endDate query parameters.
  • startDate defaults to today in the tour city timezone.
  • endDate defaults to startDate + 60 days.
  • The full date range cannot exceed 90 days inclusive.

March 2026

Booking flow

Added support for the full booking lifecycle:
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

  • GET List Cities — returns a paginated, alphabetically sorted list of all discoverable cities.

Response updates

  • List Cities: new limit parameter (default 20, max 20).
  • List Bookings: default results per page changed to 20, with limit capped at 20.
  • All booking endpoints now return structured error responses (400, 403).

Product pricing

A new pricing 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 — pricing at the product level (minimum across all variants)
  • Get Product — pricing at both the product and variant level
Fields returned vary by partner type: