curl --request GET \
--url https://spaportal.cz/api/v1/visit-types \
--header 'Authorization: Bearer <token>'import requests
url = "https://spaportal.cz/api/v1/visit-types"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://spaportal.cz/api/v1/visit-types', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://spaportal.cz/api/v1/visit-types",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://spaportal.cz/api/v1/visit-types"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://spaportal.cz/api/v1/visit-types")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://spaportal.cz/api/v1/visit-types")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"_id": "66f16191f739705faa020004",
"id": 1,
"priority_position": 1,
"on_demand": false,
"name": {
"cs_CZ": "Frantiskolazenska lecebna kura",
"de": "Franzensbader Heilkur"
},
"visit_type_categories": [
{
"_id": "66f16191f739705faa020005",
"id": 1,
"name": {
"cs_CZ": "Lazensky pobyt",
"de": "Heilkur"
}
}
],
"booking_url": {
"cs_CZ": "https://rezervace.frantiskovylazne.cz?visitType=Franzensbader%20Heilkur",
"de": "https://reservierung.franzensbad.cz?visitType=Franzensbader%20Heilkur"
},
"description": {
"cs_CZ": "Prohlidka lekarem a procedury podle zdravotniho stavu.",
"de": "Kuraufenthalt mit aerztlicher Untersuchung."
},
"nights_min": 1,
"nights_max": 3,
"reservation_time_span": "DAYS",
"time_constraints": [
{
"date_from": "2026-10-01",
"date_to": "2026-12-01"
}
],
"procedures": 12,
"procedure_frequency": "VISIT",
"procedures_per_day": 4,
"boarding": "HALF_BOARD",
"available_boardings": [
"HALF_BOARD",
"FULL_BOARD",
"BREAKFAST",
"LUNCH",
"DINNER",
"ALL_INCLUSIVE"
],
"tags": [
{
"_id": "66f16191f739705faa020006",
"id": 1,
"name": {
"cs_CZ": "Byt stale mlad",
"de": "Sei noch jung"
},
"color": "0000ff"
}
],
"lowest_price": {
"cs_CZ": {
"amount_per_night": 1024.5,
"original_amount_per_night": 1205.29,
"currency": "CZK"
},
"de": {
"amount_per_night": 40,
"original_amount_per_night": 47.06,
"currency": "EUR"
}
},
"promotions": [
{
"name": {
"cs_CZ": "Zahajovací sleva",
"de": "Eröffnungsrabatt"
},
"percentage": 15,
"valid_from": "2026-06-21",
"valid_to": "2026-06-25"
}
],
"commercial_slogan": {
"cs_CZ": "Buy it or leave it.",
"de": ""
},
"notice": {
"cs_CZ": "Cena bez rozdilu kategorie.",
"de": ""
},
"services": {
"cs_CZ": "14x ubytovani.",
"de": "14x Unterkunft."
},
"hotels": [
{
"_id": "66f16191f739705faa020002",
"id": 1,
"name": "Pawlik",
"lowest_price": {
"cs_CZ": {
"amount_per_night": 1024.5,
"original_amount_per_night": 1205.29,
"currency": "CZK"
},
"de": {
"amount_per_night": 40,
"original_amount_per_night": 47.06,
"currency": "EUR"
}
},
"promotions": [
{
"name": {
"cs_CZ": "Zahajovací sleva",
"de": "Eröffnungsrabatt"
},
"percentage": 15,
"valid_from": "2026-06-21",
"valid_to": "2026-06-25"
}
]
}
],
"loyalty_programs": [
{
"_id": "66f16191f739705faa020007",
"id": 2,
"name": {
"cs_CZ": "VIP Club Premium",
"de": "VIP Club Premium",
"en": "VIP Club Premium"
}
}
]
}
]{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}Get visit types
Returns visit types matching the supplied filters.
reservation_time_span can be DAYS or WEEKS. procedure_frequency can be DAY, WEEK, or VISIT.
Each visit type can include applicable loyalty programs and hotel-level lowest prices. The visit-type lowest_price and each per-hotel lowest_price include any active discount promotions; original_amount_per_night is the price before any discount.
A promotions array is returned at the visit-type level and per nested hotel: the active promotions running now OR starting in the future (expired ones omitted), scoped to the caller’s channel, each with its localized name, percentage and validity (valid_from/valid_to). The promotion name is not needed to render the strike-through price (use lowest_price), but lets you label a badge (e.g. “-15% Eröffnungsrabatt”).
curl --request GET \
--url https://spaportal.cz/api/v1/visit-types \
--header 'Authorization: Bearer <token>'import requests
url = "https://spaportal.cz/api/v1/visit-types"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://spaportal.cz/api/v1/visit-types', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://spaportal.cz/api/v1/visit-types",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://spaportal.cz/api/v1/visit-types"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://spaportal.cz/api/v1/visit-types")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://spaportal.cz/api/v1/visit-types")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body[
{
"_id": "66f16191f739705faa020004",
"id": 1,
"priority_position": 1,
"on_demand": false,
"name": {
"cs_CZ": "Frantiskolazenska lecebna kura",
"de": "Franzensbader Heilkur"
},
"visit_type_categories": [
{
"_id": "66f16191f739705faa020005",
"id": 1,
"name": {
"cs_CZ": "Lazensky pobyt",
"de": "Heilkur"
}
}
],
"booking_url": {
"cs_CZ": "https://rezervace.frantiskovylazne.cz?visitType=Franzensbader%20Heilkur",
"de": "https://reservierung.franzensbad.cz?visitType=Franzensbader%20Heilkur"
},
"description": {
"cs_CZ": "Prohlidka lekarem a procedury podle zdravotniho stavu.",
"de": "Kuraufenthalt mit aerztlicher Untersuchung."
},
"nights_min": 1,
"nights_max": 3,
"reservation_time_span": "DAYS",
"time_constraints": [
{
"date_from": "2026-10-01",
"date_to": "2026-12-01"
}
],
"procedures": 12,
"procedure_frequency": "VISIT",
"procedures_per_day": 4,
"boarding": "HALF_BOARD",
"available_boardings": [
"HALF_BOARD",
"FULL_BOARD",
"BREAKFAST",
"LUNCH",
"DINNER",
"ALL_INCLUSIVE"
],
"tags": [
{
"_id": "66f16191f739705faa020006",
"id": 1,
"name": {
"cs_CZ": "Byt stale mlad",
"de": "Sei noch jung"
},
"color": "0000ff"
}
],
"lowest_price": {
"cs_CZ": {
"amount_per_night": 1024.5,
"original_amount_per_night": 1205.29,
"currency": "CZK"
},
"de": {
"amount_per_night": 40,
"original_amount_per_night": 47.06,
"currency": "EUR"
}
},
"promotions": [
{
"name": {
"cs_CZ": "Zahajovací sleva",
"de": "Eröffnungsrabatt"
},
"percentage": 15,
"valid_from": "2026-06-21",
"valid_to": "2026-06-25"
}
],
"commercial_slogan": {
"cs_CZ": "Buy it or leave it.",
"de": ""
},
"notice": {
"cs_CZ": "Cena bez rozdilu kategorie.",
"de": ""
},
"services": {
"cs_CZ": "14x ubytovani.",
"de": "14x Unterkunft."
},
"hotels": [
{
"_id": "66f16191f739705faa020002",
"id": 1,
"name": "Pawlik",
"lowest_price": {
"cs_CZ": {
"amount_per_night": 1024.5,
"original_amount_per_night": 1205.29,
"currency": "CZK"
},
"de": {
"amount_per_night": 40,
"original_amount_per_night": 47.06,
"currency": "EUR"
}
},
"promotions": [
{
"name": {
"cs_CZ": "Zahajovací sleva",
"de": "Eröffnungsrabatt"
},
"percentage": 15,
"valid_from": "2026-06-21",
"valid_to": "2026-06-25"
}
]
}
],
"loyalty_programs": [
{
"_id": "66f16191f739705faa020007",
"id": 2,
"name": {
"cs_CZ": "VIP Club Premium",
"de": "VIP Club Premium",
"en": "VIP Club Premium"
}
}
]
}
]{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}Authorizations
See Authentication for how to obtain and send your API key.
Headers
Comma-separated list of languages to include. See Localization for details.
"cs_CZ,de"
Query Parameters
Number of records to return.
1 <= x <= 100Number of records to skip.
x >= 0Filter by hotel ID.
Filter by destination ID.
Minimum hotel star rating.
1 <= x <= 5Maximum hotel star rating.
1 <= x <= 5Filter by room occupancy.
x >= 1Start date in YYYY-MM-DD format.
End date in YYYY-MM-DD format.
Minimum number of nights.
Maximum number of nights.
Response
Visit types matching the filters.
Object id (24-character hex string) for the same entity.
^[0-9a-fA-F]{24}$"66f16191f739705faa020001"
Show child attributes
Show child attributes
{
"cs_CZ": "Frantiskovy Lazne",
"de": "Franzensbad"
}
Show child attributes
Show child attributes
Show child attributes
Show child attributes
{
"cs_CZ": "Frantiskovy Lazne",
"de": "Franzensbad"
}
Show child attributes
Show child attributes
{
"cs_CZ": "Frantiskovy Lazne",
"de": "Franzensbad"
}
DAYS, WEEKS Show child attributes
Show child attributes
DAY, WEEK, VISIT Show child attributes
Show child attributes
Show child attributes
Show child attributes
Active current-or-future promotions for this visit type's price list, scoped to the caller's channel (empty when none apply).
Show child attributes
Show child attributes
Show child attributes
Show child attributes
{
"cs_CZ": "Frantiskovy Lazne",
"de": "Franzensbad"
}
Show child attributes
Show child attributes
{
"cs_CZ": "Frantiskovy Lazne",
"de": "Franzensbad"
}
Show child attributes
Show child attributes
{
"cs_CZ": "Frantiskovy Lazne",
"de": "Franzensbad"
}
Show child attributes
Show child attributes
Show child attributes
Show child attributes