Method
PUT /v1/products/:id/lodging
Path Parameters
uuid
Product ID to link to a lodging property.
Body Parameters
Show Override object
Show Override object
Headers
string
Bearer token (requires
products:write).string
application/jsonRequest Example
curl -X PUT "https://api.voyantcloud.com/v1/products/prod_123/lodging" \
-H "Authorization: Bearer $VOYANT_API_KEY" \
-H "content-type: application/json" \
-d '{
"propertyId": "prop_987",
"ratePlanId": "rate_456",
"active": true,
"override": {
"name": "Voyant Athens Hotel",
"shortDescription": "Boutique stay near Syntagma Square",
"currency": "EUR",
"priceStrategy": "absolute",
"priceAmountMinor": 18900,
"amenityKeys": ["wifi", "breakfast"],
"mediaSetRef": "media_set_123"
}
}'
const res = await fetch("https://api.voyantcloud.com/v1/products/prod_123/lodging", {
method: "PUT",
headers: {
Authorization: `Bearer ${process.env.VOYANT_API_KEY}`,
"content-type": "application/json",
},
body: JSON.stringify({
propertyId: "prop_987",
roomTypeId: "room_001",
active: true,
}),
})
const payload = await res.json()
import os, requests
payload = {
"propertyId": "prop_987",
"active": True,
"override": {
"currency": "EUR",
"priceStrategy": "inherit"
}
}
resp = requests.put(
"https://api.voyantcloud.com/v1/products/prod_123/lodging",
headers={
"Authorization": f"Bearer {os.environ['VOYANT_API_KEY']}",
"content-type": "application/json",
},
json=payload,
)
result = resp.json()
Response
{
"data": {
"link": {
"id": "pll_001",
"productId": "prod_123",
"propertyId": "prop_987",
"departureId": null,
"ratePlanId": "rate_456",
"roomTypeId": "room_001",
"active": "true"
},
"override": {
"id": "plo_001",
"name": "Voyant Athens Hotel",
"currency": "EUR",
"priceStrategy": "absolute",
"priceAmountMinor": 18900,
"amenityKeys": ["wifi", "breakfast"],
"mediaSetRef": "media_set_123"
}
}
}
If the specified rate plan no longer exists, the API automatically retries with
ratePlanId set to null to preserve the link.