Skip to main content
This guide walks you through the end-to-end flow for programmatically booking an event via the Zeeg API.
The availability and booking endpoints require a paid Zeeg subscription. Requests on free plans will be rejected.
Always verify availability before creating an event. Attempting to book a slot that is no longer available will result in an error. Check available time slots immediately before creating the event to avoid race conditions.

End-to-end booking flow

1

Get your scheduling page details

Retrieve the scheduling page (event type) you want to book against. You need its slug, the owner’s slug, any custom invitee questions, and whether a phone number is required.List all your scheduling pages:
Or fetch a specific one by UUID:
Example response (key fields highlighted):
Take note of:
  • slug — identifies the event type in subsequent requests (e.g., 30min-discovery-call).
  • profile.slug — the owner’s slug, used as ownerSlug (e.g., lena-meier).
  • inviteeQuestions — custom questions with their numeric ids. You will pass answers in step 3 using question_id.
  • inviteePhoneNumber — true if a phone number is required, false otherwise.
2

Check available time slots

Query the availability endpoint to find open slots for the scheduling page.
Example response:
This endpoint requires the admin:full or timetable scope.
Holding the scheduling page’s uuid from GET /event-types? Call GET /event-types/{uuid}/availability with the same query parameters instead. It returns the same response, and it works the same for personal, team and shared scheduling pages.
Shared event types (Round Robin, Flexi, Collective):
  • Use shared as the ownerSlug instead of a specific user’s slug.
  • A shared scheduling link is addressed the same way: its token is the eventTypeSlug.
  • For Round Robin events, add withHostsCount=1 to the query to see how many hosts are available per slot.
Additional query parameters:
  • Add duration=45 to override the default meeting duration (useful when the scheduling page supports multiple durations).
  • Add seats=3 to check availability for group event types that support multiple attendees.
3

Create the event

Book a slot by sending a POST request to /event with the slot details and invitee information.
This endpoint requires the admin:full or booking scope.Required fields:Send eventTypeId (the scheduling page’s uuid from step 1) in place of ownerSlug and eventTypeSlug if you prefer. It cannot be combined with them.Optional fields:Location options:For IN_PERSON locations, include locationOptions with the meeting address:
For PHONE_CALL locations, include locationOptions with the call type and a phone number:
4

Verify the booking

The response from step 3 contains the created event with all its details.Example response:
To verify the booking at any later point, fetch it by UUID:
Last modified on September 29, 2026