Skip to main content

Changelog

All notable changes to the Bundleport API are documented here.

The format follows Keep a Changelog. Dated headings are publication dates, not version numbers. Each bullet is either Behavior (the JSON changed; update your client) or Docs (the wire was already this; only examples were wrong).

[Unreleased]

Added

  • Behavior. Availability criteria.hotelCodeProvider translates native ids from that catalog to base codes before coverage and fan-out, so any connectionCodes can be searched with another catalog's ids. exclusions of type connectionCode use the same catalog. Incompatible with skipHotelCodesMapping. Unmapped hotels warn WARN_MAPPING_HOTEL_MISSING with additionalData.reason = hotel_code_provider_unmapped. Search — Hotel identity.
  • Behavior. Content POST /content/hotels/v1/hotels/translate-codes resolves native ids to base codes and optional target catalogs (results[], notFound[]). Hotels catalog.

Changed

  • Docs. Search hotel identity has three modes: base codes (default), hotelCodeProvider (cross-catalog), and skipHotelCodesMapping (single-connection passthrough). Content documents by-provider-codes, translate-codes, and GET …/provider-codes. Search · Hotels catalog.
  • Docs. Developer kit on the docs home, Use with AI, MCP, and API pages: copyable OpenAPI URLs, llms-full.txt, ChatGPT/Claude launchers, Cursor/VS Code MCP install (env BUNDLEPORT_API_KEY), and a six-step integration path. Quote first; skip only without RATE_TYPE/RECHECK. Page bar on every guide. Use with AI.
  • Docs. Quickstart availability matches the wire: criteria.hotels, occupancy age only, search options[].id (not optionRefId or a nested hotel). Hotels search stays HTTP 200 + errors[]. Quickstart.
  • Docs. Skip-quote wording uses RATE_TYPE / RECHECK (not a named product). Room confirmationReference examples are generic. Content preferredContentSource examples use example. Connectivity Overview Stats are 24h. Log & Audit leftover ops render as Operation.
  • Docs. Error catalog matches aggregator locals: unexpected status code: received HTTP … (not a short invented 502 sentence); search vs quote/book strings for missing provider and missing connectionCodes; unclassified search is ERR_CODE_UNKNOWN / ERR_TYPE_UNKNOWN; hints match top-level description only; HTTP 404 is Content catalog; quota, search timeout, coverage warning, and HTTP 503 { "error": "aggregator saturated", "code": "RESOURCE_EXHAUSTED" }. Stats buckets (rate_limit, allotment, …) are not on Hotels JSON. Error codes · HTTP vs business errors.
  • Docs. Navbar search uses a hashed Lunr index built with the site (no third-party crawler). Codes such as ERR_CODE_BAD_RESPONSE and allotment stay searchable; /search is no longer an Algolia page.
  • Docs. Connect console guides: Business Analytics, API Performance, and Log & Audit. error_category is console-only. Observability.
  • Docs. AI/IDE layer: contract card, /llms.txt, public OpenAPI YAML, Use with AI. No official HTTP SDK. Use with AI.
  • Docs. Contract card: book statuses are BOOK_STATUS_TYPE_* only (no RQ on book); book floor 90s / cancel 60s; search-only HTTP 503 saturation; quote/book throws are ERR_TYPE_SERVICE without connectionCode. OpenAPI bookingdetail/cancel no longer advertise HTTP 404; apiKeyAuth is Authorization: ApiKey.
  • Docs. Content OpenAPI copy matches the Content API spec: no scheduler control paths that are not registered; search-destination ranking/productLabel/locale/countryCode prose; BearerAuth and apiKeyAuth on Authorization. Content API · search-destination.
  • Docs. Coverage warning includes additionalData.hotelsRequested. Empty additionalData is omitted from examples. Error codes · HTTP vs business errors.
  • Docs. Hotels OpenAPI examples use testb-conn-*. Search documents HTTP 503 { "error": "aggregator saturated", "code": "RESOURCE_EXHAUSTED" } instead of 400/500. Search.
  • Docs. Content OpenAPI describes provider-code aliases without naming connection families. Content API.

[2026-09-18]

Added

  • Behavior. Provider errors may include additionalData.retryable and additionalData.recommended_action. Follow the hint instead of retrying blindly. Buyer action hints.

Changed

  • Behavior. MCP quote optionQuote.status is STATUS_TYPE_OK or STATUS_TYPE_RQ. It is no longer the short alias OK / RQ. Audit transactions use connectionCode, not accessId. MCP tools.
  • Behavior. Quote and book additionalData sent to the provider is allowlisted. paymentMode is forwarded. skipMarkup still skips margin on the aggregator and is not sent upstream. Any other key is dropped. Quote · Book.
  • Behavior. Search checkIn / checkOut are civil dates at UTC midnight. A non-midnight timestamp is rewritten and returned as warning STAY_DATE_NORMALIZED. A past or inverted stay is a client error on HTTP 200 and no provider is called. Search request.
  • Behavior. Book and cancel settings.timeout is milliseconds. A book value below 90000 is raised to that floor. Timeouts.
  • Docs. Persist reference.bookingID. There is no bookingReference. Handoff: search options[].id → quote optionRefId → book optionQuote.optionRefId → cancel and detail bookingID. Cancel returns cancelReference. Book · Cancel · MCP handoff.
  • Docs. Book, detail, and list return BookingDetail: status is BOOK_STATUS_TYPE_*, plus reference, billingProviderCode, price, remarks[], rooms[]. Not CONFIRMED, hotel, holder, or stay dates. holder and rooms[].paxes are book request fields only. Retrieve.
  • Docs. auditData is requestId and transactions[] (id, connectionCode, request, response, duration, httpUrl, httpStatusCode, httpResponseHeaders). There is no processTime.
  • Docs. priceDelta is your percentage. Omit or 0 is strict. The platform does not inject a default. priceDelta.
  • Docs. MCP tools are availability, quote, book, bookingDetail, and cancel, over Streamable HTTP. Same identifiers as REST. Tools.
  • Docs. Buyer booking webhooks are not available. Poll bookingdetail for BOOK_STATUS_TYPE_ON_REQUEST. Availability may use SSE. Webhooks.
  • Docs. There is no official HTTP SDK. Call REST or MCP over HTTP. HTTP clients.
  • Docs. Authentication is Authorization: ApiKey sk_* or a Clerk JWT. There are no hotels:search / hotels:book scopes. Authentication.
  • Docs. Default Core rate limits are 10/s, 600/min, 15,000/h, 250,000/d per service account. Your account may differ. Gateway 429 is headers, not a RATE_LIMIT_EXCEEDED aggregator code. Rate limits.
  • Docs. Availability concatenates options from connectionCodes. It does not merge duplicate hotels across connections. Search · Booking flow.
  • Docs. auditData.transactions[] items are typed AuditTransaction. AuditData.
  • Docs. Quote optionQuote.status is STATUS_TYPE_OK or STATUS_TYPE_RQ only. Short OK / RQ are not on the wire. Quote.
  • Docs. Connect Hotels failures are HTTP 200 + errors[] (ERR_CODE_* / ERR_TYPE_*). Gateway auth/rate-limit uses HTTP 401/403/429. There is no PRICE_CHANGED or NO_AVAILABILITY code. HTTP vs business errors · Error codes.

Fixed

  • Behavior. confirmationReference is copied onto reference and onto rooms[]. If reference.confirmationReference is empty, keep rooms[].confirmationReference. Book response.

[2026-07-24]

Changed

  • Behavior. A provider outage, a transport failure, or an open circuit breaker is ERR_TYPE_PROVIDER / ERR_CODE_BAD_RESPONSE. One connection does not fail the whole search. Provider outages.

[2026-06-02]

Removed

  • Behavior. Hotel catalog routes on the aggregator are gone. Hotels, boards, and rooms come from the Content API. Content.

[2026-05-15]

Added

  • Behavior. Optional criteria.resultFilters on availability: cheapestOnly, cheapestStrategy, refundableFilter, boardCodes. Omit the object to keep the full response. Result filters.
  • Behavior. additionalData.paymentMode is MERCHANT (default) or DIRECT_ONLY. DIRECT_ONLY drops a quote option when acceptVCard is true. Payment mode.

Changed

  • Behavior. JSON includes proto3 zero values. A successful book sends status: BOOK_STATUS_TYPE_OK instead of omitting the field. Book response.

[2026-04-20]

Added

  • Behavior. Search and quote surcharges[] use category (TAX, FEE, DEPOSIT, OTHER), a stable code, and included. Surcharge vocabulary.

[2026-03-31]

Added

  • Behavior. Supply Control API for supplier catalog, availability, rates, and readiness.
  • Behavior. Availability can be consumed as a server-sent event stream while providers answer. Search.

[2026-01-22]

Changed

  • Docs. price.net, price.gross, price.suggested, and price.markupGross are different fields. gross is not markupGross. Pricing.

[1.0.0] - 2025-12

Added

  • Public Connect Hotels documentation and OpenAPI reference
  • REST and MCP (Streamable HTTP) on the same booking identifiers
  • Content catalog API for hotels, destinations, rooms, and boards

[0.9.0] - 2025-11

Added

  • Standardized error codes and descriptions on hotel operations
  • Search tracing per connection

Improved

  • Booking reliability: Improved price validation and inventory checking
  • Response consistency: Better normalization across multiple providers
  • Performance: Reduced latency for search and booking operations

[0.8.0] - 2025-10

Added

  • Content API: Dedicated endpoints for hotel catalog data
  • Advanced filtering: Enhanced search filters and sorting options
  • Multi-currency support: Full currency conversion and display

Improved

  • Provider coverage: Added support for additional hotel providers
  • Catalog accuracy: Improved hotel and room data quality
  • API stability: Enhanced error recovery and retry mechanisms

[0.7.0] - 2025-09

Added

  • Booking management: Complete booking lifecycle management (create, retrieve, list, cancel)
  • Multi-provider aggregation: Unified API across multiple hotel providers
  • Rate limiting: Configurable rate limits per service account

Improved

  • Search performance: Faster response times for availability searches
  • Price accuracy: Better price validation and quote consistency
  • Booking success rate: Improved booking confirmation reliability

[0.6.0] - 2025-08

Added

  • Core booking operations: Search, quote, and book hotel reservations
  • JWT authentication: Secure API key authentication with service accounts
  • Multi-protocol support: REST and MCP protocol interfaces

Platform Foundation

  • Gateway architecture: Enterprise-grade API gateway with automatic scaling
  • Multi-provider support: Abstracted provider integrations for consistent experience
  • Observability: Built-in metrics, tracing, and monitoring
  • High availability: Multi-replica Kubernetes in a single region; no numeric public SLA on this page

Key Platform Capabilities

What the Connect Hotels API actually does. Marketing claims that are not on the wire are omitted.

Booking and content

  • Shoppingavailability then prebooking. Overview.
  • Bookingbooking, bookingdetail, bookinglist, cancel. Persist reference.bookingID. For BOOK_STATUS_TYPE_ON_REQUEST, poll booking detail. Book.
  • Content — static hotels, rooms, destinations, and boards on the Content API, not on the aggregator. Content.
  • Protocols — REST (OpenAPI) and MCP Streamable HTTP. Same identifiers. Availability can stream as SSE (Accept: text/event-stream). MCP · Search.

Aggregation

  • You pass settings.connectionCodes. Each connection is queried in parallel; options are concatenated. There is no automatic provider selection or load balancing. Search.
  • If one connection fails, the others still return. Failures land in errors / warnings / tracing.
  • Optional criteria.resultFilters trim the payload after suppliers reply. The aggregator does not de-duplicate the same hotel across connections.

Access and limits

  • Authenticate with an API key (ApiKey sk_test_… / sk_prod_…) or a Clerk JWT. The gateway sets the environment. Authentication.
  • Published rate-limit defaults per service account: 10/s, 600/min, 15,000/hour, 250,000/day. Your account may differ. Rate limits.
  • Availability search is typically ~2–15+ seconds (slowest connection in the fan-out). Content catalog reads are usually faster. Performance.
  • settings.timeout is milliseconds. Search default is 10s, max 60s. Book raises values below 90s. Your HTTP client must outlive settings.timeout. Book timeouts.

Errors and audit

  • Provider outages are ERR_TYPE_PROVIDER / ERR_CODE_BAD_RESPONSE. Book and cancel are not retried by the platform. Prefer additionalData.recommended_action when present. Error handling.
  • Set settings.auditTransactions (default off) to receive supplier bodies in auditData.transactions. Search also returns tracing per connection.
  • Log & Audit always records quote, book, cancel, and detail/list. Search is sampled. Observability.

How to Stay Updated

Reporting Issues

  1. Open a support ticket in app.bundleport.com
  2. Email support@bundleport.com

Deprecation Policy

Matches API versioning:

  • Breaking changes go to a new major path (/v2) or a dated deprecation window on the current version.
  • Deprecated fields and endpoints stay in the changelog, with a 90-day notice on public REST unless security requires a shorter window.
  • After the sunset date the item may return 410 Gone or disappear in the next major version.

Last updated: 18 September 2026