This guide walks you through the end-to-end flow for programmatically booking an event via the Zeeg API.Documentation Index
Fetch the complete documentation index at: https://developer.zeeg.me/llms.txt
Use this file to discover all available pages before exploring further.
The availability and booking endpoints require a paid Zeeg subscription. Requests on free plans will be rejected.
End-to-end booking flow
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.
{
"resource": {
"uri": "https://api.zeeg.me/v2/event-types/80f46bf5-eb01-4c07-960e-a9a3e18aae5e",
"uuid": "80f46bf5-eb01-4c07-960e-a9a3e18aae5e",
"title": "30-Minute Discovery Call",
"type": "ONE_ON_ONE",
"slug": "30min-discovery-call",
"schedulingUrl": "https://zeeg.me/lena-meier/30min-discovery-call",
"isActive": true,
"duration": 30,
"profile": {
"type": "User",
"firstName": "Lena",
"lastName": "Meier",
"slug": "lena-meier",
"email": "lena.meier@horizondigital.de"
},
"inviteePhoneNumber": false,
"inviteeQuestions": [
{
"id": 1,
"order": 1,
"question": "What would you like to discuss?",
"isActive": true,
"isRequired": true,
"type": "TEXT_INPUT",
"options": null
}
]
}
}
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.{
"ownerSlug": "lena-meier",
"eventTypeSlug": "30min-discovery-call",
"schedulingUrl": "https://zeeg.me/lena-meier/30min-discovery-call",
"duration": 30,
"firstAvailableDate": "2026-04-01",
"lastAvailableDate": "2026-04-14",
"timeZone": "Europe/Berlin",
"timeZoneOffset": "+02:00",
"isNotAvailable": false,
"availability": [
{
"date": "2026-04-01",
"slots": ["09:00", "09:30", "10:00", "10:30", "14:00", "14:30", "15:00"]
},
{
"date": "2026-04-02",
"slots": ["09:00", "09:30", "10:00", "11:00", "14:00", "15:00"]
},
{
"date": "2026-04-03",
"slots": []
}
],
"currentTime": "2026-03-20T12:00:00+00:00"
}
shared as the ownerSlug instead of a specific user’s slug.withHostsCount=1 to the query to see how many hosts are available per slot.duration=45 to override the default meeting duration (useful when the scheduling page supports multiple durations).seats=3 to check availability for group event types that support multiple attendees.GET /availability-by-shared-link/{sharedLink}?startDate=2026-04-01&endDate=2026-04-14&timeZone=Europe/Berlin
ownerSlugprofile.slug in step 1)eventTypeSlugdate2026-04-01start09:00durationnameemailtimeZoneEurope/BerlinphoneinviteePhoneNumber is true on the scheduling page)question_answers{ question_id, answer } objects matching the inviteeQuestions from step 1guestslocationGOOGLE_MEET, ZOOM, MICROSOFT_TEAMS, IN_PERSON, PHONE_CALLlocationOptionsutmutm_campaign, utm_source, utm_medium, utm_content, utm_termcustomQueryParamsc__ (max 10 fields)sharedLink{
"location": "IN_PERSON",
"locationOptions": {
"address": "123 Main St, Berlin, Germany",
"details": "3rd floor, room 301"
}
}
{
"location": "PHONE_CALL",
"locationOptions": {
"callType": "I_WILL_CALL"
},
"phone": "+49 170 1234567"
}
{
"uri": "https://api.zeeg.me/v2/scheduled-events/zg-O69bac566950c6",
"uuid": "zg-O69bac566950c6",
"title": "30-Minute Discovery Call",
"type": "ONE_ON_ONE",
"startTime": "2026-04-15T07:00:00.000000Z",
"endTime": "2026-04-15T07:30:00.000000Z",
"duration": 30,
"status": "confirmed",
"eventTypeUri": "https://api.zeeg.me/v2/event-types/80f46bf5-eb01-4c07-960e-a9a3e18aae5e",
"location": {
"type": "Google Meet",
"joinUrl": "https://meet.google.com/abc-defg-hij"
},
"invitees": [
{
"uuid": "zg-O69bad4047abf0",
"fullName": "Sophie Laurent",
"email": "sophie.laurent@northwind.io",
"timeZone": "Europe/Paris",
"guests": ["alex.chen@northwind.io"]
}
],
"hosts": [
{
"firstName": "Lena",
"lastName": "Meier",
"email": "lena.meier@horizondigital.de",
"slug": "lena-meier"
}
]
}