2.2.2.3 Order Creation
About 580 wordsAbout 2 min
2025-11-04
Warning
- Mandatory
- Klook currently supports a maximum of 8 rooms of the same room type per single order. If the integrator does not support multiple rooms in a single order, please inform Klook of the maximum number of rooms supported per order. Klook can configure the integrator-level order splitting factor.
- The booking interface only has a retry mechanism in case of timeout. The integrator needs to ensure the idempotency of the booking interface, meaning that for the same order number, if the integrator has already processed the booking request, it should not be processed again; only the corresponding order data should be returned to Klook.
URL
Integrator to define and provide to Klook
Input Parameters
| Field | Type | Mandatory | Description |
|---|---|---|---|
hotelId | String | true | Integrator Hotel ID |
roomId | String | true | Integrator Room ID |
ratePlanId | String | true | Integrator Rate Plan ID |
orderCode | String | true | Klook Order Number (globally unique) |
checkIn | String | true | Check-in Time, format: yyyy-MM-dd |
checkOut | String | true | Check-out Time, format: yyyy-MM-dd |
currency | String | true | Standard three-letter currency code |
contact | Contact | true | Contact person information default language is en_US |
specialRequest | String | false | Special requests default language is en_US |
occupancy | Occupancy | true | Room occupancy information (occupancy information per room) |
rooms | List<Room> | true | Occupancy information. List size = number of rooms |
price | Price | true | Price information |
configData | String | false | Custom data returned from integrator's price check |
platform | String | true | Request source platform Enum: website, mobile |
Room
| Field | Type | Mandatory | Description |
|---|---|---|---|
guests | List<Guest> | true | Guest information |
Guest
| Field | Type | Mandatory | Description |
|---|---|---|---|
firstName | String | true | First Name |
lastName | String | true | Last Name |
Occupancy
| Field | Type | Mandatory | Description |
|---|---|---|---|
adultCount | Integer | true | Number of adults |
childCount | Integer | true | Number of children |
childrenAges | List<Integer> | false | childrenAges will only exist if the number of children > 0 |
Price
| Field | Type | Mandatory | Description |
|---|---|---|---|
totalPrice | TotalPrice | true | Total price for multiple rooms and multiple nights |
TotalPrice
| Field | Type | Mandatory | Description |
|---|---|---|---|
amountBeforeTax | String | false | Price before tax. Unit: currency unit |
amountAfterTax | String | true | Price after tax. Unit: currency unit |
Contact
| Field | Type | Mandatory | Description |
|---|---|---|---|
firstName | String | true | First Name |
lastName | String | true | Last Name |
email | String | true | |
phone | String | true | Phone |
Base Input Parameter Extension Fields
| Field | Type | Mandatory | Description |
|---|---|---|---|
supplierAccount | String | false | openApi supplier account data Integrator defines the account data1: The account is used for different product types for specific use cases. For example, a Member account returns rates for Members only, non-Members will not see the rate. It supports multiple accounts2: If the integrator does not have multiple accounts, the value passed is null3: Length does not exceed 128 characters |
Input Parameter Example
Example
{
"base": {
"requestId": "xxxx",
"requestTime": "xxx",
"requestAgent": "xxx",
"openApiSign": "xx",
"supplierAccount": "account1",
"version": "xxx"
},
"requestData": {
"hotelId": " ",
"roomId": "room1",
"ratePlanId": " ",
"orderCode": " ",
"checkIn": " ",
"checkOut": " ",
"currency": "CNY",
"contact": {
"firstName": " ",
"lastName": " ",
"email": " ",
"phone": " "
},
"specialRequest": " ",
"occupancy": {
"adultCount": 2,
"childCount": 1,
"childrenAges": [
8
]
},
"rooms": [
{
"guests": [
{
"firstName": " ",
"lastName": " "
}
]
}
],
"price": {
"totalPrice": {
"amountBeforeTax": "180.56",
"amountAfterTax": "195.48"
}
},
"platform": "website",
"configData": "AAAABBBDDDBBDDDDDDD"
}
}Output Parameters
Result
| Field | Type | Mandatory | Description |
|---|---|---|---|
supplierOrderCode | String | true | Supplier order number |
supplierConfirmCode | String | false | Supplier confirmation code |
hotelConfirmCode | String | false | Hotel confirmation codes: separate multiple entries with commas |
status | String | true | Order status Please refer to 3.1 Order Status Description |
Output Parameter Example
Example
{
"success": true,
"error": {
"code": "",
"message": ""
},
"result": {
"supplierOrderCode": "",
"supplierConfirmCode": "",
"hotelConfirmCode": "",
"status": "bookSuccess"
}
}