Quote
Search up to 3,000 hotel codes or one destination for available rooms. Each combination in the response carries the combinationKey you send to Confirm.
Hotel codes or a destination
Send exactly one of accommodations and destinationId.
accommodations | destinationId | |
|---|---|---|
| Sends | Up to 3,000 hotel codes | One destination code, such as MAD |
| Codes come from | Your catalogue: Accommodations | Destinations |
| Good for | Map, radius and shortlist searches | A destination search box |
| Rules | Unique codes, within about 200 km of each other |
- One call with 3,000 codes beats many small calls.
- Deduplicate the list first. The spec requires unique codes.
- A hotel that has left the catalogue returns nothing. Refresh your catalogue weekly.
Best combinations
With the defaults (bestCombinations: true, maxCombinations: 1) you get one combination per hotel. The docs define "best" as the best combination for each available meal plan and whether it is refundable or non-refundable.
The docs' worked example: a hotel has six combinations.
| Meal plan | Price | Refundability |
|---|---|---|
| RO | 100 | Non-refundable (NR) |
| RO | 110 | Non-refundable (NR) |
| RO | 150 | Refundable (R) |
| AI | 200 | Partially refundable (PR) |
| AI | 210 | Non-refundable (NR) |
| AI | 220 | Refundable (R) |
maxCombinations | Returned |
|---|---|
| 4 | RO 100 NR, RO 150 R, AI 200 PR, AI 220 R |
| 2 | RO 100 NR, RO 150 R |
| 1 (default) | RO 100 NR |
Our reading of that example, derived from it and not stated in the docs: "best" keeps the cheapest combination per meal plan in two classes, fully refundable (R) and not fully refundable (NR and PR together). That is why AI 210 NR is dropped for the cheaper AI 200 PR, and RO 110 NR for RO 100 NR. The survivors are sorted by price and cut at maxCombinations.
To see everything, send bestCombinations: false (up to 60 per hotel) and call Quote single for hotels marked quoteSingleNeeded.
onRequest and quoteSingleNeeded
onRequest: truemeans only on-request quota exists: the supplier has to accept the booking. WithincludeOnRequestOptions: false, on-request combinations are filtered out, soonRequestis alwaysfalse.onRequest: falseis not a promise. Book can still returnRQ. See Booking statuses.quoteSingleNeeded: truedoes not mean "not bookable". A supplier returned a partial set: the combinations you have are bookable, and more exist. Call Quote single to see them all.
combinationKey
- Opaque. The format varies by supplier and step: a short string such as
157117||14449||RO||d7oNg, or a signed JWT that may also be deflated. Don't parse it. - Store it as unbounded text. No fixed-length column.
- Never persist it long term. It changes on every response and expires 40 minutes after the Quote response.
- Keep it on your server. The sample keys in the docs decode to readable JWTs that hold the net price, the commission and the supplier's purchase token. Give your front end an id of your own and map it to the key on the server.
Timeouts
timeoutcaps how long the API waits for suppliers. The minimum is 3000 ms.- The whole call can run a few seconds past it. The docs' own example took 18 seconds.
- Set your HTTP timeout to at least
timeoutplus 30 seconds, and show progress in your UI.
Prices and policies
- Prices, cancellation policies and remarks here are informational. Only Confirm guarantees them.
price.currencyis always the microsite currency. You cannot request another one, so convert for display yourself.- A rate is valid for about one hour. Never cache quote prices in your catalogue.
mealPlan.typecollapses mixed plans to the nearest type: "1 bed and breakfast + 1 half board" becomesHALF_BOARD. Showdescriptionto guests.cancellationPolicies[]is cumulative. In the sample response, cancelling is free until 6 November, costs 444.46 EUR from 7 November and the full price from 10 November. See Cancellations.
Limits
| Limit | Value | |
|---|---|---|
| Rooms per booking | 1 to 4 | |
| People per room | 1 to 6, children included | |
| Adults and children per room | At least 1 adult, at most 5 children | |
| People per booking | 15, at most 14 children | |
| Child ages | 0-17 | |
| Length of stay | 30 nights (checkOut minus checkIn) | |
| Hotel codes per call | 3,000 | |
timeout | At least 3000 ms, or null for your account's default | |
maxCombinations | 1 to 60 |
The limits marked Tested are rejected with 400 as soon as the request arrives. The others are not checked up front, so enforce them in your form.
All limits: Limits.
Gotchas
- Send each guest's age at checkout, not today's age. A child who turns 6 during the stay is 6. Otherwise Prebook fails with "Child age different from availability".
- Use future dates. The docs samples use past dates, which return nothing.
- Count nights, not days: 1 to 31 March is 30 nights and is accepted; 1 March to 1 April is 31 nights and gets
400. Suppliers can add their own restrictions on top. - Empty results: read
providerTraces[]for supplier errors, then check Provider configurations to see which suppliers your microsite has. - Parse enums leniently. New values appear, so route unknown ones to review instead of crashing.
- Never replace one Quote with many Quote single calls in parallel. That is unsupported.
Related
- The booking flow
- Quote single
- Confirm, the next step
- Rooms and guests
- Hotel catalogue