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.hotelCodeProvidertranslates native ids from that catalog to base codes before coverage and fan-out, so anyconnectionCodescan be searched with another catalog's ids.exclusionsof typeconnectionCodeuse the same catalog. Incompatible withskipHotelCodesMapping. Unmapped hotels warnWARN_MAPPING_HOTEL_MISSINGwithadditionalData.reason=hotel_code_provider_unmapped. Search — Hotel identity. - Behavior. Content
POST /content/hotels/v1/hotels/translate-codesresolves 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), andskipHotelCodesMapping(single-connection passthrough). Content documentsby-provider-codes,translate-codes, andGET …/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 (envBUNDLEPORT_API_KEY), and a six-step integration path. Quote first; skip only withoutRATE_TYPE/RECHECK. Page bar on every guide. Use with AI. - Docs. Quickstart availability matches the wire:
criteria.hotels, occupancy age only, searchoptions[].id(notoptionRefIdor a nestedhotel). Hotels search stays HTTP 200 +errors[]. Quickstart. - Docs. Skip-quote wording uses
RATE_TYPE/RECHECK(not a named product). RoomconfirmationReferenceexamples are generic. ContentpreferredContentSourceexamples useexample. 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 missingconnectionCodes; unclassified search isERR_CODE_UNKNOWN/ERR_TYPE_UNKNOWN; hints match top-leveldescriptiononly; HTTP404is Content catalog; quota, search timeout, coverage warning, and HTTP503{ "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_RESPONSEandallotmentstay searchable;/searchis no longer an Algolia page. - Docs. Connect console guides: Business Analytics, API Performance, and Log & Audit.
error_categoryis 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 (noRQon book); book floor 90s / cancel 60s; search-only HTTP 503 saturation; quote/book throws areERR_TYPE_SERVICEwithoutconnectionCode. OpenAPI bookingdetail/cancel no longer advertise HTTP 404;apiKeyAuthisAuthorization: ApiKey. - Docs. Content OpenAPI copy matches the Content API spec: no scheduler control paths that are not registered;
search-destinationranking/productLabel/locale/countryCodeprose;BearerAuthandapiKeyAuthonAuthorization. Content API · search-destination. - Docs. Coverage warning includes
additionalData.hotelsRequested. EmptyadditionalDatais 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.retryableandadditionalData.recommended_action. Follow the hint instead of retrying blindly. Buyer action hints.
Changed
- Behavior. MCP quote
optionQuote.statusisSTATUS_TYPE_OKorSTATUS_TYPE_RQ. It is no longer the short aliasOK/RQ. Audit transactions useconnectionCode, notaccessId. MCP tools. - Behavior. Quote and book
additionalDatasent to the provider is allowlisted.paymentModeis forwarded.skipMarkupstill skips margin on the aggregator and is not sent upstream. Any other key is dropped. Quote · Book. - Behavior. Search
checkIn/checkOutare civil dates at UTC midnight. A non-midnight timestamp is rewritten and returned as warningSTAY_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.timeoutis milliseconds. A book value below 90000 is raised to that floor. Timeouts. - Docs. Persist
reference.bookingID. There is nobookingReference. Handoff: searchoptions[].id→ quoteoptionRefId→ bookoptionQuote.optionRefId→ cancel and detailbookingID. Cancel returnscancelReference. Book · Cancel · MCP handoff. - Docs. Book, detail, and list return
BookingDetail:statusisBOOK_STATUS_TYPE_*, plusreference,billingProviderCode,price,remarks[],rooms[]. NotCONFIRMED,hotel,holder, or stay dates.holderandrooms[].paxesare book request fields only. Retrieve. - Docs.
auditDataisrequestIdandtransactions[](id,connectionCode,request,response,duration,httpUrl,httpStatusCode,httpResponseHeaders). There is noprocessTime. - Docs.
priceDeltais your percentage. Omit or0is strict. The platform does not inject a default. priceDelta. - Docs. MCP tools are
availability,quote,book,bookingDetail, andcancel, over Streamable HTTP. Same identifiers as REST. Tools. - Docs. Buyer booking webhooks are not available. Poll
bookingdetailforBOOK_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 nohotels:search/hotels:bookscopes. 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
429is headers, not aRATE_LIMIT_EXCEEDEDaggregator 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 typedAuditTransaction. AuditData. - Docs. Quote
optionQuote.statusisSTATUS_TYPE_OKorSTATUS_TYPE_RQonly. ShortOK/RQare 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 noPRICE_CHANGEDorNO_AVAILABILITYcode. HTTP vs business errors · Error codes.
Fixed
- Behavior.
confirmationReferenceis copied ontoreferenceand ontorooms[]. Ifreference.confirmationReferenceis empty, keeprooms[].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.resultFilterson availability:cheapestOnly,cheapestStrategy,refundableFilter,boardCodes. Omit the object to keep the full response. Result filters. - Behavior.
additionalData.paymentModeisMERCHANT(default) orDIRECT_ONLY.DIRECT_ONLYdrops a quote option whenacceptVCardis true. Payment mode.
Changed
- Behavior. JSON includes proto3 zero values. A successful book sends
status: BOOK_STATUS_TYPE_OKinstead of omitting the field. Book response.
[2026-04-20]
Added
- Behavior. Search and quote
surcharges[]usecategory(TAX,FEE,DEPOSIT,OTHER), a stablecode, andincluded. 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, andprice.markupGrossare different fields.grossis notmarkupGross. 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
- Shopping —
availabilitythenprebooking. Overview. - Booking —
booking,bookingdetail,bookinglist,cancel. Persistreference.bookingID. ForBOOK_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.resultFilterstrim 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.timeoutis milliseconds. Search default is 10s, max 60s. Book raises values below 90s. Your HTTP client must outlivesettings.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. PreferadditionalData.recommended_actionwhen present. Error handling. - Set
settings.auditTransactions(default off) to receive supplier bodies inauditData.transactions. Search also returnstracingper connection. - Log & Audit always records quote, book, cancel, and detail/list. Search is sampled. Observability.
How to Stay Updated
- Changelog — contract changes on this page.
- Connect console — Business Analytics, API Performance, Log & Audit. Guides: Observability.
Reporting Issues
- Open a support ticket in app.bundleport.com
- 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 Goneor disappear in the next major version.
Last updated: 18 September 2026