> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spaportal.cz/llms.txt
> Use this file to discover all available pages before exploring further.

# Visit types

> Understand the availability and stay rules of a stay package.

A [visit type](https://docs.spaportal.cz/api/objects/visit-type.md) is a stay package sold by one or more
hotels. Its availability, stay rules, and prices are independent: an available
package can have no permitted stay in your dates, and a permitted stay can
have no price.
[Building package pages](https://docs.spaportal.cz/guides/visit-types.md) walks through a typical
integration.

## Publication and availability

The catalog contains the packages of the
[companies your public key is scoped to](https://docs.spaportal.cz/api/authentication.md#channels-and-scope).
It contains only published packages, meaning packages whose required
configuration is complete. An unpublished package is omitted from the list,
and its detail returns `404` like an unknown or inaccessible package.

A published package can still be unavailable. `unavailableReason` gives the
first applicable reason from the
[availability table](https://docs.spaportal.cz/api/objects/visit-type.md#availability). Availability is
evaluated for today's date in Europe/Prague and can change at midnight. The
list returns available packages by default; the detail also returns an
unavailable package.

Availability does not promise a price or a free room on a particular date. A
permitted arrival with no free room still satisfies the catalog date filters.
`priceFrom` also needs a nightly price and a free room for every
night; see [Prices](https://docs.spaportal.cz/api/prices.md).

## Testing a stay against its rules

A stay with arrival `a`, `nights` nights, and checkout `c` is permitted when:

1. `nights` fits [`stayLength`](https://docs.spaportal.cz/api/objects/visit-type#stay-length-and-arrival).
   A week-based package requires a whole number of seven-night weeks.
2. `a` satisfies [`arrival`](https://docs.spaportal.cz/api/objects/visit-type#stay-length-and-arrival):
   it falls on a permitted weekday, or it is one of the permitted dates.
3. When [`validity`](https://docs.spaportal.cz/api/objects/visit-type#validity) is an array, at least
   one period permits the stay on its own: `a` lies within the period, and
   for a departure-limited period `c` is on or before `to`.

Overlapping periods are alternatives: one matching period is enough, and the
limits of two periods never combine. A `validity` of `null` imposes no date
restriction; `[]` permits no stay.

For example, the period `2026-11-01` to `2027-03-31` with
`toAppliesTo: "departure"` permits a seven-night stay from Saturday 20 March
to 27 March 2027. A stay from Saturday 27 March to 3 April does not fit it,
even when an April period exists. An overlapping arrival-limited period that
contains 27 March would permit that stay.

The list filters `nights`, `arrivalFrom`, and `arrivalTo` apply these rules.
Without an arrival window, `nights` checks only the stay length. With a
window, the package must permit a stay that arrives inside the window from
today onward, of `nights` nights or of its shortest length when `nights` is
omitted. The filters check neither prices nor room capacity, and they do not
recalculate `priceFrom` for the requested stay: a package matching
`nights=14` can still report a seven-night minimum.

## Hotels and prices

`hotelListings` says where the package is sold; a listing stays present when
its price is `null`.
[Prices](https://docs.spaportal.cz/api/prices.md#package-and-package-at-hotel-prices) explains the package
price and the price of each listing.

With `expand=priceFromPeriods`, the detail also returns
[price periods](https://docs.spaportal.cz/api/objects/price-from-period.md): the package's prices by
date, including past dates. Periods do not check free rooms or permitted
arrival days.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.