Holidu Bookings API
The Bookings API from Holidu — 3 operation(s) for bookings.
The Bookings API from Holidu — 3 operation(s) for bookings.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/holidu-bookings-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Connectivity Bookings API
description: 'Please read the API Guide that will help you for your integration to Holidu.
You''ll find there the steps you''ll go through, tips and frequently asked questions.
If you need any support, please contact us at partnersupport@holidu.com.'
termsOfService: https://www.holidu.com/gtc
contact:
name: Holidu
url: https://www.holidu.com
email: partnersupport@holidu.com
license:
name: Apache License Version 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
version: '2.0'
servers:
- url: https://provider-api-sandbox.holidu.com
description: Sandbox Environment
- url: https://provider-api.holidu.com
description: Holidu Production API
security:
- api-key:
- read
- write
tags:
- name: Bookings
paths:
/v2/bookings:
put:
tags:
- Bookings
summary: Update booking details
operationId: updateBooking
parameters:
- name: providerBookingId
in: query
required: true
schema:
type: string
- name: provider
in: query
required: false
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BookingUpsert'
required: true
responses:
'200':
description: Booking data has been updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BookingDetails'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
'401':
description: Authentication error
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
'404':
description: Apartment does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
'418':
description: Requested method is not available in sandbox environment
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
/v2/bookings/cancel:
post:
tags:
- Bookings
summary: Cancel a booking
operationId: cancelBooking
parameters:
- name: provider
in: query
required: false
schema:
type: string
- name: providerBookingId
in: query
description: Provider booking id. Either this or holiduBookingId is required.
required: false
schema:
type: string
- name: holiduBookingId
in: query
description: Holidu booking id. Either this or providerBookingId is required.
required: false
schema:
type: integer
format: int64
- name: cancellationFee
in: query
required: false
schema:
type: number
- name: reason
in: query
required: true
schema:
type: string
enum:
- PROVIDER_NO_PAYMENT
- PROVIDER_OVERBOOKED
- CUSTOMER_WRONG_PRICE
- CUSTOMER_WRONG_FACILITIES
- CUSTOMER_UNKNOWN_REASON
- CUSTOMER_REBOOKING
- CUSTOMER_PERSONAL
- CUSTOMER_ALTERNATIVE_HOLIDU_PRICE
- CUSTOMER_ALTERNATIVE_HOLIDU_LOCATION
- CUSTOMER_ALTERNATIVE_HOLIDU_OTHER
- CUSTOMER_ALTERNATIVE_ELSEWHERE_PRICE
- CUSTOMER_ALTERNATIVE_ELSEWHERE_LOCATION
- CUSTOMER_ALTERNATIVE_ELSEWHERE_OTHER
- CUSTOMER_TRAVEL_RESTRICTIONS_VISA
- CUSTOMER_TRAVEL_RESTRICTIONS_COVID
- CUSTOMER_TRAVEL_RESTRICTIONS_OTHER
- CUSTOMER_PROVIDER_REQUEST_BOOK_ELSEWHERE
- CUSTOMER_PROVIDER_REQUEST_AVAILABILITY
- CUSTOMER_PROVIDER_REQUEST_OTHER
- CUSTOMER_PROPERTY_QUALITY
- CUSTOMER_OTHER
- HOLIDU_TEST_BOOKING
- HOLIDU_NO_PAYMENT
responses:
'200':
description: The booking was cancelled
content:
application/json:
schema:
$ref: '#/components/schemas/BookingCancellationResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
'401':
description: Authentication error
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
'404':
description: Booking does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
'418':
description: Requested method is not available in sandbox environment
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
/v2/bookings/details:
get:
tags:
- Bookings
summary: Get booking details
operationId: getBookingDetails
parameters:
- name: provider
in: query
description: Only needed for subprovider identification.
required: false
schema:
type: string
- name: providerBookingId
in: query
description: Booking id. Either this or holiduBookingId is required.
required: false
schema:
type: string
- name: holiduBookingId
in: query
description: Holidu booking id. Either this or bookingId is required.
required: false
schema:
type: integer
format: int64
responses:
'200':
description: Information for the booking
content:
application/json:
schema:
$ref: '#/components/schemas/BookingDetails'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
'401':
description: Authentication error
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
'404':
description: Booking does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
'418':
description: Requested method is not available in sandbox environment
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/HoliduErrorResponse'
components:
schemas:
BookingUpsertExtraCost:
required:
- name
- totalPrice
type: object
properties:
name:
type: string
description: Name of the cost
example: FINAL_CLEANING
enum:
- FINAL_CLEANING
- EXTRA_CLEANING
- REFUNDABLE_SECURITY_DEPOSIT
- TOURIST_OR_CITY_TAX
- VAT_OF_RENTAL_PRICE
- BOOKING_FEE
- HYGIENE_SURCHARGE
- PET
- TRAVEL_INSURANCE
- TOWEL
- BEDLINEN
- TOWEL_BEDLINEN_PACKAGE
- KITCHEN_TOWELS
- BEDLINEN_AND_BEDMAKING
- BABY_BED
- BABY_CHAIR
- BABY_COT
- BABY_BUGGY
- BABY_HIGH_CHAIR
- EXTRA_BED
- HEATING
- AIRCONDITION
- FIREWOOD
- ELECTRICITY
- WATER
- GAS
- SAUNA
- POOL
- HOT_TUB
- WASHING_MACHINE
- BEACH_SERVICES
- CLUB_CARD
- INTERNET
- PARKING
- AIRPORT_SHUTTLE
- BREAKFAST
- SERVICE_COSTS
paymentTime:
type: string
description: When the cost is paid. Treated as paid with the booking if omitted.
example: WITH_RATES
enum:
- ON_BOOKING
- WITH_RATES
- ONSITE
totalPrice:
$ref: '#/components/schemas/Price'
description: Breakdown of extra costs for the booking.
Commission:
type: object
properties:
percentage:
type: number
description: Holidu percentage commission for this booking, if percentage deal
commissionToHolidu:
$ref: '#/components/schemas/PriceDto'
HoliduErrorResponse:
type: object
properties:
error:
type: string
description: Error Text
example: 'Invalid Json: Unexpected character'
PaymentRate:
type: object
properties:
dueDate:
type: string
format: date-time
value:
$ref: '#/components/schemas/PriceDto'
CustomerDetails:
type: object
properties:
firstName:
type: string
lastName:
type: string
email:
type: string
gender:
type: string
enum:
- MALE
- FEMALE
zip:
type: string
city:
type: string
street:
type: string
country:
type: string
description: Country code represented in standard ISO 3166-1 ALPHA-2 format
example: DE
phone:
type: string
language:
type: string
description: Model of the Customer.
PaymentWithBooking:
type: object
properties:
paymentPlanUuid:
type: string
paymentHandler:
type: string
paymentMethod:
type: string
paymentTotalWithBooking:
$ref: '#/components/schemas/PriceDto'
paymentRates:
type: array
items:
$ref: '#/components/schemas/PaymentRate'
CancellationFee:
type: object
properties:
validUntil:
type: string
format: date-time
feeInPercentage:
type: number
Payment:
type: object
properties:
paymentWithBooking:
$ref: '#/components/schemas/PaymentWithBooking'
paymentOnsite:
type: array
items:
$ref: '#/components/schemas/PriceDto'
BookingDiscount:
type: object
properties:
discountId:
type: integer
format: int64
providerDiscountId:
type: string
name:
type: string
percentage:
type: number
amount:
$ref: '#/components/schemas/PriceDto'
Guest:
type: object
properties:
age:
type: integer
description: Age of the guest, can be null if it is not required by capacity rules or provider config
format: int32
BookingExtraCost:
type: object
properties:
id:
type: string
name:
type: string
basisOfCalculation:
type: string
paymentTime:
type: string
type:
type: string
pricePerUnit:
$ref: '#/components/schemas/PriceDto'
unitsSelected:
type: integer
format: int32
totalPrice:
$ref: '#/components/schemas/PriceDto'
BookingCancellationResponse:
type: object
properties:
cancellationStatus:
type: string
description: Status of the cancellation request
example: CANCELLATION_SUCCESSFUL
enum:
- ALREADY_CANCELLED
- CANCELLATION_SUCCESSFUL
- BOOKING_DELETED
BookingUpsert:
required:
- arrival
- bareRentalPrice
- departure
- providerApartmentId
type: object
properties:
providerApartmentId:
type: string
description: ID of the apartment in provider database
example: '123456'
arrival:
type: string
description: Date of arrival
format: date
example: '2020-10-20'
departure:
type: string
description: Date of departure
format: date
example: '2020-10-30'
bareRentalPrice:
$ref: '#/components/schemas/Price'
totalPrice:
$ref: '#/components/schemas/Price'
commissionablePrice:
$ref: '#/components/schemas/Price'
costs:
type: array
description: Breakdown of extra costs for the booking.
items:
$ref: '#/components/schemas/BookingUpsertExtraCost'
numberOfGuests:
type: integer
description: Number of guests
format: int32
example: 2
rateId:
type: string
description: Rate identifier
example: DEFAULT
Price:
required:
- amount
- currency
type: object
properties:
amount:
type: number
description: Price value
example: 100
currency:
type: string
description: Price currency
example: EUR
description: Price with amount and currency
MetaData:
type: object
properties:
bookedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
status:
type: string
enum:
- PENDING
- CONFIRMED
- CANCELLED
- DELETED
cancelledAt:
type: string
format: date-time
holiduBookingId:
type: integer
format: int64
commission:
$ref: '#/components/schemas/Commission'
Receipt:
type: object
properties:
costs:
type: array
items:
$ref: '#/components/schemas/BookingExtraCost'
discount:
$ref: '#/components/schemas/BookingDiscount'
bareRentalPrice:
$ref: '#/components/schemas/PriceDto'
BookingDetails:
type: object
properties:
providerApartmentId:
type: string
arrival:
type: string
format: date
departure:
type: string
format: date
guests:
type: array
items:
$ref: '#/components/schemas/Guest'
customer:
$ref: '#/components/schemas/CustomerDetails'
specialCustomerRequest:
type: string
guestReceipt:
$ref: '#/components/schemas/Receipt'
paymentProcessing:
$ref: '#/components/schemas/Payment'
cancellationFees:
type: array
items:
$ref: '#/components/schemas/CancellationFee'
metaData:
$ref: '#/components/schemas/MetaData'
rateId:
type: string
PriceDto:
type: object
properties:
amount:
type: number
currency:
type: string
securitySchemes:
api-key:
type: apiKey
name: api-key
in: header