Handover a Scheduled Event
Reassign a scheduled Round Robin event from its current host to another eligible host in your workspace.
curl --request PUT \
--url https://api.zeeg.me/v2/scheduled-events/{uuid}/handover \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"newHostEmail": "marco.rossi@horizondigital.de",
"requireHostAvailability": false,
"fallbackToReschedule": true
}
'import requests
url = "https://api.zeeg.me/v2/scheduled-events/{uuid}/handover"
payload = {
"newHostEmail": "marco.rossi@horizondigital.de",
"requireHostAvailability": False,
"fallbackToReschedule": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
newHostEmail: 'marco.rossi@horizondigital.de',
requireHostAvailability: false,
fallbackToReschedule: true
})
};
fetch('https://api.zeeg.me/v2/scheduled-events/{uuid}/handover', 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/scheduled-events/{uuid}/handover",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'newHostEmail' => 'marco.rossi@horizondigital.de',
'requireHostAvailability' => false,
'fallbackToReschedule' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.zeeg.me/v2/scheduled-events/{uuid}/handover"
payload := strings.NewReader("{\n \"newHostEmail\": \"marco.rossi@horizondigital.de\",\n \"requireHostAvailability\": false,\n \"fallbackToReschedule\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.zeeg.me/v2/scheduled-events/{uuid}/handover")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"newHostEmail\": \"marco.rossi@horizondigital.de\",\n \"requireHostAvailability\": false,\n \"fallbackToReschedule\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zeeg.me/v2/scheduled-events/{uuid}/handover")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"newHostEmail\": \"marco.rossi@horizondigital.de\",\n \"requireHostAvailability\": false,\n \"fallbackToReschedule\": true\n}"
response = http.request(request)
puts response.read_body{
"resource": {
"uri": "https://api.zeeg.me/v2/scheduled-events/zg-O69bac566950c6",
"uuid": "zg-O69bac566950c6",
"title": "30-Minute Discovery Call",
"type": "ROUND_ROBIN",
"startTime": "2026-04-15T09:00:00.000000Z",
"endTime": "2026-04-15T09:30:00.000000Z",
"duration": 30,
"status": "active",
"eventTypeUri": "https://api.zeeg.me/v2/event-types/80f46bf5-eb01-4c07-960e-a9a3e18aae5e",
"location": null,
"maxActiveInvitees": 1,
"activeInviteesCount": 1,
"invitees": [
{
"uuid": "zg-O69bad4047abf0",
"salutation": "Ms.",
"fullName": "Sophie Laurent",
"email": "sophie.laurent@northwind.io",
"guests": [],
"timeZone": "Europe/Paris",
"cancellation": {
"cancelledAt": null,
"cancelledBy": null,
"cancellerType": null,
"cancellationReason": null
},
"payment": null,
"scheduledAt": "2026-04-10T08:30:00.000000Z",
"utm": {
"utm_campaign": "spring_launch",
"utm_source": "linkedin",
"utm_medium": "social",
"utm_content": null,
"utm_term": null
},
"customQueryParams": []
}
],
"guests": [],
"hosts": [
{
"firstName": "Marco",
"lastName": "Rossi",
"email": "marco.rossi@horizondigital.de",
"slug": "marco-rossi",
"url": "https://zeeg.me/marco-rossi",
"avatarUrl": null
}
],
"createdAt": "2026-04-10T08:30:00.000000Z",
"updatedAt": "2026-04-15T10:05:00.000000Z",
"currentTime": "2026-04-15T10:05:00+00:00"
}
}Authorizations
Path Parameters
UUID of a specific scheduled event (zg-XXX format)
"zg-O69bac566950c6"
Body
The email of the new host for the event. When not provided, the system will automatically select a new host if available.
"marco.rossi@horizondigital.de"
A flag to check the availability of the host.
A flag indicating whether the event should be rescheduled if the current settings are not supported.
Response
OK
A scheduled event resource. This is the single canonical shape returned by all scheduled-event endpoints and embedded in the AI agent call webhook payload.
Hide child attributes
Hide child attributes
Public API URI of the scheduled event resource.
Zeeg event identifier (zg-XXX format)
"zg-O69bac566950c6"
Title of the scheduled event.
Event type kind (e.g. ONE_ON_ONE, GROUP, ROUND_ROBIN).
ISO 8601 UTC start time of the booked event.
ISO 8601 UTC end time of the booked event.
Event duration in minutes.
Booking status (e.g. confirmed, cancelled).
Public API URI of the event type this booking was made against.
Maximum number of active invitees the event allows.
Current number of active (non-cancelled) invitees.
Invitees booked on the scheduled event.
Hide child attributes
Hide child attributes
Full name of the invitee.
Email address of the invitee.
IANA time zone of the invitee.
ISO 8601 UTC timestamp when the invitee booked.
Zeeg attendee identifier (zg-XXX format)
"zg-O69bac566950c6"
Salutation for the invitee, if collected.
Array of additional emails invited
Cancellation details. All fields are null when the invitee is not cancelled.
Hide child attributes
Hide child attributes
ISO 8601 UTC timestamp when the invitee was cancelled.
Identifier of who cancelled the booking.
Type of canceller (e.g. host, invitee).
Reason given for the cancellation.
Payment details for the booking, or null when no payment applies.
Hide child attributes
Hide child attributes
Payment provider, e.g. stripe or paypal.
pending until the transaction completes.
pending, success UTM tracking parameters captured at booking time.
Custom query parameters captured at booking time.
Reference code for bookings made via the AI agent; null otherwise.
ISO 8601 UTC timestamp when the booking was created.
Array of additional emails invited
Hosts assigned to the scheduled event.
Hide child attributes
Hide child attributes
Host's first name.
Host's email address.
Host's public profile slug.
Host's public profile URL.
Host's last name. Empty string when not set.
URL of the host's avatar image, if set.
ISO 8601 UTC timestamp when the booking was last updated.
Current server time
curl --request PUT \
--url https://api.zeeg.me/v2/scheduled-events/{uuid}/handover \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"newHostEmail": "marco.rossi@horizondigital.de",
"requireHostAvailability": false,
"fallbackToReschedule": true
}
'import requests
url = "https://api.zeeg.me/v2/scheduled-events/{uuid}/handover"
payload = {
"newHostEmail": "marco.rossi@horizondigital.de",
"requireHostAvailability": False,
"fallbackToReschedule": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
newHostEmail: 'marco.rossi@horizondigital.de',
requireHostAvailability: false,
fallbackToReschedule: true
})
};
fetch('https://api.zeeg.me/v2/scheduled-events/{uuid}/handover', 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/scheduled-events/{uuid}/handover",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'newHostEmail' => 'marco.rossi@horizondigital.de',
'requireHostAvailability' => false,
'fallbackToReschedule' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.zeeg.me/v2/scheduled-events/{uuid}/handover"
payload := strings.NewReader("{\n \"newHostEmail\": \"marco.rossi@horizondigital.de\",\n \"requireHostAvailability\": false,\n \"fallbackToReschedule\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.zeeg.me/v2/scheduled-events/{uuid}/handover")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"newHostEmail\": \"marco.rossi@horizondigital.de\",\n \"requireHostAvailability\": false,\n \"fallbackToReschedule\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zeeg.me/v2/scheduled-events/{uuid}/handover")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"newHostEmail\": \"marco.rossi@horizondigital.de\",\n \"requireHostAvailability\": false,\n \"fallbackToReschedule\": true\n}"
response = http.request(request)
puts response.read_body{
"resource": {
"uri": "https://api.zeeg.me/v2/scheduled-events/zg-O69bac566950c6",
"uuid": "zg-O69bac566950c6",
"title": "30-Minute Discovery Call",
"type": "ROUND_ROBIN",
"startTime": "2026-04-15T09:00:00.000000Z",
"endTime": "2026-04-15T09:30:00.000000Z",
"duration": 30,
"status": "active",
"eventTypeUri": "https://api.zeeg.me/v2/event-types/80f46bf5-eb01-4c07-960e-a9a3e18aae5e",
"location": null,
"maxActiveInvitees": 1,
"activeInviteesCount": 1,
"invitees": [
{
"uuid": "zg-O69bad4047abf0",
"salutation": "Ms.",
"fullName": "Sophie Laurent",
"email": "sophie.laurent@northwind.io",
"guests": [],
"timeZone": "Europe/Paris",
"cancellation": {
"cancelledAt": null,
"cancelledBy": null,
"cancellerType": null,
"cancellationReason": null
},
"payment": null,
"scheduledAt": "2026-04-10T08:30:00.000000Z",
"utm": {
"utm_campaign": "spring_launch",
"utm_source": "linkedin",
"utm_medium": "social",
"utm_content": null,
"utm_term": null
},
"customQueryParams": []
}
],
"guests": [],
"hosts": [
{
"firstName": "Marco",
"lastName": "Rossi",
"email": "marco.rossi@horizondigital.de",
"slug": "marco-rossi",
"url": "https://zeeg.me/marco-rossi",
"avatarUrl": null
}
],
"createdAt": "2026-04-10T08:30:00.000000Z",
"updatedAt": "2026-04-15T10:05:00.000000Z",
"currentTime": "2026-04-15T10:05:00+00:00"
}
}