Skip to main content
A visit type is a stay package sold by one or more hotels, such as a spa cure or a wellness weekend. Visit types explains availability and stay rules. The list and detail endpoints define the request parameters and show complete responses. The example on this page also includes the optional hotelListings[].hotel and priceFromPeriods fields. The API returns them only with expand=hotel and, on the detail endpoint, expand=priceFromPeriods.

Name and short description

name and shortDescription are localized by Accept-Language. A missing name translation falls back to the Czech name. shortDescription is a plain-text teaser for package lists and previews, at most 120 characters per locale; a missing translation is null.

Category, payer, and booking mode

payer says who pays for a health stay; every health stay has one. It is null for a wellness stay. A package with payer: "insurer" always has bookingMode: "request". bookingMode is the package’s confirmation policy; it says nothing about room availability on a particular date.

Availability

available says whether the package is offered now. When it is false, unavailableReason gives the first applicable reason: unavailableReason is null when available is true. Availability is a catalog property; room capacity and prices are separate. See Publication and availability.

Website presentation

webOrder is the package’s position on the website, starting at 1, or null when it has none. The list endpoint sorts by it by default.

Channel content

channelContent groups the content that depends on the sales channel of your public key. Its only field, collections, lists the website collections the package belongs to. Collections are content of the company’s own website. Only keys of that website’s channel receive them, and only with such a key does the collection filter match. Every other key, including SpaBooking, receives []. Channels and scope defines the company’s own website. Codes appear in this order, each at most once: advent_christmas_new_year and families_with_children are assigned in SpaPortal. The other codes are derived. wellness covers every package with category: "wellness", and treatment_stays every package with category: "health". hotel_stay covers wellness packages whose treatment.procedures.count is 0 and whose selection is not fixed with items; these packages are also in wellness. special_offers is present exactly when a current or future promotion applies to the company’s own website key. Ended promotions, which the detail returns with expand=priceFromPeriods, do not count.

Board

board.meals has one row per meal, always in this order: breakfast, lunch, dinner, all_inclusive. Each row has: all_inclusive adds snacks and drinks during the day. When it is included, breakfast, lunch, and dinner are included too; dropping it leaves those meals in place. Drinks served with a meal are a property of the hotel’s meal services, not of the package. The following board is half board with lunch available as an add-on:
Derive your own board label, such as “Half board”, from the included rows. The API does not price meal changes.

Stay length and arrival

stayLength is never null: For example, { "unit": "night", "min": 2, "max": null } permits any stay of two or more nights, and { "unit": "week", "min": 1, "max": 3 } permits 7, 14, or 21 nights. arrival has one of two shapes, selected by type: Weekday codes are the lowercase English day names, monday to sunday.

Validity

validity lists the current and future periods in which the package can be stayed, ordered by from. Each period has: validity is null when no periods are configured, which means no date restriction, and [] when every configured period has ended. Testing a stay against its rules shows how periods permit a stay.

Treatment

treatment is a Treatment object: the included examinations and the procedure allowance with its selection mode.

Prices and promotions

priceFrom holds the package’s lowest prices across all its hotels, per currency, as two independent Price from minima. Packages booked on request and packages switched off in SpaPortal (unavailableReason: "disabled") also have a priceFrom; check available and bookingMode before you offer a booking. priceFrom is null when no complete stay exists from today onward. Prices explains how stays are selected. priceFromPeriods lists the package’s price periods: ranges of nights with their prices across all hotels, including past nights. The detail returns it only with expand=priceFromPeriods. Periods do not check free rooms or permitted arrival days. promotions lists the current and future promotions that apply to your channel, ordered by from, then id. With expand=priceFromPeriods, it also includes ended promotions, so every promotion id in a period can be looked up.

Hotel listings

hotelListings lists the active hotels selling the package, ordered by Czech hotel name. Every listing has: A listing describes the package at one hotel and stays present when its priceFrom is null. Fetch the Hotel endpoint for the full profile. Hotel names use the same Czech fallback as the hotel’s name. On the detail endpoint, hotelId narrows hotelListings to one entry. The package’s priceFrom, priceFromPeriods, and promotions still cover all its hotels.

Images

images contains the package photos in configured order; the first is the main photo. Each uses the image fields. A missing alt translation falls back to the localized package name; an empty string marks a decorative image.

Fields

A stay package sold by one or more hotels. See Visit type for the field reference and Visit types for availability and stay rules.

id
string
required

Visit type id. Price minima reference the visit type by this id.

Pattern: ^[0-9a-fA-F]{24}$
name
object
required

Localized name. A missing translation falls back to the Czech name.

shortDescription
object
required

Localized plain-text teaser for package lists and previews, up to 120 characters per translation. A missing translation is null.

category
enum<string>
required

health is a spa cure with medical treatment; wellness is any other stay, such as a wellness weekend.

Available options:
health,
wellness
payer
enum<string> | null
required

Who pays for a health stay; null for wellness stays. See Payer.

Available options:
guest,
guest_and_insurer,
insurer,
null
bookingMode
enum<string>
required

instant: a booking is confirmed immediately when a room is available. request: every booking is a request that the hotel confirms. Packages with payer: insurer are always request.

Available options:
instant,
request
available
boolean
required

Whether the package is offered now. Independent of room capacity and prices on particular dates.

unavailableReason
enum<string> | null
required

Why the package is unavailable; null when it is available. See Availability.

Available options:
disabled,
ended,
no_arrival,
no_hotels,
null
webOrder
integer | null
required

Position of the package on the website, starting at 1, or null when it has none. Used by sort=webOrder.

Required range: x >= 1
channelContent
object
required

Content for the sales channel of your public key. See Channel content.

board
object
required

Meals included in the package and the changes a guest can make. See Board.

Example:
stayLength
object
required

Permitted stay length. See Stay length and arrival.

validity
object[] | null
required

Current and future validity periods, ordered by from, then to. Null when no periods are configured; empty when every configured period has ended. See Validity.

arrival
Weekday arrival · object
required

Permitted arrival days: either weekdays or explicit dates. See Stay length and arrival.

treatment
object
required

Examinations and procedures included in a package. See Treatment.

Example:
priceFrom
object | null
required

Lowest prices of a complete stay from today onward across the package's hotels, per currency. A currency is present only when a complete stay has a price in it. Packages booked on request and packages switched off in SpaPortal also have a price; check available and bookingMode before you offer a booking. Null when no complete stay exists. See Prices.

promotions
object[]
required

Current and future promotions that apply to your channel, ordered by from, then id. With expand=priceFromPeriods, also ended promotions, so every id in a period can be looked up. Empty when none applies.

hotelListings
object[]
required

Active hotels selling the package, each with the package's price at that hotel, ordered by Czech hotel name, then id. A listing is present even when its priceFrom is null.

images
object[]
required

Photos in configured order; the first is the main photo. A missing alt translation falls back to the localized package name; an empty alt marks a decorative image. See Images.

priceFromPeriods
object[] | null

Price periods of the package across all its hotels, including past periods, ordered by from. Present only on the detail with expand=priceFromPeriods. Empty when the package has no price list for the nights of its validity; null when SpaPortal cannot calculate the periods. Free rooms and permitted arrival days are not checked. See Price period.