Operate
Postman & samples
A Postman collection generated from the same contract that validates every request, and the raw contract itself for your own tooling.
The collection
A Postman v2.1 collection generated from this contract: import both, paste your key into the environment's apiKey, and run the folders top to bottom.
- Collection: https://api.zimmerstack.com/api/v1/public/connect-api/postman
- Environment: https://api.zimmerstack.com/api/v1/public/connect-api/postman?environment=1
Folders: 0 · Start here (property, catalog — fills the variables), 1 · Read our record, 2 · Write (202 + batch), 3 · Did it land?, 4 · Budgets and errors, 5 · Bookings (PMS side) (create → read → list → cancel, with a fresh reservation id per run), and the contract itself.
The contract (OpenAPI 3.1)
https://api.zimmerstack.com/api/v1/public/connect-api/contract — every schema is the zod schema the server validates with, inlined; every request and error carries a sample under x-zimmerstack.samples. Generate a client from it, or diff it in CI to catch additive changes: new optional fields never bump the version, a breaking change ships as /v2 alongside.
curl -s https://api.zimmerstack.com/api/v1/public/connect-api/contract | jq '.paths | keys'Sample scripts
Node 18+, no SDK, no dependency. Both live in the ZimmerStack repository under apps/backend/ts/scripts/:
connectApiSample.ts— push an availability range, poll the batch until it lands.connectApiBookingSample.ts— create a booking from a JSON file, print the PMS reference, cancel it on request.
CONNECT_API_KEY=zsk_live_… node connectApiBookingSample.mjs booking.json
# → 201 SB-7KQ2MX9D (bookingId 48213) · inventory event recorded · channels: yesFacts on this page (routes, samples, limits, codes) come from the API's public contract read live, Tue, 20 Oct 2026 12:29:20 GMT.