The Booking API is available now for public scheduling workflows.
What this guide covers
- How to authenticate and call booking endpoints safely.
- How to discover locations, list services, read availability, and complete booking flow.
- When to use Booking API directly vs MCP integration.
Booking API vs MCP
- Use Booking API when you build your own backend/client integration and want direct HTTP control.
- Use MCP when your client is MCP-native and should call tools like list_services and get_availability.
- Both paths are designed around the same booking logic and conflict checks.
If you want a ready-to-embed conversational flow for customer booking, review Booking Chat Agent.
Authentication
- Create API credentials in Settings → API Clients.
- Request a token from /oauth/token using client credentials.
- Call Booking API with Authorization: Bearer <token>.
Scopes used by booking workflows: org:read, availability:read, appointments:write.
Endpoint map
GET /api/v1/locations- List active booking locations for your organization.GET /api/v1/services- List services for your organization, including location_ids.GET /api/v1/availability- Read available slots by service and date, with location_id when required.POST /api/v1/appointments/hold- Create a temporary hold before confirmation, using the same location_id when required.POST /api/v1/appointments/confirm- Confirm a hold and create the appointment.POST /api/v1/appointments/reschedule- Reschedule an existing appointment by booking_id.POST /api/v1/appointments/cancel- Cancel an existing appointment by booking_id.
Reservations (fixed-price services). A hold or booking made through this interface for a service or resource with a fixed price is an appointment reservation within the meaning of the Terms (Part C, Section 13 (2)), not a contract for the service. The hold response and the booking response then carry kind: "reservation", contract: "on_site", the price in price_cents with price_label reading exactly „Preis der Organisation, zahlbar vor Ort; Preis und Vertrag werden vor Ort geregelt“ (the organisation's price, payable on site; price and contract are settled on site), and notice with this fixed text: „Terminreservierung: Mit dieser Reservierung ist noch kein Vertrag über die Leistung geschlossen. Preis der Organisation, zahlbar vor Ort; Preis und Vertrag werden vor Ort geregelt.“ (English: "Appointment reservation: this reservation does not yet conclude a contract for the service. The organisation's price, payable on site; price and contract are settled on site.") Your interface must show this notice to the end-customer, at the latest with the booking result; that is your duty under Part B, Section 8 (5) letter c of the Terms. The hold response carries it so that it can be shown before the end-customer submits the booking; a rendering in another language must be complete and faithful. Zimun neither obtains nor records any end-customer acceptance of its own terms on this interface, takes no online payment and no card, and sends a reservation notice, not a booking confirmation, to the e-mail address submitted with the booking.
Recommended sequence
- List locations if the organization can book in more than one place.
- Let the user choose a location when required.
- List services and keep only services that cover that location.
- Fetch availability with service_id, date, and location_id when needed.
- Create hold with the same location_id.
- Confirm booking with contact details.
- Store booking_id so you can reschedule or cancel later.
Reliability notes
- Use idempotency for create/confirm calls to avoid duplicates on retries.
- Treat holds as temporary and confirm quickly.
- Handle 401/403/404 and conflict responses explicitly in client UX.
Scope note
Current public APIs focus on booking operations. Management APIs are planned for a later phase.