Update booking fields
curl --request PATCH \
--url https://api.cal.com/v2/event-types/{eventTypeId}/booking-fields \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--header 'cal-api-version: <cal-api-version>' \
--data '
{
"bookingFields": [
{
"slug": "name",
"variant": "fullName",
"label": "<string>",
"placeholder": "<string>",
"disableOnPrefill": true
}
]
}
'import requests
url = "https://api.cal.com/v2/event-types/{eventTypeId}/booking-fields"
payload = { "bookingFields": [
{
"slug": "name",
"variant": "fullName",
"label": "<string>",
"placeholder": "<string>",
"disableOnPrefill": True
}
] }
headers = {
"cal-api-version": "<cal-api-version>",
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'cal-api-version': '<cal-api-version>',
Authorization: '<authorization>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
bookingFields: [
{
slug: 'name',
variant: 'fullName',
label: '<string>',
placeholder: '<string>',
disableOnPrefill: true
}
]
})
};
fetch('https://api.cal.com/v2/event-types/{eventTypeId}/booking-fields', 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/event-types/{eventTypeId}/booking-fields",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'bookingFields' => [
[
'slug' => 'name',
'variant' => 'fullName',
'label' => '<string>',
'placeholder' => '<string>',
'disableOnPrefill' => true
]
]
]),
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/event-types/{eventTypeId}/booking-fields"
payload := strings.NewReader("{\n \"bookingFields\": [\n {\n \"slug\": \"name\",\n \"variant\": \"fullName\",\n \"label\": \"<string>\",\n \"placeholder\": \"<string>\",\n \"disableOnPrefill\": true\n }\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.cal.com/v2/event-types/{eventTypeId}/booking-fields")
.header("cal-api-version", "<cal-api-version>")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"bookingFields\": [\n {\n \"slug\": \"name\",\n \"variant\": \"fullName\",\n \"label\": \"<string>\",\n \"placeholder\": \"<string>\",\n \"disableOnPrefill\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cal.com/v2/event-types/{eventTypeId}/booking-fields")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["cal-api-version"] = '<cal-api-version>'
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"bookingFields\": [\n {\n \"slug\": \"name\",\n \"variant\": \"fullName\",\n \"label\": \"<string>\",\n \"placeholder\": \"<string>\",\n \"disableOnPrefill\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"bookingFields": [
{
"field": "name",
"slug": "name",
"variant": "fullName",
"disableOnPrefill": true,
"label": "<string>",
"placeholder": "<string>"
}
]
}
}Booking Fields
Update booking fields
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.
Updates the booking fields identified by slug. Omitted properties keep their current values. Workflow-added fields are read-only. If accessed using an OAuth access token, the EVENT_TYPE_WRITE scope is required.
PATCH
/
v2
/
event-types
/
{eventTypeId}
/
booking-fields
Update booking fields
curl --request PATCH \
--url https://api.cal.com/v2/event-types/{eventTypeId}/booking-fields \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--header 'cal-api-version: <cal-api-version>' \
--data '
{
"bookingFields": [
{
"slug": "name",
"variant": "fullName",
"label": "<string>",
"placeholder": "<string>",
"disableOnPrefill": true
}
]
}
'import requests
url = "https://api.cal.com/v2/event-types/{eventTypeId}/booking-fields"
payload = { "bookingFields": [
{
"slug": "name",
"variant": "fullName",
"label": "<string>",
"placeholder": "<string>",
"disableOnPrefill": True
}
] }
headers = {
"cal-api-version": "<cal-api-version>",
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'cal-api-version': '<cal-api-version>',
Authorization: '<authorization>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
bookingFields: [
{
slug: 'name',
variant: 'fullName',
label: '<string>',
placeholder: '<string>',
disableOnPrefill: true
}
]
})
};
fetch('https://api.cal.com/v2/event-types/{eventTypeId}/booking-fields', 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/event-types/{eventTypeId}/booking-fields",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'bookingFields' => [
[
'slug' => 'name',
'variant' => 'fullName',
'label' => '<string>',
'placeholder' => '<string>',
'disableOnPrefill' => true
]
]
]),
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/event-types/{eventTypeId}/booking-fields"
payload := strings.NewReader("{\n \"bookingFields\": [\n {\n \"slug\": \"name\",\n \"variant\": \"fullName\",\n \"label\": \"<string>\",\n \"placeholder\": \"<string>\",\n \"disableOnPrefill\": true\n }\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.cal.com/v2/event-types/{eventTypeId}/booking-fields")
.header("cal-api-version", "<cal-api-version>")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"bookingFields\": [\n {\n \"slug\": \"name\",\n \"variant\": \"fullName\",\n \"label\": \"<string>\",\n \"placeholder\": \"<string>\",\n \"disableOnPrefill\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cal.com/v2/event-types/{eventTypeId}/booking-fields")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["cal-api-version"] = '<cal-api-version>'
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"bookingFields\": [\n {\n \"slug\": \"name\",\n \"variant\": \"fullName\",\n \"label\": \"<string>\",\n \"placeholder\": \"<string>\",\n \"disableOnPrefill\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"bookingFields": [
{
"field": "name",
"slug": "name",
"variant": "fullName",
"disableOnPrefill": true,
"label": "<string>",
"placeholder": "<string>"
}
]
}
}Headers
Must be set to 2026-06-12. If not set to this value, the endpoint will default to an older version.
Example:
"2026-06-12"
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
bookingFields
(Default Full Name · object | Default Split Name · object | Default Email · object | Default Location · object | Default Title · object | Default Notes · object | Default Guests · object | Default Reschedule Reason · object | Default Attendee Phone · object | Custom Email · object | Custom Phone · object | Custom Address · object | Custom Short Text · object | Custom Number · object | Custom Long Text · object | Custom Select · object | Custom Multi-Select · object | Custom Multiple Emails · object | Custom Checkbox Group · object | Custom Checkbox · object | Custom Radio Group · object | Custom URL · object)[]
required
Booking fields to update. Identify each field by slug and include at least one property to change. field and a custom field's type cannot be changed. Null values and repeated slugs are not allowed. Workflow-added fields are read-only.
Minimum array length:
1- Default Full Name
- Default Split Name
- Default Email
- Default Location
- Default Title
- Default Notes
- Default Guests
- Default Reschedule Reason
- Default Attendee Phone
- Custom Email
- Custom Phone
- Custom Address
- Custom Short Text
- Custom Number
- Custom Long Text
- Custom Select
- Custom Multi-Select
- Custom Multiple Emails
- Custom Checkbox Group
- Custom Checkbox
- Custom Radio Group
- Custom URL
Show child attributes
Show child attributes
Was this page helpful?