Reschedule a Scheduled Event
Move a booking to a new date and time. The invitee and the host receive a reschedule notice, and the response names the new identifiers.
curl --request PUT \
--url https://api.zeeg.me/v2/scheduled-events/{uuid}/reschedule \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"date": "2026-04-22",
"start": "14:30"
}
'import requests
url = "https://api.zeeg.me/v2/scheduled-events/{uuid}/reschedule"
payload = {
"date": "2026-04-22",
"start": "14:30"
}
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({date: '2026-04-22', start: '14:30'})
};
fetch('https://api.zeeg.me/v2/scheduled-events/{uuid}/reschedule', 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}/reschedule",
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([
'date' => '2026-04-22',
'start' => '14:30'
]),
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}/reschedule"
payload := strings.NewReader("{\n \"date\": \"2026-04-22\",\n \"start\": \"14:30\"\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}/reschedule")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"date\": \"2026-04-22\",\n \"start\": \"14:30\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zeeg.me/v2/scheduled-events/{uuid}/reschedule")
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 \"date\": \"2026-04-22\",\n \"start\": \"14:30\"\n}"
response = http.request(request)
puts response.read_body{
"resource": {
"uri": "https://api.zeeg.me/v2/scheduled-events/zg-O69bf1a2b3c4d5",
"uuid": "zg-O69bf1a2b3c4d5",
"title": "30-Minute Discovery Call",
"type": "ONE_ON_ONE",
"startTime": "2026-04-22T12:30:00.000000Z",
"endTime": "2026-04-22T13:00: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"
},
"maxActiveInvitees": 1,
"activeInviteesCount": 1,
"invitees": [
{
"uuid": "zg-O69bf6d7e8f901",
"salutation": "Ms.",
"fullName": "Sophie Laurent",
"email": "sophie.laurent@northwind.io",
"guests": [
"alex.chen@northwind.io"
],
"timeZone": "Europe/Paris",
"cancellation": {
"cancelledAt": null,
"cancelledBy": null,
"cancellerType": null,
"cancellationReason": null
},
"payment": null,
"questions": [
{
"answer": "Product demo and pricing options",
"answer_type": "STRING",
"question": "What would you like to discuss?"
}
],
"noShow": false,
"noShowAt": null,
"scheduledAt": "2026-04-17T10:00:00.000000Z",
"utm": {
"utm_campaign": "spring_launch",
"utm_source": "linkedin",
"utm_medium": "social",
"utm_content": null,
"utm_term": null
},
"customQueryParams": {},
"cancelUrl": "https://zeeg.me/cancel/zg-O69bf6d7e8f901",
"rescheduleUrl": "https://zeeg.me/reschedule/zg-O69bf6d7e8f901",
"rescheduled": false,
"rescheduling": {
"oldStartAt": "2026-04-15T09:00:00.000000Z",
"newStartAt": "2026-04-22T12:30:00.000000Z",
"rescheduledAt": "2026-04-17T10:00:00.000000Z",
"previousEventUuid": "zg-O69bac566950c6",
"previousInviteeUuid": "zg-O69bad4047abf0",
"reason": "Requested a later slot.",
"rescheduledBy": "user",
"reschedulerFullName": "Lena Meier"
},
"nextRescheduling": null
}
],
"guests": [
"alex.chen@northwind.io"
],
"hosts": [
{
"firstName": "Lena",
"lastName": "Meier",
"email": "lena.meier@horizondigital.de",
"slug": "lena-meier",
"url": "https://zeeg.me/lena-meier",
"avatarUrl": null
}
],
"teamName": "Sales",
"createdAt": "2026-04-17T10:00:00.000000Z",
"updatedAt": "2026-04-17T10:00:00.000000Z",
"currentTime": "2026-04-17T10:00:00+00:00"
}
}Authorizations
Path Parameters
UUID of a specific scheduled event (zg-XXX format)
"zg-O69bac566950c6"
Body
New booking date, in YYYY-MM-DD format.
"2026-04-22"
New start time, in HH:mm 24-hour format (in the given timeZone).
"14:30"
IANA time zone for date/start. Defaults to the existing invitee's time zone when omitted.
"Europe/Paris"
New duration in minutes. The event type ignores an unsupported value and uses its own configured duration instead.
x >= 1Optional reason for the reschedule.
512Response
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.
Whether the invitee has been marked as a no-show. Always present.
ISO 8601 UTC timestamp when the invitee booked.
Zeeg attendee identifier (zg-XXX format)
"zg-O69bac566950c6"
Salutation for the invitee, if collected.
Email addresses of additional guests the invitee added. An empty array when the invitee added none.
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 ISO 8601 UTC timestamp when the invitee was marked as a no-show, or null when they were not.
UTM tracking parameters captured at booking time. Always holds these five keys, in snake_case; a key holds null when the booking did not carry a value for it.
Ad-click identifiers captured at booking time, keyed by provider. Only the keys that were actually captured are present; null when none were captured.
Hide child attributes
Hide child attributes
Google Ads click ID.
Google click ID for iOS app-to-web clicks. Mutually exclusive with gclid per click.
Google click ID for web-to-app clicks. Mutually exclusive with gclid per click.
Meta click ID.
Meta browser ID cookie (_fbp) captured at booking time.
Meta click cookie (_fbc) captured at booking time.
Full URL of the host page the booking widget was embedded on.
Custom query parameters captured at booking time, keyed by the c__-prefixed parameter name. An empty object when the booking captured none.
{ "c__ref": "nl-2026-04" }
Reference code for bookings made via the AI agent; null otherwise.
Public URL the invitee uses to cancel this booking. null once the booking is cancelled.
Public URL the invitee uses to reschedule this booking. null once the booking is cancelled.
True once this booking has been superseded by a reschedule. A rescheduled booking reports status: cancelled for backward compatibility; rescheduled and nextRescheduling are how a caller tells a reschedule apart from an actual cancellation.
Present when this booking is the result of a reschedule. null when this booking was not itself created by rescheduling an earlier one.
Hide child attributes
Hide child attributes
ISO 8601 UTC start time the previous booking held before the reschedule.
ISO 8601 UTC start time the new booking was moved to.
ISO 8601 UTC timestamp when the reschedule was performed.
uuid of the superseded booking (zg-XXX format). Use it directly as the uuid path parameter of GET /scheduled-events/{uuid} to fetch that booking.
"zg-O69bad4047abf0"
uuid of the invitee on the superseded booking. No public endpoint accepts an invitee uuid as a path parameter.
"zg-O69bac566950c6"
Reason given for the reschedule, if any.
Who performed the reschedule (e.g. host, invitee).
Full name of the person who performed the reschedule, when known.
Present when this booking has been superseded by a later reschedule. null when the booking has not been rescheduled.
Hide child attributes
Hide child attributes
ISO 8601 UTC start time the previous booking held before the reschedule.
ISO 8601 UTC start time the new booking was moved to.
ISO 8601 UTC timestamp when the reschedule was performed.
uuid of the superseded booking (zg-XXX format). Use it directly as the uuid path parameter of GET /scheduled-events/{uuid} to fetch that booking.
"zg-O69bad4047abf0"
uuid of the invitee on the superseded booking. No public endpoint accepts an invitee uuid as a path parameter.
"zg-O69bac566950c6"
Reason given for the reschedule, if any.
Who performed the reschedule (e.g. host, invitee).
Full name of the person who performed the reschedule, when known.
Name of the team that owns the scheduling page the booking was made on, or null for a personal scheduling page. The key is always present. This is the same value the invitee.scheduled webhook sends as teamName for the same booking.
"Sales"
ISO 8601 UTC timestamp when the booking was created.
Email addresses of additional guests added across all invitees. An empty array when none were added.
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}/reschedule \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"date": "2026-04-22",
"start": "14:30"
}
'import requests
url = "https://api.zeeg.me/v2/scheduled-events/{uuid}/reschedule"
payload = {
"date": "2026-04-22",
"start": "14:30"
}
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({date: '2026-04-22', start: '14:30'})
};
fetch('https://api.zeeg.me/v2/scheduled-events/{uuid}/reschedule', 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}/reschedule",
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([
'date' => '2026-04-22',
'start' => '14:30'
]),
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}/reschedule"
payload := strings.NewReader("{\n \"date\": \"2026-04-22\",\n \"start\": \"14:30\"\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}/reschedule")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"date\": \"2026-04-22\",\n \"start\": \"14:30\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zeeg.me/v2/scheduled-events/{uuid}/reschedule")
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 \"date\": \"2026-04-22\",\n \"start\": \"14:30\"\n}"
response = http.request(request)
puts response.read_body{
"resource": {
"uri": "https://api.zeeg.me/v2/scheduled-events/zg-O69bf1a2b3c4d5",
"uuid": "zg-O69bf1a2b3c4d5",
"title": "30-Minute Discovery Call",
"type": "ONE_ON_ONE",
"startTime": "2026-04-22T12:30:00.000000Z",
"endTime": "2026-04-22T13:00: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"
},
"maxActiveInvitees": 1,
"activeInviteesCount": 1,
"invitees": [
{
"uuid": "zg-O69bf6d7e8f901",
"salutation": "Ms.",
"fullName": "Sophie Laurent",
"email": "sophie.laurent@northwind.io",
"guests": [
"alex.chen@northwind.io"
],
"timeZone": "Europe/Paris",
"cancellation": {
"cancelledAt": null,
"cancelledBy": null,
"cancellerType": null,
"cancellationReason": null
},
"payment": null,
"questions": [
{
"answer": "Product demo and pricing options",
"answer_type": "STRING",
"question": "What would you like to discuss?"
}
],
"noShow": false,
"noShowAt": null,
"scheduledAt": "2026-04-17T10:00:00.000000Z",
"utm": {
"utm_campaign": "spring_launch",
"utm_source": "linkedin",
"utm_medium": "social",
"utm_content": null,
"utm_term": null
},
"customQueryParams": {},
"cancelUrl": "https://zeeg.me/cancel/zg-O69bf6d7e8f901",
"rescheduleUrl": "https://zeeg.me/reschedule/zg-O69bf6d7e8f901",
"rescheduled": false,
"rescheduling": {
"oldStartAt": "2026-04-15T09:00:00.000000Z",
"newStartAt": "2026-04-22T12:30:00.000000Z",
"rescheduledAt": "2026-04-17T10:00:00.000000Z",
"previousEventUuid": "zg-O69bac566950c6",
"previousInviteeUuid": "zg-O69bad4047abf0",
"reason": "Requested a later slot.",
"rescheduledBy": "user",
"reschedulerFullName": "Lena Meier"
},
"nextRescheduling": null
}
],
"guests": [
"alex.chen@northwind.io"
],
"hosts": [
{
"firstName": "Lena",
"lastName": "Meier",
"email": "lena.meier@horizondigital.de",
"slug": "lena-meier",
"url": "https://zeeg.me/lena-meier",
"avatarUrl": null
}
],
"teamName": "Sales",
"createdAt": "2026-04-17T10:00:00.000000Z",
"updatedAt": "2026-04-17T10:00:00.000000Z",
"currentTime": "2026-04-17T10:00:00+00:00"
}
}