Manage Blocks
A block’s lifecycle looks like this:
Tentative ──confirm──▶ Definite
▲ │
│ release │ cancel
└──────────────────────┤
▼
Canceled
Tentative
The default status on creation. Units are reserved for the group, but availability elsewhere is not reduced yet, so the hold can be adjusted or abandoned with no side effects.
Definite
PUT /booking/v1/block-actions/{id}/confirm
Confirming is what actually reserves the inventory. This call re-checks availability and only succeeds if there is still enough left. Treat it as a normal rejectable call in your integration: if availability has shrunk since the block was created, prompt the organiser to reduce the block rather than assuming confirmation always works.
Related block actions
Amend covers general edits, including moving a block between statuses directly:
PUT /booking/v1/block-actions/{id}/amend
{
"from": "2026-08-09",
"to": "2026-08-12",
"grossDailyRate": { "amount": 160, "currency": "EUR" },
"timeSlices": [
{ "blockedUnits": 3 },
{ "blockedUnits": 0 },
{ "blockedUnits": 7 }
],
"marketSegmentId": "BUSR",
"status": "Tentative"
}
Release moves a block from Definite back to Tentative and returns the inventory. Only allowed if no reservation has been picked up yet:
PUT /booking/v1/block-actions/{id}/release
Cancel moves the block to Canceled. Only allowed if no reservation has been picked up yet:
PUT /booking/v1/block-actions/{id}/cancel
Pickup creates reservations against its block. Each pickup consumes one held unit from the block.
POST /booking/v1/groups/{id}/reservations
{
"reservations": [
{
"blockId": "MUC-QJNXJR",
"arrival": "2026-08-08",
"departure": "2026-08-10",
"adults": 1,
"comment": "Needs a wake-up call",
"primaryGuest": {
"title": "Mr",
"gender": "Male",
"firstName": "Jon",
"middleInitial": "D",
"lastName": "Doe",
"email": "john.d@doe.com",
"phone": "+4989123343",
"address": {
"addressLine1": "My Street 1",
"postalCode": "12453",
"city": "MyCity",
"countryCode": "GB"
},
"company": { "name": "Company GmbH", "taxId": "1442" }
}
},
{
"blockId": "MUC-WKMCKT",
"arrival": "2026-08-08",
"departure": "2026-08-10",
"adults": 1,
"childrenAges": [6],
"primaryGuest": {
"title": "Mr",
"gender": "Male",
"firstName": "Eric",
"middleInitial": "E",
"lastName": "Steinmetz",
"email": "eric.e@steinmetz.com",
"phone": "+4989123343",
"address": {
"addressLine1": "My Street 1",
"postalCode": "12453",
"city": "MyCity",
"countryCode": "GB"
}
}
}
]
}
blockIdties the new reservation to its block, and the returned reservation ID ties it back to the group.- The reservation inherits the block’s rate plan; you don’t repeat rate details on the pickup call.
- If a picked-up reservation is cancelled, the unit returns to the block’s unpicked pool automatically, it doesn’t need to be manually restored.
- Everything after pickup (amend, check-in, cancel) runs through the standard reservation-actions endpoints, the same ones you’d use for any non-block reservation.
Wash frees the unpicked remainder of a Definite block back to public availability, without changing the block’s own status. Useful when actual attendance comes in under the negotiated block size:
PUT /booking/v1/block-actions/{id}/wash
Each Block action — created, changed, deleted, confirmed, released, washed, cancelled — sends an event you can listen to using webhooks.