canonical: https://jentic.com/apis/amadeus.com/amadeus-hotel-booking

# Amadeus Hotel Booking

The Amadeus Hotel Booking API turns a confirmed hotel offer into a real reservation with the underlying hotel provider. The single POST endpoint takes an offer id from Hotel Search, traveller and guest details, plus payment information, and returns one or more booking ids and provider confirmation numbers. It is the final step in the Self-Service hotel flow and submits real reservations against live hotel inventory, so test bookings should never run against the production environment.

## For AI agents

Create a real hotel reservation from a confirmed Amadeus hotel offer, returning provider confirmation numbers an agent can hand back to the traveller.

## Scope

Does not search hotels, manage cancellations, or capture payment outside the provider's own flow - use only to create a hotel reservation from a confirmed Amadeus hotel offer.

## Capabilities

- Create a hotel reservation from a confirmed Amadeus hotel offer id
- Submit guest names, contact details, and payment information in a single call
- Return provider confirmation numbers and the Amadeus booking id for the reservation
- Support multi-room bookings on the same offer in one request
- Handle credit card payment information per provider requirements

## Use cases

### Confirm a Hotel Reservation End-to-End

After a user picks a hotel offer from Hotel Search, the integrator posts the offer id together with guest details and payment information to /booking/hotel-bookings. The response includes the Amadeus booking id and the provider's confirmation number, which the integrator stores and shows on the confirmation page.

Example prompt: POST a confirmed hotel offer with one guest (name, email, phone) and credit card details to /booking/hotel-bookings and return the Amadeus booking id and provider confirmation.

### Multi-Room Family Booking

Travel agencies booking two adjoining rooms for a family submit a single hotel-bookings call with the matching offer ids and one set of guest details per room. The response carries one booking id per room together with provider confirmations, simplifying the manage-booking experience.

Example prompt: Create two hotel bookings on the same property by submitting two offer ids and per-room guest details in a single call to /booking/hotel-bookings.

### Corporate Travel Hotel Reservation

Corporate booking tools call Hotel Booking with the corporate traveller's profile data and a corporate credit card token issued by the integrator's PSP. The Amadeus booking id and provider confirmation are written to the traveller's expense record and the on-property folio is reconciled later via the corporate program.

Example prompt: Book a single-night hotel stay for a corporate traveller in NYC using a stored offer id and a tokenised corporate card.

### Agent-Driven Hotel Booking via Jentic

An AI travel concierge that searches Amadeus hotel inventory uses Jentic to call the Hotel Booking endpoint once the user confirms. Jentic resolves OAuth and validates the offer, guest, and payment payload against the operation schema, returning the booking id the agent can show the user.

Example prompt: Call jentic.search('book an Amadeus hotel offer'), load the operation, and execute it with offerId, guests, and payments to return the Amadeus booking id.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /booking/hotel-bookings | Create a hotel reservation from a confirmed offer |

## Key resources

- **Hotel Bookings** — Single endpoint that accepts a confirmed hotel offer id, guest details, and payment information and creates a reservation with the underlying hotel provider.

## Why Jentic

- **Setup:** Wiring Hotel Booking by hand means running the Amadeus Self-Service OAuth 2.0 client_credentials exchange, refreshing the bearer token before each call, keeping test bookings off the production host, and assembling the confirmed offer id, guest details, and payment information into the exact body the endpoint requires. Through Jentic you install once, import Hotel Booking from the API Directory, store the client_id and client_secret once, and your agent calls it.
- **Permission scoping:** The offer id, guests, and payment details all travel in the POST request body to /booking/hotel-bookings, not in the URL path, so scoping is by operation rather than by a single offer. Limit the agent to the operations it needs, such as creating a hotel booking, and it cannot reach flight-order or cancellation operations unless you add them.
- **Credential handling:** Your Amadeus client_id and client_secret are stored once, encrypted, by your own Jentic One instance, which runs the OAuth exchange and injects a fresh bearer token at execution time. The secret never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'book an Amadeus hotel offer', and Jentic returns the /booking/hotel-bookings operation with its required offerId, guests, and payments body shapes so the agent calls it directly.

## Related APIs

- **Hotel Search** — Returns the offer ids this API consumes.
- **Hotel Name Autocomplete** — Resolves user-typed hotel names into Amadeus hotel ids.
- **Hotel Ratings** — Returns sentiment scores and ratings for a hotel id.
- **Flight Create Orders** — Same booking pattern, but for flights instead of hotels.

## FAQ

### What authentication does the Hotel Booking API use?

Amadeus Self-Service OAuth 2.0 client_credentials. Exchange your client_id and client_secret at https://api.amadeus.com/v1/security/oauth2/token for a bearer token and pass it in the Authorization header. Through Jentic, the credentials live in the encrypted vault and the bearer token is rotated for you on each call to /booking/hotel-bookings.

### Should I use this API in the test environment for live testing?

No - Amadeus warns against running test bookings against production, since real reservations are sent to hotel providers and excessive cancellations can get an integrator blacklisted. Use the test base host (test.api.amadeus.com) with sample offer ids during development.

### What are the rate limits for the Hotel Booking API?

Amadeus Self-Service Test environment caps booking endpoints at 1 transaction per second per API key with a monthly quota; Production limits scale with your Self-Service plan tier. Bearer tokens themselves expire after roughly 30 minutes.

### How do I create a hotel booking through Jentic?

Run pip install jentic, then call jentic.search('book an Amadeus hotel offer'), load the operation, and execute it with offerId, guests, and payments. Jentic posts to /booking/hotel-bookings and returns the Amadeus booking id and provider confirmation.

### Does this API charge the guest's credit card?

Card details submitted here are forwarded to the hotel provider for processing under the offer's payment policy (deposit, full charge, or pay-at-property). The integrator should still tokenise card data through its own PSP for storage and PCI scope, rather than persisting raw card numbers.

### How do I cancel a hotel booking I just created?

Cancellation is not part of this API. Use the hotel provider's cancellation flow via the confirmation number returned in the booking response, or the Amadeus Self-Service Hotel Order Management endpoints if your account has access.

### Can I limit what my agent is allowed to do with the Amadeus Hotel Booking API?

Yes. Because Jentic One is self-hosted, you decide which operations your agent may call, and you can grant it only the create-hotel-booking operation at /booking/hotel-bookings. The offer id, guest details, and payment information all travel in the POST request body, so scoping is by operation rather than by a single offer. With only this operation enabled, the agent cannot reach flight-order or cancellation operations, and it uses only the Amadeus client_id and client_secret your instance holds.
