curl --request PATCH \
--url https://api.meetingkit.com/api/v1/settings/{id} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"recording": {
"methods": {
"bot": {
"mode": "audio_only"
}
}
}
}
'import requests
url = "https://api.meetingkit.com/api/v1/settings/{id}"
payload = { "recording": { "methods": { "bot": { "mode": "audio_only" } } } }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({recording: {methods: {bot: {mode: 'audio_only'}}}})
};
fetch('https://api.meetingkit.com/api/v1/settings/{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.meetingkit.com/api/v1/settings/{id}",
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([
'recording' => [
'methods' => [
'bot' => [
'mode' => 'audio_only'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.meetingkit.com/api/v1/settings/{id}"
payload := strings.NewReader("{\n \"recording\": {\n \"methods\": {\n \"bot\": {\n \"mode\": \"audio_only\"\n }\n }\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.meetingkit.com/api/v1/settings/{id}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"recording\": {\n \"methods\": {\n \"bot\": {\n \"mode\": \"audio_only\"\n }\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetingkit.com/api/v1/settings/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"recording\": {\n \"methods\": {\n \"bot\": {\n \"mode\": \"audio_only\"\n }\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "set_01k6sa1es0000000000000000a",
"object": "settings",
"name": null,
"recording": {
"enabled": false,
"methods": {
"bot": {
"start": "on_join",
"mode": "audio_only",
"silence_detection": {
"alert": true
}
}
}
},
"transcription": {
"language": "ca"
},
"summary": {
"template": "discovery_call",
"language": "same_as_transcript"
},
"branding": {
"brand_kit_id": "inherit"
},
"assignments": [
{
"id": "asg_01k6a1ana00000000000000000",
"scope": [
"member:mem_01k69x9s8x7c2dvq3m5n6p4ab"
]
}
],
"created_at": "2026-09-30T09:12:41Z",
"updated_at": "2026-09-30T09:12:41Z"
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}Update settings
Writes only the fields you send, for every assignment of the settings. recording.enabled: inherit on a
meeting’s settings clears that meeting’s choice; inherit on any other field is not supported yet.
curl --request PATCH \
--url https://api.meetingkit.com/api/v1/settings/{id} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"recording": {
"methods": {
"bot": {
"mode": "audio_only"
}
}
}
}
'import requests
url = "https://api.meetingkit.com/api/v1/settings/{id}"
payload = { "recording": { "methods": { "bot": { "mode": "audio_only" } } } }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({recording: {methods: {bot: {mode: 'audio_only'}}}})
};
fetch('https://api.meetingkit.com/api/v1/settings/{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.meetingkit.com/api/v1/settings/{id}",
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([
'recording' => [
'methods' => [
'bot' => [
'mode' => 'audio_only'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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.meetingkit.com/api/v1/settings/{id}"
payload := strings.NewReader("{\n \"recording\": {\n \"methods\": {\n \"bot\": {\n \"mode\": \"audio_only\"\n }\n }\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "<api-key>")
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.meetingkit.com/api/v1/settings/{id}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"recording\": {\n \"methods\": {\n \"bot\": {\n \"mode\": \"audio_only\"\n }\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetingkit.com/api/v1/settings/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"recording\": {\n \"methods\": {\n \"bot\": {\n \"mode\": \"audio_only\"\n }\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "set_01k6sa1es0000000000000000a",
"object": "settings",
"name": null,
"recording": {
"enabled": false,
"methods": {
"bot": {
"start": "on_join",
"mode": "audio_only",
"silence_detection": {
"alert": true
}
}
}
},
"transcription": {
"language": "ca"
},
"summary": {
"template": "discovery_call",
"language": "same_as_transcript"
},
"branding": {
"brand_kit_id": "inherit"
},
"assignments": [
{
"id": "asg_01k6a1ana00000000000000000",
"scope": [
"member:mem_01k69x9s8x7c2dvq3m5n6p4ab"
]
}
],
"created_at": "2026-09-30T09:12:41Z",
"updated_at": "2026-09-30T09:12:41Z"
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}{
"errors": [
{
"code": "invalid",
"field": "recording.methods.bot.mode",
"message": "must be one of: audio_and_video, audio_only, inherit"
}
]
}Authorizations
Your API key, sent bare. See Authentication.
Path Parameters
Beginning with set_.
Body
Response
The updated settings.
Values for the fields a partner sets, applied where its assignments say.
Beginning with set_.
Always settings.
Always null for now; named settings come later.
Whether meetings get recorded, and how.
Show child attributes
Show child attributes
How the recording is transcribed.
Show child attributes
Show child attributes
How the summary is written.
Show child attributes
Show child attributes
How the notetaker is branded. Only with a workspace: condition.
Show child attributes
Show child attributes
Where these settings apply. Read-only; change them with the settings assignments endpoints.
Show child attributes
Show child attributes
When the settings were created, in ISO 8601.
When the settings last changed, in ISO 8601.