Create a Block
A block reserves a number of units, for one rate plan, across a date range. Each night in that range gets its own entry in timeSlices, so the number of blocked units can vary night to night, useful when attendance ramps up mid-event and tapers off at the end.
POST /booking/v1/blocks
{
"groupId": "EQBOXNNQ",
"ratePlanId": "MUC-NONREF-SGL",
"from": "2026-08-08",
"to": "2026-08-11",
"grossDailyRate": {
"amount": 160,
"currency": "EUR"
},
"timeSlices": [
{
"blockedUnits": 3
},
{
"blockedUnits": 0
},
{
"blockedUnits": 7
}
],
"marketSegmentId": "BUSR"
}
Notes on the fields:
groupIdlinks the block back to the group created in Step 1.ratePlanIdmust be a rate plan that already exists at the property. The block negotiates against that plan’s structure rather than defining a new one.from/todefine the date range.timeSliceshas one entry per night, in order. A three-night range (Aug 8 → Aug 11) needs exactly three entries. In the example above, the middle night holds0units even though the block spans it, while the surrounding nights hold 3 and 7.grossDailyRateis the negotiated average rate. Apaleo’s rate on a block is a per-night average, so if the group negotiated different weekday and weekend pricing, this figure needs to be the blended average across the stay. Neither the API nor the Apaleo UI supports varying the rate itself night to night, only the unit count.marketSegmentIdtags the block, and any reservations picked up from it, for reporting, same as on a regular reservation. Blocks inherit a market segment from the rate plan by default, so only set this if the booking needs to be tracked separately. Changing the rate plan’s segment later only affects blocks created after that change, not existing ones.
The response returns a blockId. The block starts life in Tentative status: held, but not yet pulled out of public availability.