curl --request PUT \
--url https://api.novacal.io/v1/event-types/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"availability_id": 7,
"duration": 720,
"max_group_size": 6,
"hidden_from_profile": true,
"color": "<string>",
"redirect_enabled": true,
"redirect_url": "<string>",
"time_slot_interval": 62,
"buffer_time_before_event": 60,
"buffer_time_after_event": 60,
"min_scheduling_notice": 21600,
"booking_frequency_limits": [
{
"limit": 21600
}
]
}
'import requests
url = "https://api.novacal.io/v1/event-types/{id}"
payload = {
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"availability_id": 7,
"duration": 720,
"max_group_size": 6,
"hidden_from_profile": True,
"color": "<string>",
"redirect_enabled": True,
"redirect_url": "<string>",
"time_slot_interval": 62,
"buffer_time_before_event": 60,
"buffer_time_after_event": 60,
"min_scheduling_notice": 21600,
"booking_frequency_limits": [{ "limit": 21600 }]
}
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({
name: '<string>',
slug: '<string>',
description: '<string>',
availability_id: 7,
duration: 720,
max_group_size: 6,
hidden_from_profile: true,
color: '<string>',
redirect_enabled: true,
redirect_url: '<string>',
time_slot_interval: 62,
buffer_time_before_event: 60,
buffer_time_after_event: 60,
min_scheduling_notice: 21600,
booking_frequency_limits: [{limit: 21600}]
})
};
fetch('https://api.novacal.io/v1/event-types/{id}', 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.novacal.io/v1/event-types/{id}",
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([
'name' => '<string>',
'slug' => '<string>',
'description' => '<string>',
'availability_id' => 7,
'duration' => 720,
'max_group_size' => 6,
'hidden_from_profile' => true,
'color' => '<string>',
'redirect_enabled' => true,
'redirect_url' => '<string>',
'time_slot_interval' => 62,
'buffer_time_before_event' => 60,
'buffer_time_after_event' => 60,
'min_scheduling_notice' => 21600,
'booking_frequency_limits' => [
[
'limit' => 21600
]
]
]),
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.novacal.io/v1/event-types/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"description\": \"<string>\",\n \"availability_id\": 7,\n \"duration\": 720,\n \"max_group_size\": 6,\n \"hidden_from_profile\": true,\n \"color\": \"<string>\",\n \"redirect_enabled\": true,\n \"redirect_url\": \"<string>\",\n \"time_slot_interval\": 62,\n \"buffer_time_before_event\": 60,\n \"buffer_time_after_event\": 60,\n \"min_scheduling_notice\": 21600,\n \"booking_frequency_limits\": [\n {\n \"limit\": 21600\n }\n ]\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.novacal.io/v1/event-types/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"description\": \"<string>\",\n \"availability_id\": 7,\n \"duration\": 720,\n \"max_group_size\": 6,\n \"hidden_from_profile\": true,\n \"color\": \"<string>\",\n \"redirect_enabled\": true,\n \"redirect_url\": \"<string>\",\n \"time_slot_interval\": 62,\n \"buffer_time_before_event\": 60,\n \"buffer_time_after_event\": 60,\n \"min_scheduling_notice\": 21600,\n \"booking_frequency_limits\": [\n {\n \"limit\": 21600\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.novacal.io/v1/event-types/{id}")
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 \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"description\": \"<string>\",\n \"availability_id\": 7,\n \"duration\": 720,\n \"max_group_size\": 6,\n \"hidden_from_profile\": true,\n \"color\": \"<string>\",\n \"redirect_enabled\": true,\n \"redirect_url\": \"<string>\",\n \"time_slot_interval\": 62,\n \"buffer_time_before_event\": 60,\n \"buffer_time_after_event\": 60,\n \"min_scheduling_notice\": 21600,\n \"booking_frequency_limits\": [\n {\n \"limit\": 21600\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": 123,
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"type": "one_on_one",
"scope": "personal",
"is_active": true,
"duration": 720,
"max_group_size": 6,
"hidden_from_profile": true,
"color": "<string>",
"redirect_enabled": true,
"redirect_url": "<string>",
"time_slot_interval": 62,
"buffer_time_before_event": 60,
"buffer_time_after_event": 60,
"min_scheduling_notice": 21600,
"min_scheduling_notice_type": "minutes",
"allow_rescheduling": true,
"allow_cancellation": true,
"availability_id": 123,
"booking_frequency_limits": [
{
"period": "day",
"limit": 21600
}
],
"locations": [
{
"id": 123,
"type": "offline",
"details": "<string>"
}
],
"form_fields": [
{
"identifier": "<string>",
"label": "<string>",
"type": "<string>",
"placeholder": "<string>",
"is_required": true,
"options": [
"<string>"
]
}
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}Update Event Type
Update an existing Novacal event type and change scheduling rules, limits, colors, visibility, redirects, and related configuration.
curl --request PUT \
--url https://api.novacal.io/v1/event-types/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"availability_id": 7,
"duration": 720,
"max_group_size": 6,
"hidden_from_profile": true,
"color": "<string>",
"redirect_enabled": true,
"redirect_url": "<string>",
"time_slot_interval": 62,
"buffer_time_before_event": 60,
"buffer_time_after_event": 60,
"min_scheduling_notice": 21600,
"booking_frequency_limits": [
{
"limit": 21600
}
]
}
'import requests
url = "https://api.novacal.io/v1/event-types/{id}"
payload = {
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"availability_id": 7,
"duration": 720,
"max_group_size": 6,
"hidden_from_profile": True,
"color": "<string>",
"redirect_enabled": True,
"redirect_url": "<string>",
"time_slot_interval": 62,
"buffer_time_before_event": 60,
"buffer_time_after_event": 60,
"min_scheduling_notice": 21600,
"booking_frequency_limits": [{ "limit": 21600 }]
}
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({
name: '<string>',
slug: '<string>',
description: '<string>',
availability_id: 7,
duration: 720,
max_group_size: 6,
hidden_from_profile: true,
color: '<string>',
redirect_enabled: true,
redirect_url: '<string>',
time_slot_interval: 62,
buffer_time_before_event: 60,
buffer_time_after_event: 60,
min_scheduling_notice: 21600,
booking_frequency_limits: [{limit: 21600}]
})
};
fetch('https://api.novacal.io/v1/event-types/{id}', 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.novacal.io/v1/event-types/{id}",
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([
'name' => '<string>',
'slug' => '<string>',
'description' => '<string>',
'availability_id' => 7,
'duration' => 720,
'max_group_size' => 6,
'hidden_from_profile' => true,
'color' => '<string>',
'redirect_enabled' => true,
'redirect_url' => '<string>',
'time_slot_interval' => 62,
'buffer_time_before_event' => 60,
'buffer_time_after_event' => 60,
'min_scheduling_notice' => 21600,
'booking_frequency_limits' => [
[
'limit' => 21600
]
]
]),
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.novacal.io/v1/event-types/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"description\": \"<string>\",\n \"availability_id\": 7,\n \"duration\": 720,\n \"max_group_size\": 6,\n \"hidden_from_profile\": true,\n \"color\": \"<string>\",\n \"redirect_enabled\": true,\n \"redirect_url\": \"<string>\",\n \"time_slot_interval\": 62,\n \"buffer_time_before_event\": 60,\n \"buffer_time_after_event\": 60,\n \"min_scheduling_notice\": 21600,\n \"booking_frequency_limits\": [\n {\n \"limit\": 21600\n }\n ]\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.novacal.io/v1/event-types/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"description\": \"<string>\",\n \"availability_id\": 7,\n \"duration\": 720,\n \"max_group_size\": 6,\n \"hidden_from_profile\": true,\n \"color\": \"<string>\",\n \"redirect_enabled\": true,\n \"redirect_url\": \"<string>\",\n \"time_slot_interval\": 62,\n \"buffer_time_before_event\": 60,\n \"buffer_time_after_event\": 60,\n \"min_scheduling_notice\": 21600,\n \"booking_frequency_limits\": [\n {\n \"limit\": 21600\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.novacal.io/v1/event-types/{id}")
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 \"name\": \"<string>\",\n \"slug\": \"<string>\",\n \"description\": \"<string>\",\n \"availability_id\": 7,\n \"duration\": 720,\n \"max_group_size\": 6,\n \"hidden_from_profile\": true,\n \"color\": \"<string>\",\n \"redirect_enabled\": true,\n \"redirect_url\": \"<string>\",\n \"time_slot_interval\": 62,\n \"buffer_time_before_event\": 60,\n \"buffer_time_after_event\": 60,\n \"min_scheduling_notice\": 21600,\n \"booking_frequency_limits\": [\n {\n \"limit\": 21600\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": 123,
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"type": "one_on_one",
"scope": "personal",
"is_active": true,
"duration": 720,
"max_group_size": 6,
"hidden_from_profile": true,
"color": "<string>",
"redirect_enabled": true,
"redirect_url": "<string>",
"time_slot_interval": 62,
"buffer_time_before_event": 60,
"buffer_time_after_event": 60,
"min_scheduling_notice": 21600,
"min_scheduling_notice_type": "minutes",
"allow_rescheduling": true,
"allow_cancellation": true,
"availability_id": 123,
"booking_frequency_limits": [
{
"period": "day",
"limit": 21600
}
],
"locations": [
{
"id": 123,
"type": "offline",
"details": "<string>"
}
],
"form_fields": [
{
"identifier": "<string>",
"label": "<string>",
"type": "<string>",
"placeholder": "<string>",
"is_required": true,
"options": [
"<string>"
]
}
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}When to use this endpoint
Use this endpoint to update an existing event type without recreating it from scratch.Typical changes
- Adjust duration, buffers, and scheduling limits
- Update colors, visibility, or redirect behavior
- Change configuration tied to the booking experience
- Point the event type at a different availability schedule
Changing the schedule
Sendavailability_id to move the event type onto another schedule. Use Get Availabilities to find the ID. The schedule must belong to your own account, otherwise the request returns 422.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
ID of event type to update
Body
Event type fields to update.
Fields to update. Send only the fields you want to change. Fields you omit keep their current value.
The name of the event type
55The URL-friendly identifier for the event type
80^[a-z0-9]+(?:-[a-z0-9]+)*$Description of the event type
5000ID of the availability schedule this event type follows. Must be a schedule on your own account.
7
The type of event
one_on_one, group, round_robin, collective Duration in minutes
1 <= x <= 1440Maximum group size (required when you send type=group, min: 2, max: 10)
2 <= x <= 10Whether the event type is hidden from profile
Color code in hex format (e.g., #FF5733)
^#([A-Fa-f0-9]{6})$Whether bookings should redirect after confirmation
Redirect URL used when redirect is enabled
Slot interval in minutes
5 <= x <= 120Buffer before the event in minutes
0 <= x <= 120Buffer after the event in minutes
0 <= x <= 120Minimum scheduling notice amount
0 <= x <= 43200Unit for minimum scheduling notice (required when you send min_scheduling_notice)
minutes, hours, days Optional booking limits by period
3Show child attributes
Show child attributes
Response
Event type updated