curl --request POST \
--url https://api.meetingkit.com/api/v1/settings \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"transcription": {
"language": "ca"
},
"assignments": [
{
"scope": [
"member:mem_01k69x9s8x7c2dvq3m5n6p4ab"
]
}
]
}
'import requests
url = "https://api.meetingkit.com/api/v1/settings"
payload = {
"transcription": { "language": "ca" },
"assignments": [{ "scope": ["member:mem_01k69x9s8x7c2dvq3m5n6p4ab"] }]
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
transcription: {language: 'ca'},
assignments: [{scope: ['member:mem_01k69x9s8x7c2dvq3m5n6p4ab']}]
})
};
fetch('https://api.meetingkit.com/api/v1/settings', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'transcription' => [
'language' => 'ca'
],
'assignments' => [
[
'scope' => [
'member:mem_01k69x9s8x7c2dvq3m5n6p4ab'
]
]
]
]),
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"
payload := strings.NewReader("{\n \"transcription\": {\n \"language\": \"ca\"\n },\n \"assignments\": [\n {\n \"scope\": [\n \"member:mem_01k69x9s8x7c2dvq3m5n6p4ab\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.meetingkit.com/api/v1/settings")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"transcription\": {\n \"language\": \"ca\"\n },\n \"assignments\": [\n {\n \"scope\": [\n \"member:mem_01k69x9s8x7c2dvq3m5n6p4ab\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetingkit.com/api/v1/settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"transcription\": {\n \"language\": \"ca\"\n },\n \"assignments\": [\n {\n \"scope\": [\n \"member:mem_01k69x9s8x7c2dvq3m5n6p4ab\"\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"
}
]
}Create settings
Sets values and assigns them in one call. For now every settings object has exactly one owner: a member who has
no settings yet (created from the workspace’s, with what you send), a meeting, or a new set of meeting categories
for a workspace or member (recording.enabled: true only). A workspace, and a member who already has settings,
answer 409 scope_taken naming the assignment whose settings to change with
Update settings.
A change to recording or the bot re-evaluates upcoming meetings and sends meeting.updated for each one that
changes. A meeting: assignment reaches that occurrence only.
curl --request POST \
--url https://api.meetingkit.com/api/v1/settings \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"transcription": {
"language": "ca"
},
"assignments": [
{
"scope": [
"member:mem_01k69x9s8x7c2dvq3m5n6p4ab"
]
}
]
}
'import requests
url = "https://api.meetingkit.com/api/v1/settings"
payload = {
"transcription": { "language": "ca" },
"assignments": [{ "scope": ["member:mem_01k69x9s8x7c2dvq3m5n6p4ab"] }]
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
transcription: {language: 'ca'},
assignments: [{scope: ['member:mem_01k69x9s8x7c2dvq3m5n6p4ab']}]
})
};
fetch('https://api.meetingkit.com/api/v1/settings', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'transcription' => [
'language' => 'ca'
],
'assignments' => [
[
'scope' => [
'member:mem_01k69x9s8x7c2dvq3m5n6p4ab'
]
]
]
]),
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"
payload := strings.NewReader("{\n \"transcription\": {\n \"language\": \"ca\"\n },\n \"assignments\": [\n {\n \"scope\": [\n \"member:mem_01k69x9s8x7c2dvq3m5n6p4ab\"\n ]\n }\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.meetingkit.com/api/v1/settings")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"transcription\": {\n \"language\": \"ca\"\n },\n \"assignments\": [\n {\n \"scope\": [\n \"member:mem_01k69x9s8x7c2dvq3m5n6p4ab\"\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetingkit.com/api/v1/settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"transcription\": {\n \"language\": \"ca\"\n },\n \"assignments\": [\n {\n \"scope\": [\n \"member:mem_01k69x9s8x7c2dvq3m5n6p4ab\"\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"
}
]
}Authorizations
Your API key, sent bare. See Authentication.
Body
Response
The settings, with their assignments.
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.