curl --request GET \
--url https://spaportal.cz/api/v1/booking \
--header 'Authorization: Bearer <token>'import requests
url = "https://spaportal.cz/api/v1/booking"
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/booking', 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/booking",
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/booking"
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/booking")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://spaportal.cz/api/v1/booking")
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{
"destination": {
"_id": "66f16191f739705faa020001",
"id": 1,
"name": {
"cs_CZ": "Frantiskovy Lazne",
"de": "Franzensbad"
}
},
"visit_type": {
"_id": "66f16191f739705faa020004",
"id": 1,
"priority_position": 1,
"on_demand": false,
"name": {
"cs_CZ": "Frantiskolazenska lecebna kura",
"de": "Franzensbader Heilkur"
},
"nights_min": 1,
"nights_max": 3,
"reservation_time_span": "DAYS"
},
"hotel": {
"_id": "66f16191f739705faa020002",
"id": 1,
"name": "Pawlik",
"stars": 4
},
"room_type": {
"_id": "66f16191f739705faa020003",
"id": 1,
"category": {
"cs_CZ": "Prezidentske apartma",
"de": "App. Aquaforum"
},
"beds": 2
},
"date_from": "2026-12-02",
"date_to": "2026-12-16",
"price": {
"cs_CZ": {
"amount": 10200,
"currency": "CZK",
"price_breakdown": {
"base_price": 12000,
"discounts": [],
"promotions": [
{
"name": {
"cs_CZ": "Letní sleva",
"de": "Sommerrabatt",
"en": "Summer discount"
},
"percentage": 15,
"amount": 1800,
"nights": 4,
"valid_from": "2026-06-21",
"valid_to": "2026-06-25"
}
]
}
},
"de": {
"amount": 408,
"currency": "EUR",
"price_breakdown": {
"base_price": 480,
"discounts": [],
"promotions": [
{
"name": {
"cs_CZ": "Letní sleva",
"de": "Sommerrabatt",
"en": "Summer discount"
},
"percentage": 15,
"amount": 72,
"nights": 4,
"valid_from": "2026-06-21",
"valid_to": "2026-06-25"
}
]
}
}
},
"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"
}
},
"availability": "ON_DEMAND"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}Get booking configuration
Matches partial booking parameters such as destination name, visit type name, hotel name, room type category, and dates.
The response can contain any matched destination, visit type, hotel, room type, price, lowest price, and availability. If the query is incomplete or ambiguous, some fields can be omitted or availability can be null.
price.amount and lowest_price include any active discount promotions; individual promotions are itemized in price.price_breakdown.promotions.
curl --request GET \
--url https://spaportal.cz/api/v1/booking \
--header 'Authorization: Bearer <token>'import requests
url = "https://spaportal.cz/api/v1/booking"
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/booking', 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/booking",
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/booking"
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/booking")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://spaportal.cz/api/v1/booking")
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{
"destination": {
"_id": "66f16191f739705faa020001",
"id": 1,
"name": {
"cs_CZ": "Frantiskovy Lazne",
"de": "Franzensbad"
}
},
"visit_type": {
"_id": "66f16191f739705faa020004",
"id": 1,
"priority_position": 1,
"on_demand": false,
"name": {
"cs_CZ": "Frantiskolazenska lecebna kura",
"de": "Franzensbader Heilkur"
},
"nights_min": 1,
"nights_max": 3,
"reservation_time_span": "DAYS"
},
"hotel": {
"_id": "66f16191f739705faa020002",
"id": 1,
"name": "Pawlik",
"stars": 4
},
"room_type": {
"_id": "66f16191f739705faa020003",
"id": 1,
"category": {
"cs_CZ": "Prezidentske apartma",
"de": "App. Aquaforum"
},
"beds": 2
},
"date_from": "2026-12-02",
"date_to": "2026-12-16",
"price": {
"cs_CZ": {
"amount": 10200,
"currency": "CZK",
"price_breakdown": {
"base_price": 12000,
"discounts": [],
"promotions": [
{
"name": {
"cs_CZ": "Letní sleva",
"de": "Sommerrabatt",
"en": "Summer discount"
},
"percentage": 15,
"amount": 1800,
"nights": 4,
"valid_from": "2026-06-21",
"valid_to": "2026-06-25"
}
]
}
},
"de": {
"amount": 408,
"currency": "EUR",
"price_breakdown": {
"base_price": 480,
"discounts": [],
"promotions": [
{
"name": {
"cs_CZ": "Letní sleva",
"de": "Sommerrabatt",
"en": "Summer discount"
},
"percentage": 15,
"amount": 72,
"nights": 4,
"valid_from": "2026-06-21",
"valid_to": "2026-06-25"
}
]
}
}
},
"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"
}
},
"availability": "ON_DEMAND"
}{
"success": false,
"message": "<string>"
}{
"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
Destination name in any supported language.
Visit type name in any supported language.
Hotel name in any supported language.
Room type category in any supported language.
Start date in YYYY-MM-DD format.
End date in YYYY-MM-DD format.
Response
Matched booking configuration, availability, and price data.
NOT_AVAILABLE, AVAILABLE, ON_DEMAND Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes