Hotels B2B API (2.0.0)

Download OpenAPI specification:

Our Hotels API gives you a complete B2B gateway for searching, pricing, booking, and managing hotel inventory with precision. It connects your system to real-time availability, rich hotel content, multi-rate handling, instant confirmations, and full booking lifecycle controls.

Built for speed, stability, and clean integration, it lets your platform deliver consistent results, automate operations, and scale without friction. Whether you are powering a B2B portal, a mobile app, or a distribution engine, this API provides the structure you need to move fast, stay reliable, and serve your customers with confidence.

Authentication

All API endpoints require Bearer Token authentication. Each request must include a valid token in the header to ensure secure and authorized access.

Example:

Authorization: Bearer 9f12c3ab-47c8-4e91-bd84-2c7a1f83b6d1

Environments

  • Testing Environment: Use for development and testing with live_booking: false
  • Live Environment: Production bookings with live_booking: true

Status Fields

The API uses two distinct status fields:

  • status: Payment/order status (payment_pending, payment_success)
  • booking_status: Hotel supplier booking status (book_success, book_fail, pending)

Booking Flow Diagram

┌─────────────────┐
│  Search Hotels  │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Hotel Details   │ (Optional)
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Get Rooms       │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│Check Availability│
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Create Booking  │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│ Pay from Wallet │
└────────┬────────┘
         │
         ▼
┌─────────────────────────────────┐
│ Poll Order Details              │
│ (every 10 min for 3 hours)      │
└────────┬────────────────────────┘
         │
         ▼
┌─────────────────┐
│ Final Status    │
│ book_success or │
│ book_fail       │
└─────────────────┘

Booking Status Polling

After payment (payWallet), you must poll the Order Details endpoint to retrieve the final booking status:

┌──────────────┐     ┌─────────────────┐     ┌──────────────────┐
│  payWallet   │────▶│  Poll Order     │────▶│  Check Status    │
│  (payment)   │     │  Details        │     │                  │
└──────────────┘     └─────────────────┘     └────────┬─────────┘
                                                      │
                     ┌────────────────────────────────┼────────────────────────────────┐
                     │                                │                                │
                     ▼                                ▼                                ▼
              ┌──────────────┐               ┌──────────────┐               ┌──────────────────┐
              │ book_success │               │  book_fail   │               │ No final status  │
              │ (Confirmed)  │               │  (Failed)    │               │ after 3 hours    │
              └──────────────┘               └──────────────┘               └────────┬─────────┘
                                                                                     │
                                                                                     ▼
                                                                            ┌──────────────────┐
                                                                            │ Mark unconfirmed │
                                                                            │ Contact Account  │
                                                                            │ Manager          │
                                                                            └──────────────────┘
  • Polling Frequency: Once every 10 minutes
  • Polling Duration: Continue for 3 hours
  • Final Statuses: book_success or book_fail
  • Unconfirmed Status: If no final status is received after 3 hours, mark the booking as "unconfirmed" (not failed) and contact your account manager

Search

Hotel search operations give your system the ability to query real-time availability, pricing, and room options across all connected suppliers. You can filter by destination, dates, occupancy, and other parameters to retrieve accurate, structured results ready for display or further processing.

Search Hotels

Search for available hotels with comprehensive filtering options. Supports searching by city or by specific hotel IDs. Multiple rooms with different guest configurations can be searched.

Authorizations:
bearerAuth
Request Body schema: application/json
required
required
Array of objects (RoomSearch) non-empty

Array of room objects with guest configurations

nationality
required
string = 2 characters

Guest nationality code (ISO 3166-1 alpha-2)

country_code
string = 2 characters

Country code for search (required when searching by city)

city
string

City code for search (required when searching by city)

hotels_ids
Array of integers

Array of specific hotel IDs to search (when provided, country_code and city are optional)

check_in
required
string <date>

Check-in date (YYYY-MM-DD)

check_out
required
string <date>

Check-out date (YYYY-MM-DD)

currency
required
string = 3 characters

Currency code (ISO 4217)

language
required
string = 2 characters

Language preference (ISO 639-1)

Responses

Request samples

Content type
application/json
Example
{
  • "rooms": [
    ],
  • "nationality": "EG",
  • "country_code": "AE",
  • "city": "DXB",
  • "check_in": "2025-12-14",
  • "check_out": "2025-12-16",
  • "currency": "USD",
  • "language": "en"
}

Response samples

Content type
application/json
{
  • "search_id": "575f395a-e8c9-4cc4-a85b-a12551678eeb",
  • "search_key": "hotels:results:575f395a-e8c9-4cc4-a85b-a12551678eeb",
  • "search": {
    },
  • "hotels": [
    ]
}

Hotel Details

Retrieve comprehensive hotel information including descriptions, amenities, images, and location data to enrich your user experience.

Get Hotel Details

Retrieves comprehensive details about a specific hotel including full description, amenities, gallery images, and location information.

Authorizations:
bearerAuth
Request Body schema: application/json
required
session
required
string <uuid>

Search session ID from search response

hotel
required
string

Hotel index from search results

currency
required
string

Currency code

language
required
string

Language preference

Responses

Request samples

Content type
application/json
{
  • "session": "575f395a-e8c9-4cc4-a85b-a12551678eeb",
  • "hotel": "0",
  • "currency": "USD",
  • "language": "en"
}

Response samples

Content type
application/json
{
  • "id": 989573,
  • "name": "Movenpick Grand Al Bustan Hotel",
  • "type": "HOTEL",
  • "description": "This hotel is located on Casablanca Road in the Al Garhoud district, just 5 minutes from Dubai International Airport...",
  • "stars": 5,
  • "address": "Casablanca Street, Po Box 30880 Dubai Airport",
  • "city": {
    },
  • "country": {
    },
  • "postal_code": "",
  • "phones": [
    ],
  • "provider": "hotel_beds",
  • "coordinates": {
    },
  • "emails": [
    ],
  • "website": "",
  • "featured": false,
  • "check_in_time": "None",
  • "check_out_time": "None",
  • "check_in_out_policy": "string",
  • "zone": {
    },
  • "amenities": [
    ],
  • "fact_details": { },
  • "facts_groups": {
    }
}

Rooms

Access detailed room availability, pricing options, meal plans, and cancellation policies for selected hotels to help customers make informed booking decisions.

Get Available Rooms

Retrieves all available room options for a selected hotel, including room types, pricing, meal plans, and cancellation policies.

Authorizations:
bearerAuth
Request Body schema: application/json
required
session
required
string <uuid>

Search session ID from search response

hotel
required
string

Hotel index from search results

currency
required
string

Currency code

language
required
string

Language preference

Responses

Request samples

Content type
application/json
{
  • "session": "575f395a-e8c9-4cc4-a85b-a12551678eeb",
  • "hotel": "0",
  • "currency": "USD",
  • "language": "en"
}

Response samples

Content type
application/json
{
  • "accommodations": [
    ],
  • "lowest_price": {
    },
  • "free_cancellation": true
}

Booking

Create and manage hotel bookings with complete guest information, room selections, and booking preferences. This includes checking availability, creating bookings, and processing payments from wallet.

Create Booking

Creates a new hotel booking with guest information. This endpoint initiates the booking process but does not finalize it. You must follow up with the Confirm Booking endpoint to complete the reservation.

Authorizations:
bearerAuth
Request Body schema: application/json
required
session
required
string <uuid>

Search session ID

hotel
required
string

Hotel index from search

currency
required
string

Currency code

language
required
string

Language preference

nationality
required
string

Guest nationality code

live_booking
boolean

Controls booking environment:

  • true: Creates a live booking (if account is live)
  • false: Creates a test booking
  • If not provided: Uses account's current environment (live for live accounts, test for test accounts)
required
object (Client)
required
Array of objects (RoomBooking)

Array of room bookings with guest details

Responses

Request samples

Content type
application/json
{
  • "session": "575f395a-e8c9-4cc4-a85b-a12551678eeb",
  • "hotel": "0",
  • "currency": "USD",
  • "language": "en",
  • "nationality": "EG",
  • "live_booking": false,
  • "client": {
    },
  • "rooms": [
    ]
}

Response samples

Content type
application/json
{
  • "message": "Order Created"
}

Check Availability

Verifies room availability and checks for any price changes before creating a booking. Call this endpoint after selecting rooms to ensure they are still available.

Authorizations:
bearerAuth
Request Body schema: application/json
required
session
required
string <uuid>

Search session ID

hotel
required
string

Hotel ID

currency
required
string

Currency code

language
required
string

Language preference

rooms
required
Array of strings

Array of room IDs to check availability

Responses

Request samples

Content type
application/json
{
  • "session": "696cc248-50c9-44d1-9425-56a44d1bbc98",
  • "hotel": "989574",
  • "currency": "USD",
  • "language": "en",
  • "rooms": [
    ]
}

Response samples

Content type
application/json
{
  • "available": true,
  • "price_change": false,
  • "currency": "USD",
  • "change_amount": 0,
  • "rooms": [
    ],
  • "cancellation_policy": {
    }
}

Pay from Wallet

Processes payment from your wallet and finalizes the hotel booking. This endpoint completes the reservation process, deducts credit from the agency account, and initiates the booking with the supplier.

Important: After payment, you must poll the Order Details endpoint every 10 minutes for up to 3 hours to receive the final booking status (book_success or book_fail). If no final status is received, mark the booking as "unconfirmed" and contact your account manager.

Authorizations:
bearerAuth
path Parameters
session
required
string <uuid>
Example: 575f395a-e8c9-4cc4-a85b-a12551678eeb

Search session ID used in booking creation

Responses

Response samples

Content type
application/json
{
  • "message": "Order confirmed successfully",
  • "data": [
    ],
  • "order": {
    }
}

Orders

Retrieve order details and monitor booking status. After payment, poll order details every 10 minutes for up to 3 hours to receive final booking status (book_success or book_fail).

Retrieve Order Details

Retrieves comprehensive details of a specific hotel booking, including guest information, room details, pricing, and booking status.

Polling Instructions:

  • After payment (payWallet), poll this endpoint every 10 minutes
  • Continue polling for up to 3 hours
  • Monitor booking_status field for final status: book_success or book_fail
  • If no final status after 3 hours, mark as "unconfirmed" and contact your account manager
Authorizations:
bearerAuth
path Parameters
session
required
string <uuid>
Example: 575f395a-e8c9-4cc4-a85b-a12551678eeb

Search session ID from booking

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "order": {
    }
}