---
title: "Returns service offers for one specific reservation."
method: GET
path: "/booking/v1/reservations/{id}/service-offers"
tags: ["Reservation"]
---

# Returns service offers for one specific reservation.

`GET /booking/v1/reservations/{id}/service-offers`

## 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/v1/reservations/{id}/service-offers`
- Auth: OAuth 2
  - Implicit: `https://identity.apaleo.com/connect/authorize`
  - Scopes: `offers.read`, `reservations.manage`, `admin`

Calculates and returns service offers for a specific reservation.<br>You must have at least one of these scopes: 'offers.read, reservations.manage'.<br>For fine-grained clients, you must have this permission: 'core.reservations.read'.

## Path parameters

- `id` string, required

## Query parameters

- `channelCode` 'Direct' | 'BookingCom' | 'Ibe' | 'ChannelManager' | 'Expedia' | 'Homelike' | 'Hrs' | 'AltoVita' | 'DesVu' | 'Gimsi'
- `onlyDefaultDates` boolean
- `includeUnavailable` boolean

## Response `200`

Success

- ServiceOffersModel
  - `services` ServiceOfferModel[], required
    - `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
    - `count` integer, required: The default count of offered services. For services whose pricing unit is 'Person' it will be based on the adults and children specified, otherwise 1.
    - `availableCount` integer, nullable: The number of services available.
    - `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
    - `prePaymentAmount` MonetaryValueModel, required
      - `amount` number, double, required
      - `currency` string, required
    - `fees` OfferFeeModel[], nullable: The details of the fees that will be added on top of the Apaleo.Api.Modules.Booking.Models.Offer.ServiceOffer.ServiceOfferModel.TotalAmount when booking the service
      - `id` string, required: The fee id
      - `code` string, required: The code for the fee
      - `name` string, required: The name for the fee
      - `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` ServiceOfferItemModel[], required: The dates the service will be delivered with its price
      - `serviceDate` string, date, required: The date this service is delivered
      - `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
      - `isDefaultDate` boolean, required: Depending on the postNextDay setting of the service it will by default be posted before or after midnight. Breakfast is usually delivered on the next morning, so all the dates from the day after arrival to the departure day are default dates and will have this flag set to true. Those are also the dates the service will be booked for if you do not specify dates in the book-service call. Still, you can override this and also book the dates set to IsDefaultDate = false.
      - `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.
      - `availableCount` integer, nullable: The number of services available.
    - `validationMessages` OfferValidationMessageModel[], nullable: Validation rules that were applied to the offer and show the reason why the offer is not bookable
      - `code` 'UnitGroupFullyBooked' | 'UnitGroupCapacityExceeded' | 'RatePlanRestrictionsViolated' | 'RatePlanSurchargesNotSet' | 'RateRestrictionsViolated' | 'RatePlanChannelNotSet' | 'RatesNotSet' | 'BlockFullyBooked' | 'IncludedServicesAmountExceededRateAmount' | 'ServiceFullyBooked' | 'RateDoesNotSatifyHurdles', required: The message Code
      - `message` string, required: The message description

## Other responses

- `204`: There are no available offers for the specified parameters.
- `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.

## Changes

> 6 revisions in range; 1 not diffed.

- **2026-09-01** `6510a7df7143`: 1 info
  - added the non-success response with the status `499`

[Operation history](https://skmtc.dev/apaleo/apis/apaleo-booking-api/changes/booking/v1/reservations/:id/service-offers/get.md)

---

[API](https://skmtc.dev/apaleo/apis/apaleo-booking-api.md) - [All operations](https://skmtc.dev/apaleo/apis/apaleo-booking-api/llms.txt) - [OpenAPI document](https://skmtc.dev/apaleo/apis/apaleo-booking-api/revisions/0d255d2a27e9?raw)
