Create a reservation hold
curl --request POST \
--url https://api-sandbox.vulcanopro.com/api/v1/reservations \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"tour_id": 3448,
"date": "2026-08-12",
"time": "15:30",
"pax": {
"adult": 2,
"child": 1,
"senior": 0,
"infant": 1
}
}
'const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
tour_id: 3448,
date: '2026-08-12',
time: '15:30',
pax: {adult: 2, child: 1, senior: 0, infant: 1}
})
};
fetch('https://api-sandbox.vulcanopro.com/api/v1/reservations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-sandbox.vulcanopro.com/api/v1/reservations"
payload = {
"tour_id": 3448,
"date": "2026-08-12",
"time": "15:30",
"pax": {
"adult": 2,
"child": 1,
"senior": 0,
"infant": 1
}
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"status": "ok",
"timestamp": "<string>",
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "HOLD",
"tour_id": 123,
"date": "2023-12-25",
"time": "15:30",
"pax": {
"adult": 2,
"child": 1,
"senior": 0,
"infant": 1
},
"seats": 123,
"sale_channel_id": 123,
"expires_at": "2023-11-07T05:31:56Z",
"order_id": 123,
"external_reference": "<string>",
"customer": {},
"passengers": [
{}
],
"additional_activities": [
{
"id": 123,
"name": "<string>",
"quantity": 123,
"amount": 123,
"amount_usd": 123
}
],
"created_at": "2023-11-07T05:31:56Z"
}
}Reservations
Create a reservation hold
Requires reservations:write. Blocks seats for 15 minutes. The partner sale channel is injected server-side. Response status is HOLD.
POST
/
reservations
Create a reservation hold
curl --request POST \
--url https://api-sandbox.vulcanopro.com/api/v1/reservations \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"tour_id": 3448,
"date": "2026-08-12",
"time": "15:30",
"pax": {
"adult": 2,
"child": 1,
"senior": 0,
"infant": 1
}
}
'const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
tour_id: 3448,
date: '2026-08-12',
time: '15:30',
pax: {adult: 2, child: 1, senior: 0, infant: 1}
})
};
fetch('https://api-sandbox.vulcanopro.com/api/v1/reservations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-sandbox.vulcanopro.com/api/v1/reservations"
payload = {
"tour_id": 3448,
"date": "2026-08-12",
"time": "15:30",
"pax": {
"adult": 2,
"child": 1,
"senior": 0,
"infant": 1
}
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"status": "ok",
"timestamp": "<string>",
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "HOLD",
"tour_id": 123,
"date": "2023-12-25",
"time": "15:30",
"pax": {
"adult": 2,
"child": 1,
"senior": 0,
"infant": 1
},
"seats": 123,
"sale_channel_id": 123,
"expires_at": "2023-11-07T05:31:56Z",
"order_id": 123,
"external_reference": "<string>",
"customer": {},
"passengers": [
{}
],
"additional_activities": [
{
"id": 123,
"name": "<string>",
"quantity": 123,
"amount": 123,
"amount_usd": 123
}
],
"created_at": "2023-11-07T05:31:56Z"
}
}Authorizations
api-keyapi-secret
Partner API key
Body
application/json