2.2.3 Push Price Data
About 1401 wordsAbout 5 min
2025-04-25
Tips
- Required.
- Full latest data update.
- All "*List" nodes support multiple ones
- Please note that the
Restrictionnode is a full data update, not an increment. If you need to clear all the Restriction nodes, just pass in {} - Please note that the
MealInfonode is a full data update
URL
/supplier/openapi/{supplierCode}/push/rates
Input Parameters
| Field | Type | Required | Description |
|---|---|---|---|
hotelId | String | true | Hotel ID. Related toidType, klookHotelId or supplierHotelId. Currently only supports klookHotelId. |
dailyRateDataList | list<DailyRateData> | true | Daily rate list. |
DailyRateData Description
| Field | Type | Required | Description |
|---|---|---|---|
roomId | String | true | Room ID. Related toidType, klookRoomId or supplierRoomId. |
ratePlanId | String | true | Rate plan ID. Related toidType, "klookRatePlanId" or "supplierRatePlanId". |
dateRangeList | list<DateRange> | true | Date range list. |
currency | String | false | Currency. Standard 3-letter currency code. |
inventory | Integer | false | Inventory. |
mealInfo | MealInfo | false | Meal information. If not present, it means no meal. |
close | string | false | Whether to close room. Enumeration: open, close. Null defaults to open (no restriction). |
cta | string | false | Close to arrival. Enumeration: open, close. Null defaults to open (no restriction). |
ctd | string | false | Close to departure. Enumeration: open, close. Null defaults to open (no restriction). |
restriction | Restriction | false | Restriction conditions. |
rateData | RateData | false | Price data. |
DateRange Description
| Field | Type | Required | Description |
|---|---|---|---|
start | String | true | Start date: YYYY-MM-DD (inclusive). Maximum interval of 180 days between start and end. |
end | String | true | End date: YYYY-MM-DD (inclusive). Maximum interval of 180 days between start and end. |
MealInfo Description
| Field | Type | Required | Description |
|---|---|---|---|
meal | integer | true | Meal type: 0-No meal,1-Breakfast,2-Lunch,3-Breakfast & Lunch,4-Dinner,5-Breakfast & Dinner,6-Lunch & Dinner,7-Breakfast & Lunch & Dinner. |
mealCount | integer | false | Meal servings. -1: Not specified, -100: By number of people,> 0: Actual number of servings.Null, -1, or -100 will currently be treated as meal servings = number of people on the Klook side. |
Restriction Description
| Field | Type | Required | Description |
|---|---|---|---|
minStayThrough | Integer | false | Minimum consecutive stay for the entire stay. |
maxStayThrough | Integer | false | Maximum consecutive stay for the entire stay. |
minStayArrival | Integer | false | Minimum consecutive stay from the first day. |
maxStayArrival | Integer | false | Maximum consecutive stay from the first day. |
minAdvanceDay | Integer | false | Minimum days in advance to book. |
maxAdvanceDay | Integer | false | Maximum days in advance to book. |
fpLos | String | false | Full Pattern Length of Stay restriction. refer to 4.2 Restriction Description |
RateData Description
| Field | Type | Required | Description |
|---|---|---|---|
type | integer | true | 1: roomRate2: personRate |
roomRate | OpenApiBaseRate | false | Common price. Room rate, regardless of the number of people. Mutually exclusive with personRate. |
personRate | OpenApiPersonRate | false | Price per person. Mutually exclusive with roomRate. |
OpenApiBaseRate Description
| Field | Type | Required | Description |
|---|---|---|---|
amountBeforeTax | String | false | Price before tax |
amountAfterTax | String | true | Price after tax |
OpenApiPersonRate Description
| Field | Type | Required | Description |
|---|---|---|---|
basePersonRateList | list<BasePersonAmount> | false | Base price data per number of people. |
extraAdultRate | BaseAmount | false | Extra adult price data. |
extraChildRate | ExtraChildRate | false | Extra child price data. refer to 4.3 Api rate Description |
ExtraChildRate Description
| Field | Type | Required | Description |
|---|---|---|---|
childType | int | true | 0-Normal: Adult-child count enumeration list.1-ByAge: Child age-based pricing.2-Free: Child free.3-AsAdult: Child counts as adult.a: When childType = 0 (Normal), use childNormal for calculation.b: When childType = 1 (ByAge), use childByAgeList for calculation.c: When childType = 2 (Free) or 3 (AsAdult), ignore childByAgeList and childNormal, calculate the final price using basePersonRateList after converting the number of people. |
childByAgeList | list<ChildAgeRate> | false | Extra single child price data - child age-based (childType = 1). |
childNormal | BaseAmount | false | Extra single child price data (childType = 0). |
ChildAgeRate Description
| Field | Type | Required | Description |
|---|---|---|---|
minAge | Integer | true | Minimum age. |
maxAge | Integer | true | Maximum age. |
amountBeforeTax | String | false | Price before tax. |
amountAfterTax | String | true | Price after tax. |
BasePersonAmount Description
| Field | Type | Required | Description |
|---|---|---|---|
childCount | Integer | true | Number of children. |
adultCount | Integer | true | Number of adults. |
amountBeforeTax | String | false | Price before tax. |
amountAfterTax | String | true | Price after tax. |
BaseAmount Description
| Field | Type | Required | Description |
|---|---|---|---|
amountBeforeTax | String | false | Price before tax. |
amountAfterTax | String | true | Price after tax. |
Input Example - Full Data (All "*List" nodes support multiple)
{
"base": {
"requestId": "xxxxx111bbbbbcccc",
"requestTime": "2025-11-28T12:06:15.890+08:00"
},
"requestData": {
"hotelId": "3850",
"dailyRateDataList": [
{
"roomId": "4991",
"ratePlanId": "10482884",
"dateRangeList": [
{
"start": "2025-07-03",
"end": "2025-07-03"
},
{
"start": "2025-07-05",
"end": "2025-07-07"
}
],
"currency": "SGD",
"inventory": 3,
"mealInfo": {
"meal": 1,
"mealCount": 2
},
"close": "open",
"cta": "close",
"ctd": "close",
"restriction": {
"minStayThrough": 1,
"maxStayThrough": 10,
"minStayArrival": 5,
"maxStayArrival": 10,
"minAdvanceDay": 0,
"maxAdvanceDay": 0,
"fplos": "1111111"
},
"rateData": {
"type": 1,
"roomRate": {
"amountBeforeTax": "190",
"amountAfterTax": "200"
}
}
},
{
"roomId": "4991",
"ratePlanId": "10482884",
"dateRangeList": [
{
"start": "2025-07-08",
"end": "2025-07-10"
}
],
"currency": "SGD",
"inventory": 10,
"mealInfo": {
"meal": 1,
"mealCount": 4
},
"close": "open",
"cta": "open",
"ctd": "open",
"restriction": {
"minStayThrough": 1,
"maxStayThrough": 1,
"minStayArrival": 1,
"maxStayArrival": 1,
"minAdvanceDay": 1,
"maxAdvanceDay": 1,
"fplos": "1111111"
},
"rateData": {
"type": 2,
"personRate": {
"basePersonRateList": [
{
"childCount": 0,
"adultCount": 2,
"amountBeforeTax": "1191",
"amountAfterTax": "1100"
},
{
"childCount": 1,
"adultCount": 2,
"amountBeforeTax": "1192",
"amountAfterTax": "1110"
}
],
"extraAdultRate": {
"amountBeforeTax": "140",
"amountAfterTax": "150"
},
"extraChildRate": {
"childType": 1,
"childByAgeList": [
{
"minAge": 0,
"maxAge": 6,
"amountBeforeTax": "110",
"amountAfterTax": "110"
},
{
"minAge": 6,
"maxAge": 12,
"amountBeforeTax": "120",
"amountAfterTax": "120"
}
]
}
}
}
},
{
"roomId": "4991",
"ratePlanId": "10482885",
"dateRangeList": [
{
"start": "2025-07-03",
"end": "2025-07-03"
}
],
"currency": "SGD",
"inventory": 3,
"mealInfo": {
"meal": 1,
"mealCount": 2
},
"close": "open",
"cta": "close",
"ctd": "close",
"restriction": {
"maxStayArrival": 0,
"minAdvanceDay": 0,
"maxAdvanceDay": 0,
"fplos": "1111111"
},
"rateData": {
"type": 1,
"roomRate": {
"amountBeforeTax": "190",
"amountAfterTax": "200"
},
"personRate": {
"basePersonRateList": [
{
"childCount": 0,
"adultCount": 2,
"amountBeforeTax": "91",
"amountAfterTax": "100"
},
{
"childCount": 1,
"adultCount": 2,
"amountBeforeTax": "92",
"amountAfterTax": "110"
}
],
"extraAdultRate": {
"amountBeforeTax": "40",
"amountAfterTax": "50"
},
"extraChildRate": {
"childType": 0,
"childNormal": {
"amountBeforeTax": "8",
"amountAfterTax": "10"
}
}
}
}
},
{
"roomId": "4993",
"ratePlanId": "10482942",
"dateRangeList": [
{
"start": "2025-07-03",
"end": "2025-07-03"
}
],
"currency": "SGD",
"inventory": 3,
"mealInfo": {
"meal": 1,
"mealCount": 2
},
"close": "open",
"cta": "close",
"ctd": "close",
"restriction": {
"maxStayArrival": 0,
"minAdvanceDay": 0,
"maxAdvanceDay": 0,
"fplos": "1111111"
},
"rateData": {
"type": 1,
"roomRate": {
"amountBeforeTax": "190",
"amountAfterTax": "200"
},
"personRate": {
"basePersonRateList": [
{
"childCount": 0,
"adultCount": 2,
"amountBeforeTax": "91",
"amountAfterTax": "100"
},
{
"childCount": 1,
"adultCount": 2,
"amountBeforeTax": "92",
"amountAfterTax": "110"
}
],
"extraAdultRate": {
"amountBeforeTax": "40",
"amountAfterTax": "50"
},
"extraChildRate": {
"childType": 1,
"childByAgeList": [
{
"minAge": 0,
"maxAge": 6,
"amountBeforeTax": "1",
"amountAfterTax": "10"
},
{
"minAge": 6,
"maxAge": 12,
"amountBeforeTax": "2",
"amountAfterTax": "20"
}
]
}
}
}
}
],
"losRateDataList": []
}
}Input Example - Incremental Data (All "*List" nodes support multiple)
Incremental Data - Price Update
{
"base": {
"requestId": "xxxxx111bbbbbcccc",
"requestTime": "2025-11-28T12:06:15.890+08:00"
},
"requestData": {
"hotelId": "3850",
"dailyRateDataList": [
{
"roomId": "4991",
"ratePlanId": "10482884",
"dateRangeList": [
{
"start": "2025-05-01",
"end": "2025-05-30"
}
],
"currency": "HKD",
"rateData": {
"type": 2,
"personRate": {
"basePersonRateList": [
{
"childCount": 0,
"adultCount": 2,
"amountBeforeTax": "91",
"amountAfterTax": "100"
},
{
"childCount": 1,
"adultCount": 2,
"amountBeforeTax": "92",
"amountAfterTax": "110"
}
],
"extraAdultRate": {
"amountBeforeTax": "40",
"amountAfterTax": "50"
},
"extraChildRate": {
"childType": 0,
"childNormal": {
"amountBeforeTax": "8",
"amountAfterTax": "10"
}
}
}
}
}
]
}
}Incremental Data - Restriction Policy Update
{
"base": {
"requestId": "xxxxx111bbbbbcccc",
"requestTime": "2025-11-28T12:06:15.890+08:00"
},
"requestData": {
"hotelId": "3850",
"dailyRateDataList": [
{
"roomId": "4991",
"ratePlanId": "10482884",
"dateRangeList": [
{
"start": "2025-05-01",
"end": "2025-05-30"
}
],
"restriction": {
"maxStayArrival": 10,
"minAdvanceDay": 0,
"maxAdvanceDay": 10,
"fplos": "1111111"
}
}
]
}
}Incremental Data - Meal Update
{
"base": {
"requestId": "xxxxx111bbbbbcccc",
"requestTime": "2025-11-28T12:06:15.890+08:00"
},
"requestData": {
"hotelId": "3850",
"dailyRateDataList": [
{
"roomId": "4991",
"ratePlanId": "10482884",
"dateRangeList": [
{
"start": "2025-05-01",
"end": "2025-05-30"
}
],
"mealInfo": {
"meal": 1,
"mealCount": 2
}
}
]
}
}Incremental Data - Inventory Update
{
"base": {
"requestId": "xxxxx111bbbbbcccc",
"requestTime": "2025-11-28T12:06:15.890+08:00"
},
"requestData": {
"hotelId": "3850",
"dailyRateDataList": [
{
"roomId": "4991",
"ratePlanId": "10482884",
"dateRangeList": [
{
"start": "2025-05-01",
"end": "2025-05-30"
},
{
"start": "2025-06-01",
"end": "2025-06-30"
}
],
"inventory": 10
}
]
}
}Incremental Data - Close Room Update
{
"base": {
"requestId": "xxxxx111bbbbbcccc",
"requestTime": "2025-11-28T12:06:15.890+08:00"
},
"requestData": {
"hotelId": "3850",
"dailyRateDataList": [
{
"roomId": "4991",
"ratePlanId": "10482884",
"dateRangeList": [
{
"start": "2025-05-01",
"end": "2025-05-30"
}
],
"close": "open"
}
]
}
}Incremental Data - Close to Arrival Update
{
"base": {
"requestId": "xxxxx111bbbbbcccc",
"requestTime": "2025-11-28T12:06:15.890+08:00"
},
"requestData": {
"hotelId": "3850",
"dailyRateDataList": [
{
"roomId": "4991",
"ratePlanId": "10482884",
"dateRangeList": [
{
"start": "2025-05-01",
"end": "2025-05-30"
}
],
"cta": "close"
}
]
}
}Incremental Data - Close to Departure Update
{
"base": {
"requestId": "xxxxx111bbbbbcccc",
"requestTime": "2025-11-28T12:06:15.890+08:00"
},
"requestData": {
"hotelId": "3850",
"dailyRateDataList": [
{
"roomId": "4991",
"ratePlanId": "10482884",
"dateRangeList": [
{
"start": "2025-05-01",
"end": "2025-05-30"
}
],
"ctd": "close"
}
]
}
}Output Parameters
Standard empty response
Output Example
{
"success": true,
"error": {
"code": "",
"message": ""
}
}