curl --request PATCH \
--url https://api.cal.com/v2/teams/{teamId} \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "CalTeam",
"slug": "caltel",
"logoUrl": "https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png",
"calVideoLogo": "<string>",
"appLogo": "<string>",
"appIconLogo": "<string>",
"bio": "<string>",
"hideBranding": true,
"isPrivate": true,
"hideBookATeamMember": true,
"metadata": {
"key": "value"
},
"theme": "<string>",
"brandColor": "<string>",
"darkBrandColor": "<string>",
"bannerUrl": "https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png",
"timeFormat": 123,
"timeZone": "America/New_York",
"weekStart": "Monday",
"bookingLimits": "<string>",
"includeManagedEventsInLimits": true
}
'import requests
url = "https://api.cal.com/v2/teams/{teamId}"
payload = {
"name": "CalTeam",
"slug": "caltel",
"logoUrl": "https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png",
"calVideoLogo": "<string>",
"appLogo": "<string>",
"appIconLogo": "<string>",
"bio": "<string>",
"hideBranding": True,
"isPrivate": True,
"hideBookATeamMember": True,
"metadata": { "key": "value" },
"theme": "<string>",
"brandColor": "<string>",
"darkBrandColor": "<string>",
"bannerUrl": "https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png",
"timeFormat": 123,
"timeZone": "America/New_York",
"weekStart": "Monday",
"bookingLimits": "<string>",
"includeManagedEventsInLimits": True
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'CalTeam',
slug: 'caltel',
logoUrl: 'https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png',
calVideoLogo: '<string>',
appLogo: '<string>',
appIconLogo: '<string>',
bio: '<string>',
hideBranding: true,
isPrivate: true,
hideBookATeamMember: true,
metadata: {key: 'value'},
theme: '<string>',
brandColor: '<string>',
darkBrandColor: '<string>',
bannerUrl: 'https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png',
timeFormat: 123,
timeZone: 'America/New_York',
weekStart: 'Monday',
bookingLimits: '<string>',
includeManagedEventsInLimits: true
})
};
fetch('https://api.cal.com/v2/teams/{teamId}', 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/teams/{teamId}",
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([
'name' => 'CalTeam',
'slug' => 'caltel',
'logoUrl' => 'https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png',
'calVideoLogo' => '<string>',
'appLogo' => '<string>',
'appIconLogo' => '<string>',
'bio' => '<string>',
'hideBranding' => true,
'isPrivate' => true,
'hideBookATeamMember' => true,
'metadata' => [
'key' => 'value'
],
'theme' => '<string>',
'brandColor' => '<string>',
'darkBrandColor' => '<string>',
'bannerUrl' => 'https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png',
'timeFormat' => 123,
'timeZone' => 'America/New_York',
'weekStart' => 'Monday',
'bookingLimits' => '<string>',
'includeManagedEventsInLimits' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"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.cal.com/v2/teams/{teamId}"
payload := strings.NewReader("{\n \"name\": \"CalTeam\",\n \"slug\": \"caltel\",\n \"logoUrl\": \"https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png\",\n \"calVideoLogo\": \"<string>\",\n \"appLogo\": \"<string>\",\n \"appIconLogo\": \"<string>\",\n \"bio\": \"<string>\",\n \"hideBranding\": true,\n \"isPrivate\": true,\n \"hideBookATeamMember\": true,\n \"metadata\": {\n \"key\": \"value\"\n },\n \"theme\": \"<string>\",\n \"brandColor\": \"<string>\",\n \"darkBrandColor\": \"<string>\",\n \"bannerUrl\": \"https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png\",\n \"timeFormat\": 123,\n \"timeZone\": \"America/New_York\",\n \"weekStart\": \"Monday\",\n \"bookingLimits\": \"<string>\",\n \"includeManagedEventsInLimits\": true\n}")
req, _ := http.NewRequest("PATCH", url, payload)
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/teams/{teamId}")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"CalTeam\",\n \"slug\": \"caltel\",\n \"logoUrl\": \"https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png\",\n \"calVideoLogo\": \"<string>\",\n \"appLogo\": \"<string>\",\n \"appIconLogo\": \"<string>\",\n \"bio\": \"<string>\",\n \"hideBranding\": true,\n \"isPrivate\": true,\n \"hideBookATeamMember\": true,\n \"metadata\": {\n \"key\": \"value\"\n },\n \"theme\": \"<string>\",\n \"brandColor\": \"<string>\",\n \"darkBrandColor\": \"<string>\",\n \"bannerUrl\": \"https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png\",\n \"timeFormat\": 123,\n \"timeZone\": \"America/New_York\",\n \"weekStart\": \"Monday\",\n \"bookingLimits\": \"<string>\",\n \"includeManagedEventsInLimits\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cal.com/v2/teams/{teamId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"CalTeam\",\n \"slug\": \"caltel\",\n \"logoUrl\": \"https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png\",\n \"calVideoLogo\": \"<string>\",\n \"appLogo\": \"<string>\",\n \"appIconLogo\": \"<string>\",\n \"bio\": \"<string>\",\n \"hideBranding\": true,\n \"isPrivate\": true,\n \"hideBookATeamMember\": true,\n \"metadata\": {\n \"key\": \"value\"\n },\n \"theme\": \"<string>\",\n \"brandColor\": \"<string>\",\n \"darkBrandColor\": \"<string>\",\n \"bannerUrl\": \"https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png\",\n \"timeFormat\": 123,\n \"timeZone\": \"America/New_York\",\n \"weekStart\": \"Monday\",\n \"bookingLimits\": \"<string>\",\n \"includeManagedEventsInLimits\": true\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"id": 123,
"name": "<string>",
"isOrganization": true,
"parentId": 123,
"slug": "<string>",
"logoUrl": "<string>",
"calVideoLogo": "<string>",
"appLogo": "<string>",
"appIconLogo": "<string>",
"bio": "<string>",
"hideBranding": true,
"isPrivate": true,
"hideBookATeamMember": true,
"metadata": {
"key": "value"
},
"theme": "<string>",
"brandColor": "<string>",
"darkBrandColor": "<string>",
"bannerUrl": "<string>",
"timeFormat": 123,
"timeZone": "Europe/London",
"weekStart": "Sunday"
}
}Update a team
If accessed using an OAuth access token, the TEAM_PROFILE_WRITE scope is required.
curl --request PATCH \
--url https://api.cal.com/v2/teams/{teamId} \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "CalTeam",
"slug": "caltel",
"logoUrl": "https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png",
"calVideoLogo": "<string>",
"appLogo": "<string>",
"appIconLogo": "<string>",
"bio": "<string>",
"hideBranding": true,
"isPrivate": true,
"hideBookATeamMember": true,
"metadata": {
"key": "value"
},
"theme": "<string>",
"brandColor": "<string>",
"darkBrandColor": "<string>",
"bannerUrl": "https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png",
"timeFormat": 123,
"timeZone": "America/New_York",
"weekStart": "Monday",
"bookingLimits": "<string>",
"includeManagedEventsInLimits": true
}
'import requests
url = "https://api.cal.com/v2/teams/{teamId}"
payload = {
"name": "CalTeam",
"slug": "caltel",
"logoUrl": "https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png",
"calVideoLogo": "<string>",
"appLogo": "<string>",
"appIconLogo": "<string>",
"bio": "<string>",
"hideBranding": True,
"isPrivate": True,
"hideBookATeamMember": True,
"metadata": { "key": "value" },
"theme": "<string>",
"brandColor": "<string>",
"darkBrandColor": "<string>",
"bannerUrl": "https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png",
"timeFormat": 123,
"timeZone": "America/New_York",
"weekStart": "Monday",
"bookingLimits": "<string>",
"includeManagedEventsInLimits": True
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'CalTeam',
slug: 'caltel',
logoUrl: 'https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png',
calVideoLogo: '<string>',
appLogo: '<string>',
appIconLogo: '<string>',
bio: '<string>',
hideBranding: true,
isPrivate: true,
hideBookATeamMember: true,
metadata: {key: 'value'},
theme: '<string>',
brandColor: '<string>',
darkBrandColor: '<string>',
bannerUrl: 'https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png',
timeFormat: 123,
timeZone: 'America/New_York',
weekStart: 'Monday',
bookingLimits: '<string>',
includeManagedEventsInLimits: true
})
};
fetch('https://api.cal.com/v2/teams/{teamId}', 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/teams/{teamId}",
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([
'name' => 'CalTeam',
'slug' => 'caltel',
'logoUrl' => 'https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png',
'calVideoLogo' => '<string>',
'appLogo' => '<string>',
'appIconLogo' => '<string>',
'bio' => '<string>',
'hideBranding' => true,
'isPrivate' => true,
'hideBookATeamMember' => true,
'metadata' => [
'key' => 'value'
],
'theme' => '<string>',
'brandColor' => '<string>',
'darkBrandColor' => '<string>',
'bannerUrl' => 'https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png',
'timeFormat' => 123,
'timeZone' => 'America/New_York',
'weekStart' => 'Monday',
'bookingLimits' => '<string>',
'includeManagedEventsInLimits' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"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.cal.com/v2/teams/{teamId}"
payload := strings.NewReader("{\n \"name\": \"CalTeam\",\n \"slug\": \"caltel\",\n \"logoUrl\": \"https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png\",\n \"calVideoLogo\": \"<string>\",\n \"appLogo\": \"<string>\",\n \"appIconLogo\": \"<string>\",\n \"bio\": \"<string>\",\n \"hideBranding\": true,\n \"isPrivate\": true,\n \"hideBookATeamMember\": true,\n \"metadata\": {\n \"key\": \"value\"\n },\n \"theme\": \"<string>\",\n \"brandColor\": \"<string>\",\n \"darkBrandColor\": \"<string>\",\n \"bannerUrl\": \"https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png\",\n \"timeFormat\": 123,\n \"timeZone\": \"America/New_York\",\n \"weekStart\": \"Monday\",\n \"bookingLimits\": \"<string>\",\n \"includeManagedEventsInLimits\": true\n}")
req, _ := http.NewRequest("PATCH", url, payload)
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/teams/{teamId}")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"CalTeam\",\n \"slug\": \"caltel\",\n \"logoUrl\": \"https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png\",\n \"calVideoLogo\": \"<string>\",\n \"appLogo\": \"<string>\",\n \"appIconLogo\": \"<string>\",\n \"bio\": \"<string>\",\n \"hideBranding\": true,\n \"isPrivate\": true,\n \"hideBookATeamMember\": true,\n \"metadata\": {\n \"key\": \"value\"\n },\n \"theme\": \"<string>\",\n \"brandColor\": \"<string>\",\n \"darkBrandColor\": \"<string>\",\n \"bannerUrl\": \"https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png\",\n \"timeFormat\": 123,\n \"timeZone\": \"America/New_York\",\n \"weekStart\": \"Monday\",\n \"bookingLimits\": \"<string>\",\n \"includeManagedEventsInLimits\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cal.com/v2/teams/{teamId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"CalTeam\",\n \"slug\": \"caltel\",\n \"logoUrl\": \"https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png\",\n \"calVideoLogo\": \"<string>\",\n \"appLogo\": \"<string>\",\n \"appIconLogo\": \"<string>\",\n \"bio\": \"<string>\",\n \"hideBranding\": true,\n \"isPrivate\": true,\n \"hideBookATeamMember\": true,\n \"metadata\": {\n \"key\": \"value\"\n },\n \"theme\": \"<string>\",\n \"brandColor\": \"<string>\",\n \"darkBrandColor\": \"<string>\",\n \"bannerUrl\": \"https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png\",\n \"timeFormat\": 123,\n \"timeZone\": \"America/New_York\",\n \"weekStart\": \"Monday\",\n \"bookingLimits\": \"<string>\",\n \"includeManagedEventsInLimits\": true\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"id": 123,
"name": "<string>",
"isOrganization": true,
"parentId": 123,
"slug": "<string>",
"logoUrl": "<string>",
"calVideoLogo": "<string>",
"appLogo": "<string>",
"appIconLogo": "<string>",
"bio": "<string>",
"hideBranding": true,
"isPrivate": true,
"hideBookATeamMember": true,
"metadata": {
"key": "value"
},
"theme": "<string>",
"brandColor": "<string>",
"darkBrandColor": "<string>",
"bannerUrl": "<string>",
"timeFormat": 123,
"timeZone": "Europe/London",
"weekStart": "Sunday"
}
}Headers
value must be Bearer <token> where <token> is api key prefixed with cal_
Path Parameters
Body
Name of the team. Maximum 155 characters. Cannot contain links or URLs.
1 - 155"CalTeam"
Team slug
"caltel"
URL of the teams logo image
"https://i.cal.com/api/avatar/b0b58752-68ad-4c0d-8024-4fa382a77752.png"
You can store any additional data you want here. Metadata must have at most 50 keys, each key up to 40 characters. Values can be strings (up to 500 characters), numbers, or booleans.
{ "key": "value" }
URL of the teams banner image which is shown on booker
"https://i.cal.com/api/avatar/949be534-7a88-4185-967c-c020b0c0bef3.png"
Timezone is used to create teams's default schedule from Monday to Friday from 9AM to 5PM. It will default to Europe/London if not passed.
"America/New_York"
"Monday"
Was this page helpful?