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": [
"members: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"
}
]
}Update settings
Writes the name and the fields you send, for every assignment of the settings. inherit stops setting a field:
the next assignment down decides it.
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": [
"members: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"
}
]
}Authorizations
Your API key, sent bare. See Authentication.
Path Parameters
Beginning with set_, or happyscribe_defaults for the bottom rung, which is read-only.
Body
Response
The updated settings.
Values for the fields a partner sets, applied where its assignments say.
Beginning with set_.
Always settings.
A name to find the settings by, at most 200 characters; null for none.
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 workspaces: 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.