/v1/locations/{location_id}/special_closings, with individual closings addressed at /v1/locations/{location_id}/special_closings/{special_closing_id}.
The special_closing object
string
Opaque, case-sensitive identifier for the closing.
string
Always
"special_closing".string
The parent location (
location ID) this closing applies to.string
ISO 8601 UTC instant at which the closure begins.
string
ISO 8601 UTC instant at which the closure ends.
string | null
A human-readable explanation for the closure (for example
"Public holiday"). It gives the AI
clerk the context needed to explain the closure to customers. May be null.string
ISO 8601 UTC creation timestamp.
string
ISO 8601 UTC last-update timestamp.
Time zones
starts_at and ends_at are absolute UTC instants — the trailing Z is part of the contract. They are not wall-clock times. To present a closing to a restaurant operator, convert each instant into the location’s timezone (an IANA identifier such as Europe/Zurich, available on the location object).
The example below converts a local wall-clock window in Europe/Zurich into the UTC instants the API expects.
List special closings
Returns a paginated list of the closings for a location, ordered bycreated_at.
Endpoint
Query parameters
integer
default:"10"
Number of results per page, between
1 and 100.string
Cursor for the next page — the
id of the last object in the previous page. Mutually exclusive
with ending_before.string
Cursor for the previous page — the
id of the first object in the current page. Mutually
exclusive with starting_after.string
Return closings created after this ISO 8601 timestamp.
string
Return closings created before this ISO 8601 timestamp.
string
Return closings updated after this ISO 8601 timestamp.
string
Return closings updated before this ISO 8601 timestamp.
Response
Create a special closing
Creates a closing under a location. This is a resource-creatingPOST, so an Idempotency-Key header is required.
Endpoint
Body parameters
string
required
ISO 8601 UTC instant at which the closure begins.
string
required
ISO 8601 UTC instant at which the closure ends.
string
Optional human-readable explanation for the closure. It is passed to the AI clerk so it can
explain the closure to customers. Omit or send
null to leave it unset.Response
Replaying the same
Idempotency-Key with the same body returns the original closing, with the
header Idempotent-Replayed: true. Reusing the key with a different body returns 409 idempotency_error, and a concurrent in-flight duplicate returns 409 conflict_error. Keys are
retained for 24 hours. See Idempotency.Retrieve a special closing
Fetches a single closing by id.Endpoint
Response
404 not_found_error.
Update a special closing
Updates one or more fields on a closing. Only the fields you send are changed; omitted fields keep their current value.Endpoint
Body parameters
string
New start instant, ISO 8601 UTC.
string
New end instant, ISO 8601 UTC.
string | null
New reason passed to the AI clerk so it can explain the closure to customers. Send
null to
clear an existing reason.Response
Delete a special closing
Permanently removes a closing. The location reverts to its regular opening hours for that window.Endpoint
404 not_found_error.
Errors
Special closing endpoints use the standard error model. The most common cases:Example error
Next steps
Opening hours
Special closings sit on top of a location’s regular weekly delivery and pickup schedule.
Locations
Read a location’s
timezone to render starts_at and ends_at in local wall-clock time.Idempotency
Creating a closing requires an
Idempotency-Key. Learn how safe retries work.