Hold a range of nights
Tells Maat that these nights are unavailable, because they are taken on your
platform. Creates the block if this external_uid is new to us and replaces its
dates otherwise.
check_out is exclusive — it is the departure day, not the last night held.
A stay of 2026-09-01 to 2026-09-05 holds four nights.
Identify the property with either your own provider_id or Maat’s listing_id,
and send exactly one of them. Use listing_id for a property you did not push.
Nothing about a guest belongs here. There is no field for a name, a booking
reference, an amount or a note, and sending one is a validation_failed rather
than a silent drop. Maat has no relationship with somebody who booked on your
platform and has no lawful basis to hold their details.
Pushing a block onto nights that already carry a Maat booking or a live hold
answers 409, and nothing is written: the whole range is refused rather than
the part of it that was free. conflicts[] names the colliding dates.
Re-sending the same external_uid with different dates MOVES the block — the old
nights are released and the new ones held, in one step. Re-sending it unchanged is
a no-op that answers updated.
Live in a sandbox workspace. Returns 501 against a production one, after
validating the payload in full — so keep holding these nights on your side until
the production contract is enabled.
Identifying the property by provider_id also returns 501 for now, in either
environment: the property contract that establishes that mapping is not enabled
yet. Use listing_id.
Authorizations
A short-lived partner token, obtained by exchanging your API key at
POST /token. Send it as Authorization: Bearer <access_token>.
Tokens live for fifteen minutes by default and never for more than an hour. Mint one per batch of work, not one per request.
The token carries the workspace and the environment its key was issued for. You cannot change either by asking: the exchange ignores everything in the request body for exactly that reason.
Never send it as a cookie or in a query string, and never store it — store the API key, mint tokens from it.
Path Parameters
Your own identifier for the block, typically your reservation id. Unique to you.
1 - 255Body
- BlockUpsertRequest
- BlockUpsertRequest
A range of nights that are unavailable. Send exactly one of provider_id or
listing_id.
No guest data of any kind is accepted here — an unrecognised field is an error, not something we quietly ignore.
Your own property identifier.
1 - 128First night held.
"2026-09-01"
Departure day, exclusive. The night before this is the last one held.
"2026-09-05"
Maat's listing identifier, for a property you did not push.
A closed set, deliberately. There is no free-text alternative, because the obvious thing to write in one is a guest's name.
reserved, maintenance, owner_stay, other Response
The nights are held.
created, updated Nights actually held, restated so you can check it.
1 <= x <= 730The Maat listing the block landed on. Useful when you addressed the property by your own identifier and want ours in return.