Create Reservation [Booking Engine]
Creates a new reservation for a given property. This end-point is applicable for Direct Booking websites or the companies who power them.
HTTP Request​
POST https://dev.calry.app/api/v1/vrs/reservations/booking-engine
Headers​
Header | Value |
---|---|
Authorization | Bearer YOUR_ACCESS_TOKEN |
workspaceId | YOUR_WORKSPACE_ID |
integrationAccountId | YOUR_INTEGRATION_ACCOUNT_ID |
Request Body​
The request body should be a JSON object containing the following fields:
Field | Type | Description |
---|---|---|
morChannel | string | Specifies if the Merchant of Record is PMS or Self. |
propertyId | string/number | Identifier of the Property within PMS. |
roomId | string/number | Identifier of the Room or Room type within PMS. |
arrivalDate | string | Date of arrival in YYYY-MM-DD format. |
departureDate | string | Date of arrival in YYYY-MM-DD format. |
arrivalEstimatedTime | string/number | Optional. Estimated time of arrival. |
departureEstimatedTime | string/number | Optional. Estimated time of departure. |
guest | object | |
guest.name | string | Full name of the guest. |
guest.firstName | string | First name of the guest. |
guest.lastName | string | Last name of the guest. |
guest.email | string | Email address of the guest. |
guest.phone | string/number | Optional. Phone number of the guest. |
guest.address | object | |
guest.address.line1 | string | Address line 1 of the guest. |
guest.address.line2 | string | Address line 2 of the guest. |
guest.address.postalCode | string | Postal code of the guest's address. |
guest.address.city | string | City of the guest's address. |
guest.address.state | string | State of the guest's address. |
guest.address.country | string | Country of the guest's address in ISO 3166-1 alpha-2 standard. |
numberOfGuests | number | Total number of guests. |
numberOfAdults | number | Optional. Number of adults among the guests. |
numberOfChildren | number | Optional. Number of children among the guests. |
numberOfInfants | number | Optional. Number of infants among the guests. |
numberOfPets | number | Optional. Number of pets accompanying the guests. |
totalPrice | number | Total price for the stay. |
currency | string | Currency in which the payment is made. |
notes | string | Optional. Additional notes regarding the stay. |
comments | string | Optional. Additional comments regarding the stay. |
paymentProviderKey | string | Optional. Payment provider key. (Stripe payment token) |
paymentProviderId | string | Optional. Payment provider id. |
transactionId | string | Optional. Identifier of the transaction from the respective Payment Gateway used by the Property manager/host. |
cardDetails | object | Optional. |
cardDetails.cardNumber | string | Optional. Credit Card's number. |
cardDetails.cardHolderName | string | Optional. Name of the Credit Card holder. |
cardDetails.expiryMonth | string | Optional. Expiry month of the credit card. |
cardDetails.expiryYear | string | Optional. Expiry year of the credit card. |
cardDetails.cvv | string | Optional. Verification Value of the card in use. |
promotionCode | string | Optional. Promotion code to apply to the reservation. |
Note:
- If room identifier is not supported, pass the roomId same as propertyId.
- For Lodgify integration, pass the websiteID as the paymentProviderId.
- When
morChannel = PMS
for BookingSync integration, pass the CC details as well for a succesfull reservation.
morChannel​
Value | Description |
---|---|
SELF | Used when payments are handled by the Property Manager/host OR the Direct Booking Engine. |
PMS | Used when payments are handled by the PMS. |
Guest.address.country​
Afghanistan = "AF"
Ã…land Islands = "AX"
Albania = "AL"
Algeria = "DZ"
American Samoa = "AS"
Andorra = "AD"
Angola = "AO"
Anguilla = "AI"
Antarctica = "AQ"
Antigua and Barbuda = "AG"
Argentina = "AR"
Armenia = "AM"
Aruba = "AW"
Australia = "AU"
Austria = "AT"
Azerbaijan = "AZ"
Bahamas = "BS"
Bahrain = "BH"
Bangladesh = "BD"
Barbados = "BB"
Belarus = "BY"
Belgium = "BE"
Belize = "BZ"
Benin = "BJ"
Bermuda = "BM"
Bhutan = "BT"
Bolivia = "BO"
Bonaire, Sint Eustatius and Saba = "BQ"
Bosnia and Herzegovina = "BA"
Botswana = "BW"
Bouvet Island = "BV"
Brazil = "BR"
British Indian Ocean Territory = "IO"
Brunei Darussalam = "BN"
Bulgaria = "BG"
Burkina Faso = "BF"
Burundi = "BI"
Cabo Verde = "CV"
Cambodia = "KH"
Cameroon = "CM"
Canada = "CA"
Cayman Islands = "KY"
Central African Republic = "CF"
Chad = "TD"
Chile = "CL"
China = "CN"
Christmas Island = "CX"
Cocos (Keeling) Islands = "CC"
Colombia = "CO"
Comoros = "KM"
Congo = "CG"
Congo, Democratic Republic of the = "CD"
Cook Islands = "CK"
Costa Rica = "CR"
Croatia = "HR"
Cuba = "CU"
Curaçao = "CW"
Cyprus = "CY"
Czechia = "CZ"
Denmark = "DK"
Djibouti = "DJ"
Dominica = "DM"
Dominican Republic = "DO"
Ecuador = "EC"
Egypt = "EG"
El Salvador = "SV"
Equatorial Guinea = "GQ"
Eritrea = "ER"
Estonia = "EE"
Eswatini = "SZ"
Ethiopia = "ET"
Falkland Islands (Malvinas) = "FK"
Faroe Islands = "FO"
Fiji = "FJ"
Finland = "FI"
France = "FR"
French Guiana = "GF"
French Polynesia = "PF"
French Southern Territories = "TF"
Gabon = "GA"
Gambia = "GM"
Georgia = "GE"
Germany = "DE"
Ghana = "GH"
Gibraltar = "GI"
Greece = "GR"
Greenland = "GL"
Grenada = "GD"
Guadeloupe = "GP"
Guam = "GU"
Guatemala = "GT"
Guernsey = "GG"
Guinea = "GN"
Guinea-Bissau = "GW"
Guyana = "GY"
Haiti = "HT"
Holy See = "VA"
Honduras = "HN"
Hong Kong = "HK"
Hungary = "HU"
Iceland = "IS"
India = "IN"
Indonesia = "ID"
Iran = "IR"
Iraq = "IQ"
Ireland = "IE"
Isle of Man = "IM"
Israel = "IL"
Italy = "IT"
Jamaica = "JM"
Japan = "JP"
Jersey = "JE"
Jordan = "JO"
Kazakhstan = "KZ"
Kenya = "KE"
Kiribati = "KI"
Kuwait = "KW"
Kyrgyzstan = "KG"
Laos = "LA"
Latvia = "LV"
Lebanon = "LB"
Lesotho = "LS"
Liberia = "LR"
Libya = "LY"
Liechtenstein = "LI"
Lithuania = "LT"
Luxembourg = "LU"
Macao = "MO"
Madagascar = "MG"
Malawi = "MW"
Malaysia = "MY"
Maldives = "MV"
Mali = "ML"
Malta = "MT"
Marshall Islands = "MH"
Martinique = "MQ"
Mauritania = "MR"
Mauritius = "MU"
Mexico = "MX"
Micronesia = "FM"
Moldova = "MD"
Monaco = "MC"
Mongolia = "MN"
Montenegro = "ME"
Montserrat = "MS"
Morocco = "MA"
Mozambique = "MZ"
Myanmar = "MM"
Namibia = "NA"
Nauru = "NR"
Nepal = "NP"
Netherlands = "NL"
New Zealand = "NZ"
Nicaragua = "NI"
Niger = "NE"
Nigeria = "NG"
North Macedonia = "MK"
Norway = "NO"
Oman = "OM"
Pakistan = "PK"
Palau = "PW"
Palestine, State of = "PS"
Panama = "PA"
Papua New Guinea = "PG"
Paraguay = "PY"
Peru = "PE"
Philippines = "PH"
Poland = "PL"
Portugal = "PT"
Puerto Rico = "PR"
Qatar = "QA"
Romania = "RO"
Russia = "RU"
Rwanda = "RW"
Saint Kitts and Nevis = "KN"
Saint Lucia = "LC"
Saint Vincent and the Grenadines = "VC"
Samoa = "WS"
San Marino = "SM"
Saudi Arabia = "SA"
Senegal = "SN"
Serbia = "RS"
Seychelles = "SC"
Sierra Leone = "SL"
Singapore = "SG"
Slovakia = "SK"
Slovenia = "SI"
Solomon Islands = "SB"
Somalia = "SO"
South Africa = "ZA"
South Korea = "KR"
Spain = "ES"
Sri Lanka = "LK"
Sudan = "SD"
Suriname = "SR"
Sweden = "SE"
Switzerland = "CH"
Syria = "SY"
Taiwan = "TW"
Tajikistan = "TJ"
Tanzania = "TZ"
Thailand = "TH"
Timor-Leste = "TL"
Togo = "TG"
Tonga = "TO"
Tunisia = "TN"
Turkey = "TR"
Turkmenistan = "TM"
Tuvalu = "TV"
Uganda = "UG"
Ukraine = "UA"
United Arab Emirates = "AE"
United Kingdom = "GB"
United States = "US"
Uruguay = "UY"
Uzbekistan = "UZ"
Vanuatu = "VU"
Venezuela = "VE"
Vietnam = "VN"
Yemen = "YE"
Zambia = "ZM"
Zimbabwe = "ZW"
Example Requests​
Lodgify​
curl --location 'https://dev.calry.app/api/v1/vrs/reservations/booking-engine' \
--header 'Authorization: Bearer eyJraWQiOiJzLWMwMzE2MzExLTg3NDktNGNhMC05NDg0LTBlNWM1ZDVlMDExOSIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJpc3MiOiJodHRwczovL2Rldi5jYWxyeS5hcHAvYXBpL2F1dGgiLCJ1c2VySWQiOiJlNThhMTRjZS01NWQ0LTQyMGQtYmVlZi05M2U1MjJlYjcyZjAiLCJ3b3Jrc3BhY2VJZCI6ImEwZjE5YmMyLTNlNjktNGVhOC04ODkzLTgwMzFiYTBiMGEwYSIsIm5hbWUiOiJ0ZXN0IGtleSIsInNvdXJjZSI6Im1pY3Jvc2VydmljZSIsImlhdCI6MTczNzM2NDM0OSwiZXhwIjoyMDk3MzY0MzQ5fQ.G-8bEbT3VhkuwpsmEXzi1hTKfjilbtMZnRrWZ-bR5gcm3tIZ55zj_XI7bGKwMe1eVLIaloR5ULzRvwhUC3fg-CJ1cFc3MG5jUmex0iB1b50WxRJftbj55Bh8Xo7ooRYMOnJGQKG-YWVknQ0-Los42Urb2_ML-bTmP_nlUNRFWJoav_bJppNJ2vRnq9UpbXLUkbAiqKVuOnR3FEjPKwGn1At5zXVyU9pZdG7kdoHPgOuPNqC_-WwhbkZLHtV62GNtPF_fXVfi_8c3GJRnAd2F4uCM58if6XqV0MR9jNaNIWJpYx4grUY6-5Hg512zxwOv98Vc2mTs1oKXU_SO3E0-pg' \
--header 'workspaceId: a1f19bc2-3e69-4ea8-8893-8031ba0b0a0a' \
--header 'integrationAccountId: 689fa807-47b7-41e6-b7ca-6566b2e055d5' \
--header 'Content-Type: application/json' \
--data-raw '{
"morChannel": "PMS",
"propertyId": 608232,
"roomId": 675078,
"arrivalDate": "2025-10-18",
"departureDate": "2025-10-21",
"arrivalEstimatedTime": "14:00",
"departureEstimatedTime": "12:00",
"guest": {
"name": "Mukul Mehta",
"firstName": "Mukul",
"lastName": "Mehta",
"email": "daval.pravin@gmail.com",
"phone": "9876543210",
"address": {
"line1": "456 Oak Lane",
"line2": "Suite 12",
"postalCode": "67890",
"city": "Laketown",
"state": "Lakestate",
"country": "IN"
}
},
"status": "CONFIRMED",
"numberOfGuests": 5,
"numberOfAdults": 5,
"numberOfChildren": 1,
"numberOfInfants": 0,
"numberOfPets": 1,
"totalPrice": 148.6,
"currency": "USD",
"notes": "Need a hot tub.",
"paymentProviderId": 537792,
"promotionCode": "SUMMER10"
}'
BookingSync​
curl --location 'https://dev.calry.app/api/v1/vrs/reservations/booking-engine' \
--header 'Authorization: Bearer eyJraWQiOiJzLWMwMzE2MzExLTg3NDktNGNhMC05NDg0LTBlNWM1ZDVlMDExOSIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJpc3MiOiJodHRwczovL2Rldi5jYWxyeS5hcHAvYXBpL2F1dGgiLCJ1c2VySWQiOiJjNjhmODE5My1lNjEwLTQ2NjItOTc1OC1kNmYxMmFhODAwODYiLCJ3b3Jrc3BhY2VJZCI6IjE0ODc3OTZkLTNmY2QtNGE2Mi04ODRhLTNhYWJhNTA3ZTczMiIsIm5hbWUiOiJ0ZXN0IGtleSIsInNvdXJjZSI6Im1pY3Jvc2VydmljZSIsImlhdCI6MTczNzM3NTM5OCwiZXhwIjoxNzczMzc1Mzk4fQ.DUHl6yv4kZjcUlPZbtT823oB6fpxQdRwAw_03AaxAwOOiEyy3H767N1rYahiycbZ6Bub6b542TUrYq4tCrt8NxEpBiMsZmap18i2hSIrrawdJMdW_9tAg1EgYl0zN9kmM32KcR5BGGlndE8xPmb4Z7_X6vPRQzWAaizs-Gch-PZHFoIKxSFkeSaFhB8dyTZpfWuEVPohQYxp5oTrbmIYhSKYj80IUoa5VaudwWruvqf-DuNYi3pE-I8lR9miVkXh5m8MUkkEfhA2TmT1UIwc6nZN7JtGxrmufWjSZ8DupIJsS3SgHY_X3uqEa8XzVhirSI6t1c17azeCqe61inESaA' \
--header 'workspaceId: 1417796d-3fcd-4a62-884a-31aba507e732' \
--header 'integrationAccountId: 91feb063-8253-40aa-9231-9b8e6810c69d' \
--header 'Content-Type: application/json' \
--data-raw '{
"morChannel": "PMS",
"propertyId": 231535,
"arrivalDate": "2025-09-10",
"departureDate": "2025-09-15",
"arrivalEstimatedTime": "15:00",
"departureEstimatedTime": "12:00",
"guest": {
"name": "John Doe",
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@gmail.com",
"phone": "9876543210",
"address": {
"line1": "456 Oak Lane",
"line2": "Suite 12",
"postalCode": "67890",
"city": "Laketown",
"state": "Lakestate",
"country": "US"
}
},
"status": "CONFIRMED",
"totalPrice": 1500,
"numberOfGuests": 3,
"numberOfAdults": 2,
"numberOfChildren": 1,
"numberOfInfants": 0,
"numberOfPets": 0,
"currency": "USD",
"notes": "Need a hot tub.",
"cardDetails": {
"cardNumber": "4111111111111111",
"cardHolderName": "John Doe",
"expiryMonth": "8",
"expiryYear": "2029",
"cvv": "256"
}
}'
Hostfully​
curl --location 'https://dev.calry.app/api/v1/vrs/reservations/booking-engine' \
--header 'Authorization: Bearer eyJraWQiOiJzLWMwMzE2MzExLTg3NDktNGNhMC05NDg0LTBlNWM1ZDVlMDExOSIsInR5cCI6IkpXVCIsImFsZyI6IlJTMjU2In0.eyJpc3MiOiJodHRwczovL2Rldi5jYWxyeS5hcHAvYXBpL2F1dGgiLCJ1c2VySWQiOiJlNThhMTRjZS01NWQ0LTQyMGQtYmVlZi05M2U1MjJlYjcyZjAiLCJ3b3Jrc3BhY2VJZCI6ImEwZjE5YmMyLTNlNjktNGVhOC04ODkzLTgwMzFiYTBiMGEwYSIsIm5hbWUiOiJ0ZXN0IGtleSIsInNvdXJjZSI6Im1pY3Jvc2VydmljZSIsImlhdCI6MTczNzM2NDM0OSwiZXhwIjoyMDk3MzY0MzQ5fQ.G-8bEbT3VhkuwpsmEXzi1hTKfjilbtMZnRrWZ-bR5gcm3tIZ55zj_XI7bGKwMe1eVLIaloR5ULzRvwhUC3fg-CJ1cFc3MG5jUmex0iB1b50WxRJftbj55Bh8Xo7ooRYMOnJGQKG-YWVknQ0-Los42Urb2_ML-bTmP_nlUNRFWJoav_bJppNJ2vRnq9UpbXLUkbAiqKVuOnR3FEjPKwGn1At5zXVyU9pZdG7kdoHPgOuPNqC_-WwhbkZLHtV62GNtPF_fXVfi_8c3GJRnAd2F4uCM58if6XqV0MR9jNaNIWJpYx4grUY6-5Hg512zxwOv98Vc2mTs1oKXU_SO3E0-pg' \
--header 'workspaceId: a0f19bc2-3f12-4wa8-8103-8031ba0b0a0a' \
--header 'integrationAccountId: 872751d0-e90b-46b2-bc81-30ab96348496' \
--header 'Content-Type: application/json' \
--data-raw '{
"morChannel": "SELF",
"propertyId": "206ce966-a947-4ba6-a233-3f963d3509f4",
"arrivalDate": "2025-08-01",
"departureDate": "2025-08-05",
"arrivalEstimatedTime": "15:00",
"departureEstimatedTime": "12:00",
"guest": {
"name": "Suyash Karn",
"firstName": "Suyash",
"lastName": "Karn",
"email": "suyash.karn@gmail.com",
"phone": "9876543210",
"address": {
"line1": "456 Oak Lane",
"line2": "Suite 12",
"postalCode": "67890",
"city": "Laketown",
"state": "Lakestate",
"country": "US"
}
},
"status": "CONFIRMED",
"totalPrice": 5064.5,
"numberOfGuests": 4,
"numberOfAdults": 3,
"numberOfChildren": 2,
"numberOfInfants": 0,
"numberOfPets": 1,
"currency": "USD",
"notes": "Need an EV Charger.",
"transactionId": "id_243203903"
}'