Request to reschedule a booking
curl --request POST \
--url https://api.cal.com/v2/bookings/{bookingUid}/request-reschedule \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--header 'cal-api-version: <cal-api-version>' \
--data '
{
"rescheduleReason": "I need to reschedule due to a conflict"
}
'import requests
url = "https://api.cal.com/v2/bookings/{bookingUid}/request-reschedule"
payload = { "rescheduleReason": "I need to reschedule due to a conflict" }
headers = {
"cal-api-version": "<cal-api-version>",
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'cal-api-version': '<cal-api-version>',
Authorization: '<authorization>',
'Content-Type': 'application/json'
},
body: JSON.stringify({rescheduleReason: 'I need to reschedule due to a conflict'})
};
fetch('https://api.cal.com/v2/bookings/{bookingUid}/request-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.cal.com/v2/bookings/{bookingUid}/request-reschedule",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'rescheduleReason' => 'I need to reschedule due to a conflict'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json",
"cal-api-version: <cal-api-version>"
],
]);
$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.cal.com/v2/bookings/{bookingUid}/request-reschedule"
payload := strings.NewReader("{\n \"rescheduleReason\": \"I need to reschedule due to a conflict\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("cal-api-version", "<cal-api-version>")
req.Header.Add("Authorization", "<authorization>")
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.post("https://api.cal.com/v2/bookings/{bookingUid}/request-reschedule")
.header("cal-api-version", "<cal-api-version>")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"rescheduleReason\": \"I need to reschedule due to a conflict\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cal.com/v2/bookings/{bookingUid}/request-reschedule")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["cal-api-version"] = '<cal-api-version>'
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"rescheduleReason\": \"I need to reschedule due to a conflict\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success"
}Bookings
Request to reschedule a booking
Request to reschedule a booking. The booking will be cancelled and the attendee will receive an email with a link to reschedule.
Please make sure to pass in the cal-api-version header value as mentioned in the Headers section. Not passing the correct value will default to an older version of this endpoint.
If accessed using an OAuth access token, the BOOKING_WRITE scope is required.
POST
/
v2
/
bookings
/
{bookingUid}
/
request-reschedule
Request to reschedule a booking
curl --request POST \
--url https://api.cal.com/v2/bookings/{bookingUid}/request-reschedule \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--header 'cal-api-version: <cal-api-version>' \
--data '
{
"rescheduleReason": "I need to reschedule due to a conflict"
}
'import requests
url = "https://api.cal.com/v2/bookings/{bookingUid}/request-reschedule"
payload = { "rescheduleReason": "I need to reschedule due to a conflict" }
headers = {
"cal-api-version": "<cal-api-version>",
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'cal-api-version': '<cal-api-version>',
Authorization: '<authorization>',
'Content-Type': 'application/json'
},
body: JSON.stringify({rescheduleReason: 'I need to reschedule due to a conflict'})
};
fetch('https://api.cal.com/v2/bookings/{bookingUid}/request-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.cal.com/v2/bookings/{bookingUid}/request-reschedule",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'rescheduleReason' => 'I need to reschedule due to a conflict'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json",
"cal-api-version: <cal-api-version>"
],
]);
$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.cal.com/v2/bookings/{bookingUid}/request-reschedule"
payload := strings.NewReader("{\n \"rescheduleReason\": \"I need to reschedule due to a conflict\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("cal-api-version", "<cal-api-version>")
req.Header.Add("Authorization", "<authorization>")
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.post("https://api.cal.com/v2/bookings/{bookingUid}/request-reschedule")
.header("cal-api-version", "<cal-api-version>")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"rescheduleReason\": \"I need to reschedule due to a conflict\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cal.com/v2/bookings/{bookingUid}/request-reschedule")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["cal-api-version"] = '<cal-api-version>'
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"rescheduleReason\": \"I need to reschedule due to a conflict\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success"
}Headers
Must be set to 2026-02-25.
value must be Bearer <token> where <token> is api key prefixed with cal_, managed user access token, or OAuth access token
Path Parameters
Body
application/json
Reason for requesting to reschedule the booking
Example:
"I need to reschedule due to a conflict"
Response
200 - application/json
Available options:
success, error Example:
"success"
Was this page helpful?
⌘I