The Zeeg API gives you full control over scheduled events in your workspace. You can list events with powerful filters, retrieve detailed event information, cancel events or individual invitees, and hand over Round Robin events to a different host.
Listing events
Retrieve a paginated list of scheduled events with GET /scheduled-events. Use query parameters to filter and sort the results.
Available filters
| Parameter | Type | Description |
|---|
status | string | Filter by event status: confirmed or cancelled |
minStartTime | ISO 8601 | Only return events starting at or after this time |
maxStartTime | ISO 8601 | Only return events starting at or before this time |
userSlug | string | Filter by the host’s user slug |
hostEmail | string | Filter by the host’s email address |
inviteeEmail | string | Filter by an invitee’s email address |
teamSlug | string | Filter by team slug |
keyword | string | Search events by keyword |
sort | string | Sort by start time: asc (default) or desc |
scope | string | Set to all to list events across the entire organization (requires an admin or owner token with admin:full scope) |
Example: filter by date range and status
curl -X GET "https://api.zeeg.me/v2/scheduled-events?status=confirmed&minStartTime=2026-04-01T00:00:00Z&maxStartTime=2026-04-30T23:59:59Z&sort=asc" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
To list events across your entire organization, add scope=all. This requires a token with the admin:full scope.
curl -X GET "https://api.zeeg.me/v2/scheduled-events?scope=all" \
-H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
-H "Accept: application/json"
Getting event details
Retrieve full details for a single event with GET /scheduled-events/{uuid}. Event UUIDs follow the format zg-XXX (for example, zg-O69bac566950c6).
curl -X GET "https://api.zeeg.me/v2/scheduled-events/zg-O69bac566950c6" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json"
Example response
{
"resource": {
"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-15T09:00:00.000000Z",
"endTime": "2026-04-15T09:30:00.000000Z",
"duration": 30,
"status": "confirmed",
"eventTypeUri": "https://api.zeeg.me/v2/event-types/80f46bf5-eb01-4c07-960e-a9a3e18aae5e",
"maxActiveInvitees": 1,
"activeInviteesCount": 1,
"location": {
"type": "Google Meet",
"joinUrl": "https://meet.google.com/abc-defg-hij"
},
"invitees": [
{
"uuid": "zg-O69bad4047abf0",
"salutation": "Ms.",
"fullName": "Sophie Laurent",
"email": "sophie.laurent@northwind.io",
"guests": ["alex.chen@northwind.io"],
"timeZone": "Europe/Paris",
"questions": [
{
"answer": "Product demo and pricing options",
"answer_type": "STRING",
"question": "What would you like to discuss?"
}
],
"scheduledAt": "2026-04-10T08:30:00.000000Z",
"utm": {
"utm_campaign": "spring_launch",
"utm_source": "linkedin",
"utm_medium": "social",
"utm_content": null,
"utm_term": null
}
}
],
"hosts": [
{
"firstName": "Lena",
"lastName": "Meier",
"email": "lena.meier@horizondigital.de",
"slug": "lena-meier",
"url": "https://zeeg.me/lena-meier",
"avatarUrl": null
}
],
"createdAt": "2026-04-10T08:30:00.000000Z",
"updatedAt": "2026-04-10T08:30:02.000000Z"
}
}
Cancelling events
Cancel a scheduled event with PUT /scheduled-events/{uuid}/cancel. You can optionally include a cancellationReason (maximum 512 characters) that will be shared with participants.
curl -X PUT "https://api.zeeg.me/v2/scheduled-events/zg-O69bac566950c6/cancel" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"cancellationReason": "Scheduling conflict — will rebook next week."}'
A successful cancellation returns a 200 response confirming the operation.
{
"success": true,
"message": "Event cancelled successfully.",
"status": 200
}
Attempting to cancel an event that is already cancelled will return a 400 Bad Request error. Check the event’s status field before making the request if you need to handle this case gracefully.
Cancelling individual invitees
For group events where you need to remove a single attendee without cancelling the entire event, use PUT /scheduled-invitees/{uuid}/cancel. The invitee UUID can be found in the event details response.
curl -X PUT "https://api.zeeg.me/v2/scheduled-invitees/zg-O69bad4047abf0/cancel" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"cancellationReason": "Attendee can no longer make it."}'
Handing over events
Transfer a Round Robin event to a different host with PUT /scheduled-events/{uuid}/handover. You can specify the new host explicitly or let the system auto-assign one based on the Round Robin rules.
Options
| Parameter | Type | Default | Description |
|---|
newHostEmail | string | — | Email of the new host. If omitted, the system auto-assigns using Round Robin logic. |
requireHostAvailability | boolean | false | When true, the handover only succeeds if the new host is available at the event time. |
fallbackToReschedule | boolean | true | When true and the new host is unavailable, sends a reschedule request to the invitee instead of failing. |
curl -X PUT "https://api.zeeg.me/v2/scheduled-events/zg-O69bac566950c6/handover" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"newHostEmail": "marco.rossi@horizondigital.de",
"requireHostAvailability": true,
"fallbackToReschedule": true
}'
Handover limitations. The handover endpoint currently has the following constraints:
- Round Robin only — handover is only supported for events booked through a Round Robin scheduling page. Other event types will return an error.
- Calendar provider — the host must use a Microsoft calendar or have no calendar connected. Google Calendar is not yet supported for handovers.
- No Zoom or Webex locations — events with Zoom or Webex meeting locations cannot be handed over. The meeting link is tied to the original host and cannot be transferred automatically.
Adding notes to events
You can attach internal notes to scheduled events that are visible only to hosts and workspace members. Notes are useful for adding context before or after a meeting.
See the Notes API reference for the full list of endpoints.
Real-time updates
Instead of polling GET /scheduled-events to detect changes, set up webhook subscriptions to receive real-time notifications when events are created, cancelled, rescheduled, or handed over. This is more efficient and gives you near-instant updates.