Push Availability to Booking.com
Set rooms to sell, stop-sell, and restrictions on Booking.com per room and rate plan. Inventory lives here and only here — a rates update refuses it. For open/closed on every connected channel at once, use PUT /v1/availability/{propertyId} instead.
/v1/channels/booking/availabilityParameters
typestringRequiredavailability for inventory and stop-sell (rates and derived-pricing are covered on Update Booking.com Pricing).
property_idstring | integerRequiredBooking.com property id, connected to your workspace.
updatesarrayRequired{ roomId, rateId, dateRange: { start, end }, availableRooms, closed?, restrictions? } per item. availableRooms: 0 blocks the room; closed: true stops sale regardless of inventory.
Dates are inclusive at both ends
dateRange.start and dateRange.end are both nights that get written, exactly as on a rates write. To close or open a single night, send the same date twice.
# One night — 2026-11-04
"dateRange": { "start": "2026-11-04", "end": "2026-11-04" }
# Four nights — 2026-11-04, 2026-11-05, 2026-11-06 and 2026-11-07
"dateRange": { "start": "2026-11-04", "end": "2026-11-07" }Inventory here, prices there
This write carries rooms to sell, the stop-sell flag and restrictions. It carries no rate amount, and the rate write carries no inventory: roomsToSell on a rates update is refused with 422 inventory_not_in_rate_update pointing back here.
- The two writes are independent. Opening a night for sale does not price it, and a night that is open with no price on the rate plan you sell does not appear on Booking.com.
- Rate amounts, the occupancy they are priced at, and the verification that they went live are on Update Booking.com Pricing.
Notes
- Scoped to your workspace: a Booking.com property id that is not connected to your workspace returns
404 not_found, the same answer as an id that does not exist. - Read the current state first with
GET /v1/channels/booking/availability?property_id=1234567&start_date=2026-07-01&number_of_days=14. - Writes here go to Booking.com only; restrictions never leak to other channels.
- Omit
availableRoomsandclosedfor a restriction-only write — inventory is then left untouched. See Minimum Stay & Restrictions for the full restriction set and what a partial result looks like.
Example
# Stop-sell one night
curl -X PUT https://api.repull.dev/v1/channels/booking/availability \
-H "Authorization: Bearer sk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"type": "availability", "property_id": "1234567", "updates": [{"roomId": "123456701", "rateId": "98765", "dateRange": {"start": "2026-11-04", "end": "2026-11-04"}, "availableRooms": 0, "closed": true}]}'
# Reopen a whole week — 2026-07-01 through 2026-07-07 inclusive — with one room to sell
curl -X PUT https://api.repull.dev/v1/channels/booking/availability \
-H "Authorization: Bearer sk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"type": "availability", "property_id": "1234567", "updates": [{"roomId": "123456701", "rateId": "98765", "dateRange": {"start": "2026-07-01", "end": "2026-07-07"}, "availableRooms": 1, "closed": false}]}'