List Scheduling Pages
Retrieve a paginated list of scheduling pages (event types) in your workspace, including title, slug, duration, and active status.
curl --request GET \
--url https://api.zeeg.me/v2/event-types \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.zeeg.me/v2/event-types"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.zeeg.me/v2/event-types', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.zeeg.me/v2/event-types",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.zeeg.me/v2/event-types"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.zeeg.me/v2/event-types")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zeeg.me/v2/event-types")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"collection": [
{
"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,
"eventDurations": [
{
"minutes": 30,
"default": true
}
],
"profile": {
"type": "User",
"firstName": "Lena",
"lastName": "Meier",
"slug": "lena-meier",
"url": "https://zeeg.me/lena-meier",
"avatarUrl": null,
"email": "lena.meier@horizondigital.de"
},
"description": "<p>Let's connect for a quick 30-minute discovery call to explore how we can help your business grow.</p>",
"color": "2196f3",
"maxActiveInvitees": 1,
"inviteeNameFormat": "FULL_NAME",
"inviteePhoneNumber": false,
"inviteeQuestions": [
{
"id": 1,
"order": 1,
"question": "What would you like to discuss?",
"isActive": true,
"isRequired": true,
"type": "TEXT_INPUT",
"options": null
}
],
"availabilityType": "shared",
"confirmation": {
"redirectEnabled": true,
"redirectUrl": "https://acme.com/thanks",
"confirmationDataInUrl": true,
"redirectDelay": 0
},
"schedule": {
"uri": "https://api.zeeg.me/v2/schedules/Q1ZYo391da",
"uuid": "Q1ZYo391da",
"title": "Working hours"
}
},
{
"uri": "https://api.zeeg.me/v2/event-types/c12e6d26-1051-4e24-9380-8cca56609b9c",
"uuid": "c12e6d26-1051-4e24-9380-8cca56609b9c",
"title": "Product Demo",
"type": "ONE_ON_ONE",
"slug": "product-demo",
"schedulingUrl": "https://zeeg.me/lena-meier/product-demo",
"isActive": true,
"duration": 60,
"eventDurations": [
{
"minutes": 60,
"default": true
},
{
"minutes": 45,
"default": false
}
],
"profile": {
"type": "User",
"firstName": "Lena",
"lastName": "Meier",
"slug": "lena-meier",
"url": "https://zeeg.me/lena-meier",
"avatarUrl": null,
"email": "lena.meier@horizondigital.de"
},
"description": "<p>See our product in action with a comprehensive demo tailored to your needs.</p>",
"color": "4caf50",
"maxActiveInvitees": 1,
"inviteeNameFormat": "FULL_NAME",
"inviteePhoneNumber": true,
"inviteeQuestions": [
{
"id": 2,
"order": 1,
"question": "What is your company size?",
"isActive": true,
"isRequired": true,
"type": "RADIO_INPUT",
"options": [
"1-10",
"11-50",
"51-200",
"200+"
]
},
{
"id": 3,
"order": 2,
"question": "Please share anything that will help prepare for our meeting.",
"isActive": true,
"isRequired": false,
"type": "TEXT_INPUT",
"options": null
}
],
"availabilityType": "shared",
"confirmation": {
"redirectEnabled": false,
"redirectUrl": null,
"confirmationDataInUrl": false,
"redirectDelay": 10
},
"schedule": {
"uri": "https://api.zeeg.me/v2/schedules/Q1ZYo391da",
"uuid": "Q1ZYo391da",
"title": "Working hours"
}
},
{
"uri": "https://api.zeeg.me/v2/event-types/3f8a1c2d-5b6e-4f7a-9c0d-1e2f3a4b5c6d",
"uuid": "3f8a1c2d-5b6e-4f7a-9c0d-1e2f3a4b5c6d",
"title": "Kostenloses Erstgespräch",
"type": "ROUND_ROBIN",
"slug": "erstgespraech",
"schedulingUrl": "https://zeeg.me/R/erstgespraech",
"isActive": true,
"duration": 45,
"eventDurations": [
{
"minutes": 45,
"default": true
}
],
"profile": {
"type": "Organization",
"id": 1842,
"title": "Horizon Digital GmbH",
"logoUrl": null
},
"description": null,
"color": "2196f3",
"maxActiveInvitees": 1,
"inviteeNameFormat": "FULL_NAME",
"inviteePhoneNumber": false,
"inviteeQuestions": [],
"availabilityType": "per_host",
"confirmation": {
"redirectEnabled": false,
"redirectUrl": null,
"confirmationDataInUrl": false,
"redirectDelay": 10
},
"schedule": null
},
{
"uri": "https://api.zeeg.me/v2/event-types/9b2d3c4e-5f6a-4b7c-8d9e-0a1b2c3d4e5f",
"uuid": "9b2d3c4e-5f6a-4b7c-8d9e-0a1b2c3d4e5f",
"title": "Team Onboarding Session",
"type": "COLLECTIVE",
"slug": "team-onboarding",
"schedulingUrl": "https://zeeg.me/C/team-onboarding",
"isActive": true,
"duration": 60,
"eventDurations": [
{
"minutes": 60,
"default": true
}
],
"profile": {
"type": "Organization",
"id": 1842,
"title": "Horizon Digital GmbH",
"logoUrl": null
},
"description": null,
"color": "4caf50",
"maxActiveInvitees": 1,
"inviteeNameFormat": "FULL_NAME",
"inviteePhoneNumber": false,
"inviteeQuestions": [],
"availabilityType": "per_host",
"confirmation": {
"redirectEnabled": false,
"redirectUrl": null,
"confirmationDataInUrl": false,
"redirectDelay": 10
},
"schedule": null
}
],
"pagination": {
"total": 4,
"count": 4,
"totalPages": 1,
"previousPage": null,
"currentPage": 1,
"nextPage": null
}
}{
"message": "Unauthenticated."
}{
"error": {
"type": "insufficient_scope",
"message": "Your token is missing the required scope(s). Include at least one of: event_types:read, event_types:write.",
"error_id": "ddf567cb-9eb9-42a8-aef5-bc73d9c8b369",
"required_scopes": [
"event_types:read",
"event_types:write"
]
}
}{
"message": "Provide only one of userSlug, email, or publicId.",
"errors": {
"filter": [
"Provide only one of userSlug, email, or publicId."
]
}
}Authorizations
Query Parameters
Filter for scheduling pages of a specific user in your organization by slug. Only usable with an organization admin/owner token. Mutually exclusive with email and publicId.
"lena-meier"
Filter for scheduling pages of a specific user in your organization by email. Case-insensitive. Only usable with an organization admin/owner token. Mutually exclusive with userSlug and publicId.
"lena@acme.com"
Filter for scheduling pages of a specific user in your organization by their stable public identifier. Case-insensitive. Only usable with an organization admin/owner token. Mutually exclusive with userSlug and email.
"aBc123"
Limit the number of returned results per page.
1 <= x <= 10010
Page number for paginated results.
x >= 1Response
OK
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Numeric ID of the question, used when submitting answers via the booking API.
Where the availability schedule for this scheduling page lives. shared — one schedule is set on the page itself and applies to everyone; see schedule. per_host — each host has their own schedule for this page (COLLECTIVE / ROUND_ROBIN); the per-host schedules are returned on the single-page endpoint in hosts[].schedule.
shared, per_host Reference to the page-level availability schedule shared by all hosts. null when availabilityType is per_host. In list responses this is a reference only; the single-page endpoint inlines the full schedule (hours and overrides).
What happens after a booking is confirmed on this scheduling page. Always present, in its off state when no redirect is configured, so the fields can be read without first testing whether a redirect exists. Returned identically by this endpoint and by GET /event-types/{uuid}.
Hide child attributes
Hide child attributes
Whether the invitee is sent to an external URL after booking instead of staying on the Zeeg confirmation page.
true
Destination the invitee is sent to. Can be null while redirectEnabled is true, so test it before you use it.
"https://acme.com/thanks"
Whether the booking details are appended to redirectUrl as query parameters. Carries invitee_uuid and assigned_to alongside the start and end times, the guests, the invitee name and email, the answers to booking questions, and any c__ custom query parameters. invitee_uuid is the same identifier the invitee.scheduled webhook sends as inviteeUuid.
true
Seconds the confirmation page is shown before the redirect happens. 0 redirects immediately.
x >= 010
Hide child attributes
Hide child attributes
Total number of records.
x >= 0Number of records per page.
x >= 0Total number of pages.
x >= 0Current page number.
x >= 1Link to previous page, or null.
"/v2/event-types?page=1"
Link to next page, or null.
"/v2/event-types?page=3"
curl --request GET \
--url https://api.zeeg.me/v2/event-types \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.zeeg.me/v2/event-types"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.zeeg.me/v2/event-types', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.zeeg.me/v2/event-types",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.zeeg.me/v2/event-types"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.zeeg.me/v2/event-types")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zeeg.me/v2/event-types")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"collection": [
{
"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,
"eventDurations": [
{
"minutes": 30,
"default": true
}
],
"profile": {
"type": "User",
"firstName": "Lena",
"lastName": "Meier",
"slug": "lena-meier",
"url": "https://zeeg.me/lena-meier",
"avatarUrl": null,
"email": "lena.meier@horizondigital.de"
},
"description": "<p>Let's connect for a quick 30-minute discovery call to explore how we can help your business grow.</p>",
"color": "2196f3",
"maxActiveInvitees": 1,
"inviteeNameFormat": "FULL_NAME",
"inviteePhoneNumber": false,
"inviteeQuestions": [
{
"id": 1,
"order": 1,
"question": "What would you like to discuss?",
"isActive": true,
"isRequired": true,
"type": "TEXT_INPUT",
"options": null
}
],
"availabilityType": "shared",
"confirmation": {
"redirectEnabled": true,
"redirectUrl": "https://acme.com/thanks",
"confirmationDataInUrl": true,
"redirectDelay": 0
},
"schedule": {
"uri": "https://api.zeeg.me/v2/schedules/Q1ZYo391da",
"uuid": "Q1ZYo391da",
"title": "Working hours"
}
},
{
"uri": "https://api.zeeg.me/v2/event-types/c12e6d26-1051-4e24-9380-8cca56609b9c",
"uuid": "c12e6d26-1051-4e24-9380-8cca56609b9c",
"title": "Product Demo",
"type": "ONE_ON_ONE",
"slug": "product-demo",
"schedulingUrl": "https://zeeg.me/lena-meier/product-demo",
"isActive": true,
"duration": 60,
"eventDurations": [
{
"minutes": 60,
"default": true
},
{
"minutes": 45,
"default": false
}
],
"profile": {
"type": "User",
"firstName": "Lena",
"lastName": "Meier",
"slug": "lena-meier",
"url": "https://zeeg.me/lena-meier",
"avatarUrl": null,
"email": "lena.meier@horizondigital.de"
},
"description": "<p>See our product in action with a comprehensive demo tailored to your needs.</p>",
"color": "4caf50",
"maxActiveInvitees": 1,
"inviteeNameFormat": "FULL_NAME",
"inviteePhoneNumber": true,
"inviteeQuestions": [
{
"id": 2,
"order": 1,
"question": "What is your company size?",
"isActive": true,
"isRequired": true,
"type": "RADIO_INPUT",
"options": [
"1-10",
"11-50",
"51-200",
"200+"
]
},
{
"id": 3,
"order": 2,
"question": "Please share anything that will help prepare for our meeting.",
"isActive": true,
"isRequired": false,
"type": "TEXT_INPUT",
"options": null
}
],
"availabilityType": "shared",
"confirmation": {
"redirectEnabled": false,
"redirectUrl": null,
"confirmationDataInUrl": false,
"redirectDelay": 10
},
"schedule": {
"uri": "https://api.zeeg.me/v2/schedules/Q1ZYo391da",
"uuid": "Q1ZYo391da",
"title": "Working hours"
}
},
{
"uri": "https://api.zeeg.me/v2/event-types/3f8a1c2d-5b6e-4f7a-9c0d-1e2f3a4b5c6d",
"uuid": "3f8a1c2d-5b6e-4f7a-9c0d-1e2f3a4b5c6d",
"title": "Kostenloses Erstgespräch",
"type": "ROUND_ROBIN",
"slug": "erstgespraech",
"schedulingUrl": "https://zeeg.me/R/erstgespraech",
"isActive": true,
"duration": 45,
"eventDurations": [
{
"minutes": 45,
"default": true
}
],
"profile": {
"type": "Organization",
"id": 1842,
"title": "Horizon Digital GmbH",
"logoUrl": null
},
"description": null,
"color": "2196f3",
"maxActiveInvitees": 1,
"inviteeNameFormat": "FULL_NAME",
"inviteePhoneNumber": false,
"inviteeQuestions": [],
"availabilityType": "per_host",
"confirmation": {
"redirectEnabled": false,
"redirectUrl": null,
"confirmationDataInUrl": false,
"redirectDelay": 10
},
"schedule": null
},
{
"uri": "https://api.zeeg.me/v2/event-types/9b2d3c4e-5f6a-4b7c-8d9e-0a1b2c3d4e5f",
"uuid": "9b2d3c4e-5f6a-4b7c-8d9e-0a1b2c3d4e5f",
"title": "Team Onboarding Session",
"type": "COLLECTIVE",
"slug": "team-onboarding",
"schedulingUrl": "https://zeeg.me/C/team-onboarding",
"isActive": true,
"duration": 60,
"eventDurations": [
{
"minutes": 60,
"default": true
}
],
"profile": {
"type": "Organization",
"id": 1842,
"title": "Horizon Digital GmbH",
"logoUrl": null
},
"description": null,
"color": "4caf50",
"maxActiveInvitees": 1,
"inviteeNameFormat": "FULL_NAME",
"inviteePhoneNumber": false,
"inviteeQuestions": [],
"availabilityType": "per_host",
"confirmation": {
"redirectEnabled": false,
"redirectUrl": null,
"confirmationDataInUrl": false,
"redirectDelay": 10
},
"schedule": null
}
],
"pagination": {
"total": 4,
"count": 4,
"totalPages": 1,
"previousPage": null,
"currentPage": 1,
"nextPage": null
}
}{
"message": "Unauthenticated."
}{
"error": {
"type": "insufficient_scope",
"message": "Your token is missing the required scope(s). Include at least one of: event_types:read, event_types:write.",
"error_id": "ddf567cb-9eb9-42a8-aef5-bc73d9c8b369",
"required_scopes": [
"event_types:read",
"event_types:write"
]
}
}{
"message": "Provide only one of userSlug, email, or publicId.",
"errors": {
"filter": [
"Provide only one of userSlug, email, or publicId."
]
}
}