---
title: "Returns a specific booking."
method: GET
path: "/booking/v0-nsfw/bookings/{id}"
tags: ["Booking"]
---

# Returns a specific booking.

`GET /booking/v0-nsfw/bookings/{id}`

## Request

- Base URL: `https://api.apaleo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.apaleo.com/booking/v0-nsfw/bookings/{id}`
- Auth: OAuth 2
  - Implicit: `https://identity.apaleo.com/connect/authorize`
  - Scopes: `reservations.read`, `reservations.manage`, `admin`

Retrieves a booking with all its reservations.<br>You must have at least one of these scopes: 'reservations.read, reservations.manage'.<br>For fine-grained clients, you must have this permission: 'core.bookings.read'.

## Path parameters

- `id` string, required

## Query parameters

- `expand` string[]

## Response `200`

Success

- BookingModel: A booking holds all shared metadata for a set of reservations
  - `id` string, required: Booking id
  - `groupId` string, nullable: Group id
  - `booker` BookerModel
    - `title` 'Mr' | 'Ms' | 'Dr' | 'Prof' | 'Mrs' | 'Other', nullable: Title of the booker
    - `gender` 'Female' | 'Male' | 'Other' | 'Unknown', nullable: Gender of the booker
    - `firstName` string, nullable: First name of the booker
    - `middleInitial` string, nullable: Middle initial of the booker
    - `lastName` string, required: Last name of the booker
    - `email` string, nullable: Email address of the booker
    - `phone` string, nullable: Phone number of the booker
    - `address` PersonAddressModel
      - `addressLine1` string, nullable
      - `addressLine2` string, nullable
      - `postalCode` string, nullable
      - `city` string, nullable
      - `regionCode` string, nullable: ISO 3166-2 region code including the country prefix (e.g. US-CA, DE-BY).
      - `countryCode` string, nullable
    - `nationalityCountryCode` string, nullable: The booker's nationality, in ISO 3166-1 alpha-2 code
    - `identificationNumber` string, nullable: The booker's identification number for the given identificationType.
    - `identificationIssueDate` string, date, nullable: The issue date of the booker's identification document.
    - `identificationExpiryDate` string, date, nullable: The expiry date of the booker's identification document.
    - `identificationType` 'SocialInsuranceNumber' | 'PassportNumber' | 'IdNumber' | 'DriverLicenseNumber' | 'VisaNumber' | 'ForeignerIdentityNumber' | 'TaxIdentificationNumber' | 'Other', nullable: The type of the identificationNumber
    - `company` PersonCompanyModel
      - `name` string, nullable: Name of the company
      - `taxId` string, nullable: Tax or Vat ID of the company
    - `preferredLanguage` string, nullable: ISO 639-1 language code (the language, not the country code): e.g. vi not vn, ja not jp, cs not cz, zh not cn.
    - `birthDate` string, date, nullable: Birth date
    - `birthPlace` string, nullable: The place of birth
  - `paymentAccount` PaymentAccountModel: DEPRECATED: PaymentAccountModel is deprecated, use `/booking/v1/payment-accounts` instead. This model will be removed on May 15, 2026.
    - `accountNumber` string, nullable: The account number (e.g. masked credit card number or last 4 digits)
    - `accountHolder` string, nullable: The account holder (e.g. card holder)
    - `expiryMonth` string, nullable: The credit card's expiration month
    - `expiryYear` string, nullable: The credit card's expiration year
    - `paymentMethod` string, nullable: The payment method (e.g. Visa)
    - `payerEmail` string, nullable: The email address of the shopper / customer
    - `payerReference` string, nullable: The payer reference. It is used to make recurring captures and its usage is allowed only in the scope of the booking. For the reason above this is a write-only field.
    - `isVirtual` boolean: Indicates if the payment account is a virtual credit card. If not specified it defaults to 'false'
    - `isActive` boolean, required: Indicates if the payment account can be used for capturing payments. A payment account is active, when it has a valid payer reference set
    - `inactiveReason` string, nullable: A reason why account is inactive
  - `hasActivePaymentAccount` boolean: True if the booking has at least one active payment account, false otherwise. This is a read-only property and is not set by the client. It is used to determine if the booking has an active payment account without having to retrieve the payment account details.
  - `registeredCard` RegisteredCardModel: Use registered card when you need to show details about a card you intend to add to the booking/reservation in the future as a real payment account. It is NOT a replacement of the deprecated PaymentAccount field.
    - `cardNumber` string, nullable: The last 4 characters of the card number
    - `cardHolder` string, nullable: The account holder (e.g. cardholder)
    - `expiryMonth` string, nullable: The credit card's expiration month
    - `expiryYear` string, nullable: The credit card's expiration year
    - `paymentMethod` string, nullable: The payment method (e.g. Visa)
    - `payerEmail` string, nullable: The email address of the shopper / customer
    - `note` string, nullable: Optional information, e.g. about card activation or failure to do so
    - `isVirtual` boolean: Indicates if the payment account is a virtual credit card.
  - `comment` string, nullable: Additional information and comments
  - `bookerComment` string, nullable: Additional information and comment by the booker
  - `created` string, date-time, required: Date of creation<br />A date and time in UTC or with UTC offset as defined in <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO8601:2004</a>
  - `modified` string, date-time, required: Date of last modification<br />A date and time in UTC or with UTC offset as defined in <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO8601:2004</a>
  - `propertyValues` PropertyValueModel[], nullable: Property specific values like total amount and balance
    - `property` EmbeddedPropertyModel, required
      - `id` string, required: The property id
      - `code` string, nullable: The code for the property that can be shown in reports and table views
      - `name` string, nullable: The name for the property
      - `description` string, nullable: The description for the property
    - `totalGrossAmount` MonetaryValueModel, required
      - `amount` number, double, required
      - `currency` string, required
    - `balance` MonetaryValueModel, required
      - `amount` number, double, required
      - `currency` string, required
  - `reservations` BookingReservationModel[], nullable: Reservations within this booking
    - `id` string, required: Reservation id
    - `blockId` string, nullable: Block id
    - `status` 'Confirmed' | 'InHouse' | 'CheckedOut' | 'Canceled' | 'NoShow', required: Status of the reservation
    - `externalCode` string, nullable: Code in external system
    - `channelCode` 'Direct' | 'BookingCom' | 'Ibe' | 'ChannelManager' | 'Expedia' | 'Homelike' | 'Hrs' | 'AltoVita' | 'DesVu' | 'Gimsi', required: Channel code<br /><b>Deprecated values:</b> Homelike: Homelike channel is deprecated and no longer accepts new bookings or rate plans.
    - `source` string, nullable: Source of the reservation (e.g Hotels.com, Orbitz, etc.)
    - `paymentAccount` PaymentAccountModel: DEPRECATED: PaymentAccountModel is deprecated, use `/booking/v1/payment-accounts` instead. This model will be removed on May 15, 2026.
      - `accountNumber` string, nullable: The account number (e.g. masked credit card number or last 4 digits)
      - `accountHolder` string, nullable: The account holder (e.g. card holder)
      - `expiryMonth` string, nullable: The credit card's expiration month
      - `expiryYear` string, nullable: The credit card's expiration year
      - `paymentMethod` string, nullable: The payment method (e.g. Visa)
      - `payerEmail` string, nullable: The email address of the shopper / customer
      - `payerReference` string, nullable: The payer reference. It is used to make recurring captures and its usage is allowed only in the scope of the booking. For the reason above this is a write-only field.
      - `isVirtual` boolean: Indicates if the payment account is a virtual credit card. If not specified it defaults to 'false'
      - `isActive` boolean, required: Indicates if the payment account can be used for capturing payments. A payment account is active, when it has a valid payer reference set
      - `inactiveReason` string, nullable: A reason why account is inactive
    - `hasActivePaymentAccount` boolean: True if the reservation has at least one active payment account, false otherwise. This is a read-only property and is not set by the client. It is used to determine if the reservation has an active payment account without having to retrieve the payment account details.
    - `registeredCard` RegisteredCardModel: Use registered card when you need to show details about a card you intend to add to the booking/reservation in the future as a real payment account. It is NOT a replacement of the deprecated PaymentAccount field.
      - `cardNumber` string, nullable: The last 4 characters of the card number
      - `cardHolder` string, nullable: The account holder (e.g. cardholder)
      - `expiryMonth` string, nullable: The credit card's expiration month
      - `expiryYear` string, nullable: The credit card's expiration year
      - `paymentMethod` string, nullable: The payment method (e.g. Visa)
      - `payerEmail` string, nullable: The email address of the shopper / customer
      - `note` string, nullable: Optional information, e.g. about card activation or failure to do so
      - `isVirtual` boolean: Indicates if the payment account is a virtual credit card.
    - `arrival` string, date-time, required: Date of arrival<br />A date and time in UTC or with UTC offset as defined in <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO8601:2004</a>
    - `departure` string, date-time, required: Date of departure<br />A date and time in UTC or with UTC offset as defined in <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO8601:2004</a>
    - `adults` integer, required: Number of adults
    - `childrenAges` integer[], nullable: The ages of the children
    - `totalGrossAmount` MonetaryValueModel, required
      - `amount` number, double, required
      - `currency` string, required
    - `property` EmbeddedPropertyModel, required
      - `id` string, required: The property id
      - `code` string, nullable: The code for the property that can be shown in reports and table views
      - `name` string, nullable: The name for the property
      - `description` string, nullable: The description for the property
    - `ratePlan` EmbeddedRatePlanModel, required
      - `id` string, required: The rate plan id
      - `code` string, nullable: The code for the rate plan that can be shown in reports and table views
      - `name` string, nullable: The name for the rate plan
      - `description` string, nullable: The description for the rate plan
      - `isSubjectToCityTax` boolean, required: Whether the rate plan is subject to city tax or not
    - `unitGroup` EmbeddedUnitGroupModel, required
      - `id` string, required: The unit group id
      - `code` string, nullable: The code for the unit group that can be shown in reports and table views
      - `name` string, nullable: The name for the unit group
      - `description` string, nullable: The description for the unit group
      - `type` 'BedRoom' | 'MeetingRoom' | 'EventSpace' | 'ParkingLot' | 'Other', nullable: The unit group type
    - `services` ReservationServiceItemModel[], nullable: The list of additional services (extras, add-ons) reserved for the stay
      - `service` ServiceModel, required
        - `id` string, required: The service id
        - `code` string, required: The code for the service
        - `name` string, required: The name for the service
        - `description` string, required: The description for the service
        - `pricingUnit` 'Room' | 'Person', required: Defines the granularity (room, person) for which this item is offered and priced
        - `defaultGrossPrice` MonetaryValueModel, required
          - `amount` number, double, required
          - `currency` string, required
      - `totalAmount` AmountModel, required
        - `grossAmount` number, double, required
        - `netAmount` number, double, required
        - `vatType` 'Null' | 'VeryReduced' | 'Reduced' | 'Normal' | 'Without' | 'Special' | 'Special1' | 'Special2' | 'ReducedCovid19' | 'NormalCovid19' | 'Mixed', required
        - `vatPercent` number, double, required
        - `currency` string, required
      - `dates` ServiceDateItemModel[], required: The dates the service will be delivered with its price
        - `serviceDate` string, date, required: The date this service is delivered
        - `count` integer, required: The count of booked services
        - `pricingUnit` 'Room' | 'Person', nullable: The pricing unit this service was priced by
        - `ageCategoryId` string, nullable: The age category this service was priced for
        - `amount` AmountModel, required
          - `grossAmount` number, double, required
          - `netAmount` number, double, required
          - `vatType` 'Null' | 'VeryReduced' | 'Reduced' | 'Normal' | 'Without' | 'Special' | 'Special1' | 'Special2' | 'ReducedCovid19' | 'NormalCovid19' | 'Mixed', required
          - `vatPercent` number, double, required
          - `currency` string, required
        - `isMandatory` boolean, required: Rate plans can have additional services. When booking an offer for such rate plans, those services are automatically booked. They are marked as mandatory and they cannot be removed.
        - `taxes` AppliedTaxModel[], nullable: The taxes applied to this service according to the tax definitions configured in the Taxes API.
          - `taxDefinitionCode` string, required: The code of the tax definition that produced this tax
          - `amount` AmountModel, required
            - `grossAmount` number, double, required
            - `netAmount` number, double, required
            - `vatType` 'Null' | 'VeryReduced' | 'Reduced' | 'Normal' | 'Without' | 'Special' | 'Special1' | 'Special2' | 'ReducedCovid19' | 'NormalCovid19' | 'Mixed', required
            - `vatPercent` number, double, required
            - `currency` string, required
          - `remittedBy` 'Hotel' | 'Ota', required: Who is responsible for remitting the tax
    - `guestComment` string, nullable: Additional information and comment by the guest
    - `cancellationFee` ReservationCancellationFeeModel, required
      - `id` string, required: The id of the cancellation policy applied
      - `code` string, required: The code of the cancellation policy applied
      - `name` string, required: The name of the cancellation policy applied
      - `description` string, required: The description of the cancellation policy applied
      - `dueDateTime` string, date-time, required: The date and time the cancellation fee will be due. After that time this fee will be charged in case of cancellation<br />A date and time in UTC or with UTC offset as defined in <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO8601:2004</a>
      - `fee` MonetaryValueModel, required
        - `amount` number, double, required
        - `currency` string, required
    - `noShowFee` ReservationNoShowFeeModel, required
      - `id` string, required: The id of the no-show policy applied
      - `code` string, required: The code of the no-show policy applied
      - `name` string, required: The name of the no-show policy applied
      - `description` string, required: The description of the no-show policy applied
      - `fee` MonetaryValueModel, required
        - `amount` number, double, required
        - `currency` string, required
    - `company` EmbeddedCompanyModel
      - `id` string, required: The company ID
      - `code` string, nullable: The code of the company
      - `name` string, nullable: The name of the company
      - `canCheckOutOnAr` boolean, nullable: Whether or not the company can check out on AR
    - `isOpenForCharges` boolean, required: Whether the reservation can accept charges on its folios. This is purely informational and no validation is performed on this field. Defaults to true.
    - `isPreCheckedIn` boolean: Indicates whether the reservation is marked as pre-checked-in or not.
    - `isUnitAssignmentLocked` boolean: Indicates whether the unit assignments for this reservation are locked
    - `externalReferences` ExternalReferencesModel
      - `globalDistributionSystemId` string, nullable: The ID of the global distribution system.
      - `onlineTravelAgencyId` string, nullable: The ID of the online travel agency.
      - `onlineBookingToolId` string, nullable: The ID of the online booking tool.
      - `channelManagerId` string, nullable: The ID of the channel manager.
      - `centralReservationSystemId` string, nullable: The Central Reservation System Identifier
      - `legacyId` string, nullable: The ID of the legacy PMS system.

## Other responses

- `400`: Bad request.
- `401`: You are unauthorized.
- `403`: Forbidden.
- `404`: The Request-URI could not be found.
- `422`: Validation errors in the request body or query params.
- `499`: Client closed request.
- `500`: An unexpected error occurred.
- `503`: The server is currently unavailable. Please try later.

---

[API](https://skmtc.dev/apaleo/apis/apaleo-booking-api-not-safe-for-work.md) - [All operations](https://skmtc.dev/apaleo/apis/apaleo-booking-api-not-safe-for-work/llms.txt) - [OpenAPI document](https://skmtc.dev/apaleo/apis/apaleo-booking-api-not-safe-for-work/revisions/a1b6a2f6b879?raw)
