curl --request PUT \
--url https://pria.praxislxp.com/api/user/institution \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"conversationModel": "<string>",
"conversationFallbackModel": "<string>",
"maxCompletionTokens": 123,
"reasoningEffort": "<string>",
"extendedContext": true,
"about": "<string>",
"personaMode": true,
"twinWorkflowManagement": true,
"personalisationAsked": true,
"disableToolUseInstructions": true,
"kmeanScore": 123,
"ragLimitChunks": 123,
"toolsDisabled": true,
"roleEfforts": {},
"tierModels": {},
"tierEfforts": {},
"enableModeration": true,
"alwaysCiteSources": true,
"toolResultsMaxChars": 100500,
"toolCallBudget": 25,
"rtEnabled": true,
"rtAdminOnly": true,
"rtTextInputEnabled": true,
"rtModel": "<string>",
"rtVoice": "<string>",
"gemini_rt_voice": "<string>",
"xai_rt_voice": "<string>",
"openai_live_voice": "<string>",
"rtTranscriptionLanguage": "<string>",
"disableClipboardForUser": true,
"locationEnabled": true,
"guestUI": true,
"creditCaps": {
"enabled": false,
"perUserInstitution": 123,
"perUser24h": 123
}
}
'import requests
url = "https://pria.praxislxp.com/api/user/institution"
payload = {
"conversationModel": "<string>",
"conversationFallbackModel": "<string>",
"maxCompletionTokens": 123,
"reasoningEffort": "<string>",
"extendedContext": True,
"about": "<string>",
"personaMode": True,
"twinWorkflowManagement": True,
"personalisationAsked": True,
"disableToolUseInstructions": True,
"kmeanScore": 123,
"ragLimitChunks": 123,
"toolsDisabled": True,
"roleEfforts": {},
"tierModels": {},
"tierEfforts": {},
"enableModeration": True,
"alwaysCiteSources": True,
"toolResultsMaxChars": 100500,
"toolCallBudget": 25,
"rtEnabled": True,
"rtAdminOnly": True,
"rtTextInputEnabled": True,
"rtModel": "<string>",
"rtVoice": "<string>",
"gemini_rt_voice": "<string>",
"xai_rt_voice": "<string>",
"openai_live_voice": "<string>",
"rtTranscriptionLanguage": "<string>",
"disableClipboardForUser": True,
"locationEnabled": True,
"guestUI": True,
"creditCaps": {
"enabled": False,
"perUserInstitution": 123,
"perUser24h": 123
}
}
headers = {
"x-access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
conversationModel: '<string>',
conversationFallbackModel: '<string>',
maxCompletionTokens: 123,
reasoningEffort: '<string>',
extendedContext: true,
about: '<string>',
personaMode: true,
twinWorkflowManagement: true,
personalisationAsked: true,
disableToolUseInstructions: true,
kmeanScore: 123,
ragLimitChunks: 123,
toolsDisabled: true,
roleEfforts: {},
tierModels: {},
tierEfforts: {},
enableModeration: true,
alwaysCiteSources: true,
toolResultsMaxChars: 100500,
toolCallBudget: 25,
rtEnabled: true,
rtAdminOnly: true,
rtTextInputEnabled: true,
rtModel: '<string>',
rtVoice: '<string>',
gemini_rt_voice: '<string>',
xai_rt_voice: '<string>',
openai_live_voice: '<string>',
rtTranscriptionLanguage: '<string>',
disableClipboardForUser: true,
locationEnabled: true,
guestUI: true,
creditCaps: {enabled: false, perUserInstitution: 123, perUser24h: 123}
})
};
fetch('https://pria.praxislxp.com/api/user/institution', 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://pria.praxislxp.com/api/user/institution",
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([
'conversationModel' => '<string>',
'conversationFallbackModel' => '<string>',
'maxCompletionTokens' => 123,
'reasoningEffort' => '<string>',
'extendedContext' => true,
'about' => '<string>',
'personaMode' => true,
'twinWorkflowManagement' => true,
'personalisationAsked' => true,
'disableToolUseInstructions' => true,
'kmeanScore' => 123,
'ragLimitChunks' => 123,
'toolsDisabled' => true,
'roleEfforts' => [
],
'tierModels' => [
],
'tierEfforts' => [
],
'enableModeration' => true,
'alwaysCiteSources' => true,
'toolResultsMaxChars' => 100500,
'toolCallBudget' => 25,
'rtEnabled' => true,
'rtAdminOnly' => true,
'rtTextInputEnabled' => true,
'rtModel' => '<string>',
'rtVoice' => '<string>',
'gemini_rt_voice' => '<string>',
'xai_rt_voice' => '<string>',
'openai_live_voice' => '<string>',
'rtTranscriptionLanguage' => '<string>',
'disableClipboardForUser' => true,
'locationEnabled' => true,
'guestUI' => true,
'creditCaps' => [
'enabled' => false,
'perUserInstitution' => 123,
'perUser24h' => 123
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <api-key>"
],
]);
$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://pria.praxislxp.com/api/user/institution"
payload := strings.NewReader("{\n \"conversationModel\": \"<string>\",\n \"conversationFallbackModel\": \"<string>\",\n \"maxCompletionTokens\": 123,\n \"reasoningEffort\": \"<string>\",\n \"extendedContext\": true,\n \"about\": \"<string>\",\n \"personaMode\": true,\n \"twinWorkflowManagement\": true,\n \"personalisationAsked\": true,\n \"disableToolUseInstructions\": true,\n \"kmeanScore\": 123,\n \"ragLimitChunks\": 123,\n \"toolsDisabled\": true,\n \"roleEfforts\": {},\n \"tierModels\": {},\n \"tierEfforts\": {},\n \"enableModeration\": true,\n \"alwaysCiteSources\": true,\n \"toolResultsMaxChars\": 100500,\n \"toolCallBudget\": 25,\n \"rtEnabled\": true,\n \"rtAdminOnly\": true,\n \"rtTextInputEnabled\": true,\n \"rtModel\": \"<string>\",\n \"rtVoice\": \"<string>\",\n \"gemini_rt_voice\": \"<string>\",\n \"xai_rt_voice\": \"<string>\",\n \"openai_live_voice\": \"<string>\",\n \"rtTranscriptionLanguage\": \"<string>\",\n \"disableClipboardForUser\": true,\n \"locationEnabled\": true,\n \"guestUI\": true,\n \"creditCaps\": {\n \"enabled\": false,\n \"perUserInstitution\": 123,\n \"perUser24h\": 123\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-access-token", "<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.put("https://pria.praxislxp.com/api/user/institution")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"conversationModel\": \"<string>\",\n \"conversationFallbackModel\": \"<string>\",\n \"maxCompletionTokens\": 123,\n \"reasoningEffort\": \"<string>\",\n \"extendedContext\": true,\n \"about\": \"<string>\",\n \"personaMode\": true,\n \"twinWorkflowManagement\": true,\n \"personalisationAsked\": true,\n \"disableToolUseInstructions\": true,\n \"kmeanScore\": 123,\n \"ragLimitChunks\": 123,\n \"toolsDisabled\": true,\n \"roleEfforts\": {},\n \"tierModels\": {},\n \"tierEfforts\": {},\n \"enableModeration\": true,\n \"alwaysCiteSources\": true,\n \"toolResultsMaxChars\": 100500,\n \"toolCallBudget\": 25,\n \"rtEnabled\": true,\n \"rtAdminOnly\": true,\n \"rtTextInputEnabled\": true,\n \"rtModel\": \"<string>\",\n \"rtVoice\": \"<string>\",\n \"gemini_rt_voice\": \"<string>\",\n \"xai_rt_voice\": \"<string>\",\n \"openai_live_voice\": \"<string>\",\n \"rtTranscriptionLanguage\": \"<string>\",\n \"disableClipboardForUser\": true,\n \"locationEnabled\": true,\n \"guestUI\": true,\n \"creditCaps\": {\n \"enabled\": false,\n \"perUserInstitution\": 123,\n \"perUser24h\": 123\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/user/institution")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"conversationModel\": \"<string>\",\n \"conversationFallbackModel\": \"<string>\",\n \"maxCompletionTokens\": 123,\n \"reasoningEffort\": \"<string>\",\n \"extendedContext\": true,\n \"about\": \"<string>\",\n \"personaMode\": true,\n \"twinWorkflowManagement\": true,\n \"personalisationAsked\": true,\n \"disableToolUseInstructions\": true,\n \"kmeanScore\": 123,\n \"ragLimitChunks\": 123,\n \"toolsDisabled\": true,\n \"roleEfforts\": {},\n \"tierModels\": {},\n \"tierEfforts\": {},\n \"enableModeration\": true,\n \"alwaysCiteSources\": true,\n \"toolResultsMaxChars\": 100500,\n \"toolCallBudget\": 25,\n \"rtEnabled\": true,\n \"rtAdminOnly\": true,\n \"rtTextInputEnabled\": true,\n \"rtModel\": \"<string>\",\n \"rtVoice\": \"<string>\",\n \"gemini_rt_voice\": \"<string>\",\n \"xai_rt_voice\": \"<string>\",\n \"openai_live_voice\": \"<string>\",\n \"rtTranscriptionLanguage\": \"<string>\",\n \"disableClipboardForUser\": true,\n \"locationEnabled\": true,\n \"guestUI\": true,\n \"creditCaps\": {\n \"enabled\": false,\n \"perUserInstitution\": 123,\n \"perUser24h\": 123\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Institution updated!"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "Authentication Required"
}{
"success": false,
"message": "Institution not found!"
}Update institution settings
Updates the current user’s institution configuration. No admin privilege check is enforced — any authenticated user with an active institution can call this endpoint, though some properties (such as creditCaps) require the institutions.edit entitlement and are silently dropped otherwise. Admins/managers may set creditCaps (per-user quotas) on their institution when the account has not enabled caps; when the account owns caps creditCaps is ignored (read-only inherited). The request body is validated against the institution authorized properties list (conversationModel, conversationFallbackModel, maxCompletionTokens, reasoningEffort, extendedContext, about, personaMode, personalisationAsked, disableToolUseInstructions, kmeanScore, ragLimitChunks, toolsDisabled, compactHistory, displayThinkingDetails, displayAgentDetails, displayRagSearchDetails, displayMemoryDetails, displayThinkingExecution, displayToolExecution, enableModeration, alwaysCiteSources, toolResultsMaxChars, toolCallBudget, rtEnabled, rtAdminOnly, rtTextInputEnabled, rtModel, rtVoice, gemini_rt_voice, gemini_rt_start_sensitivity, xai_rt_voice, openai_live_voice, rtVADEagerness, rtNoiseReduction, rtTranscriptionLanguage, disableFileUploadForUser, disableAudioNotesForUser, disableClipboardForUser, locationEnabled, guestUI, theme, picture, ainame, assistantsDisabled, engramAdminOnly, memoryMode). Any properties not in this list are rejected with a 400. The long-term memory controls (engramAdminOnly, memoryMode, displayMemoryDetails) additionally require the institutions.edit entitlement; the master switch engramEnabled and engramShareEnabled are accepted on this endpoint only from a platform super-admin.
curl --request PUT \
--url https://pria.praxislxp.com/api/user/institution \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"conversationModel": "<string>",
"conversationFallbackModel": "<string>",
"maxCompletionTokens": 123,
"reasoningEffort": "<string>",
"extendedContext": true,
"about": "<string>",
"personaMode": true,
"twinWorkflowManagement": true,
"personalisationAsked": true,
"disableToolUseInstructions": true,
"kmeanScore": 123,
"ragLimitChunks": 123,
"toolsDisabled": true,
"roleEfforts": {},
"tierModels": {},
"tierEfforts": {},
"enableModeration": true,
"alwaysCiteSources": true,
"toolResultsMaxChars": 100500,
"toolCallBudget": 25,
"rtEnabled": true,
"rtAdminOnly": true,
"rtTextInputEnabled": true,
"rtModel": "<string>",
"rtVoice": "<string>",
"gemini_rt_voice": "<string>",
"xai_rt_voice": "<string>",
"openai_live_voice": "<string>",
"rtTranscriptionLanguage": "<string>",
"disableClipboardForUser": true,
"locationEnabled": true,
"guestUI": true,
"creditCaps": {
"enabled": false,
"perUserInstitution": 123,
"perUser24h": 123
}
}
'import requests
url = "https://pria.praxislxp.com/api/user/institution"
payload = {
"conversationModel": "<string>",
"conversationFallbackModel": "<string>",
"maxCompletionTokens": 123,
"reasoningEffort": "<string>",
"extendedContext": True,
"about": "<string>",
"personaMode": True,
"twinWorkflowManagement": True,
"personalisationAsked": True,
"disableToolUseInstructions": True,
"kmeanScore": 123,
"ragLimitChunks": 123,
"toolsDisabled": True,
"roleEfforts": {},
"tierModels": {},
"tierEfforts": {},
"enableModeration": True,
"alwaysCiteSources": True,
"toolResultsMaxChars": 100500,
"toolCallBudget": 25,
"rtEnabled": True,
"rtAdminOnly": True,
"rtTextInputEnabled": True,
"rtModel": "<string>",
"rtVoice": "<string>",
"gemini_rt_voice": "<string>",
"xai_rt_voice": "<string>",
"openai_live_voice": "<string>",
"rtTranscriptionLanguage": "<string>",
"disableClipboardForUser": True,
"locationEnabled": True,
"guestUI": True,
"creditCaps": {
"enabled": False,
"perUserInstitution": 123,
"perUser24h": 123
}
}
headers = {
"x-access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
conversationModel: '<string>',
conversationFallbackModel: '<string>',
maxCompletionTokens: 123,
reasoningEffort: '<string>',
extendedContext: true,
about: '<string>',
personaMode: true,
twinWorkflowManagement: true,
personalisationAsked: true,
disableToolUseInstructions: true,
kmeanScore: 123,
ragLimitChunks: 123,
toolsDisabled: true,
roleEfforts: {},
tierModels: {},
tierEfforts: {},
enableModeration: true,
alwaysCiteSources: true,
toolResultsMaxChars: 100500,
toolCallBudget: 25,
rtEnabled: true,
rtAdminOnly: true,
rtTextInputEnabled: true,
rtModel: '<string>',
rtVoice: '<string>',
gemini_rt_voice: '<string>',
xai_rt_voice: '<string>',
openai_live_voice: '<string>',
rtTranscriptionLanguage: '<string>',
disableClipboardForUser: true,
locationEnabled: true,
guestUI: true,
creditCaps: {enabled: false, perUserInstitution: 123, perUser24h: 123}
})
};
fetch('https://pria.praxislxp.com/api/user/institution', 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://pria.praxislxp.com/api/user/institution",
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([
'conversationModel' => '<string>',
'conversationFallbackModel' => '<string>',
'maxCompletionTokens' => 123,
'reasoningEffort' => '<string>',
'extendedContext' => true,
'about' => '<string>',
'personaMode' => true,
'twinWorkflowManagement' => true,
'personalisationAsked' => true,
'disableToolUseInstructions' => true,
'kmeanScore' => 123,
'ragLimitChunks' => 123,
'toolsDisabled' => true,
'roleEfforts' => [
],
'tierModels' => [
],
'tierEfforts' => [
],
'enableModeration' => true,
'alwaysCiteSources' => true,
'toolResultsMaxChars' => 100500,
'toolCallBudget' => 25,
'rtEnabled' => true,
'rtAdminOnly' => true,
'rtTextInputEnabled' => true,
'rtModel' => '<string>',
'rtVoice' => '<string>',
'gemini_rt_voice' => '<string>',
'xai_rt_voice' => '<string>',
'openai_live_voice' => '<string>',
'rtTranscriptionLanguage' => '<string>',
'disableClipboardForUser' => true,
'locationEnabled' => true,
'guestUI' => true,
'creditCaps' => [
'enabled' => false,
'perUserInstitution' => 123,
'perUser24h' => 123
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-access-token: <api-key>"
],
]);
$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://pria.praxislxp.com/api/user/institution"
payload := strings.NewReader("{\n \"conversationModel\": \"<string>\",\n \"conversationFallbackModel\": \"<string>\",\n \"maxCompletionTokens\": 123,\n \"reasoningEffort\": \"<string>\",\n \"extendedContext\": true,\n \"about\": \"<string>\",\n \"personaMode\": true,\n \"twinWorkflowManagement\": true,\n \"personalisationAsked\": true,\n \"disableToolUseInstructions\": true,\n \"kmeanScore\": 123,\n \"ragLimitChunks\": 123,\n \"toolsDisabled\": true,\n \"roleEfforts\": {},\n \"tierModels\": {},\n \"tierEfforts\": {},\n \"enableModeration\": true,\n \"alwaysCiteSources\": true,\n \"toolResultsMaxChars\": 100500,\n \"toolCallBudget\": 25,\n \"rtEnabled\": true,\n \"rtAdminOnly\": true,\n \"rtTextInputEnabled\": true,\n \"rtModel\": \"<string>\",\n \"rtVoice\": \"<string>\",\n \"gemini_rt_voice\": \"<string>\",\n \"xai_rt_voice\": \"<string>\",\n \"openai_live_voice\": \"<string>\",\n \"rtTranscriptionLanguage\": \"<string>\",\n \"disableClipboardForUser\": true,\n \"locationEnabled\": true,\n \"guestUI\": true,\n \"creditCaps\": {\n \"enabled\": false,\n \"perUserInstitution\": 123,\n \"perUser24h\": 123\n }\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-access-token", "<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.put("https://pria.praxislxp.com/api/user/institution")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"conversationModel\": \"<string>\",\n \"conversationFallbackModel\": \"<string>\",\n \"maxCompletionTokens\": 123,\n \"reasoningEffort\": \"<string>\",\n \"extendedContext\": true,\n \"about\": \"<string>\",\n \"personaMode\": true,\n \"twinWorkflowManagement\": true,\n \"personalisationAsked\": true,\n \"disableToolUseInstructions\": true,\n \"kmeanScore\": 123,\n \"ragLimitChunks\": 123,\n \"toolsDisabled\": true,\n \"roleEfforts\": {},\n \"tierModels\": {},\n \"tierEfforts\": {},\n \"enableModeration\": true,\n \"alwaysCiteSources\": true,\n \"toolResultsMaxChars\": 100500,\n \"toolCallBudget\": 25,\n \"rtEnabled\": true,\n \"rtAdminOnly\": true,\n \"rtTextInputEnabled\": true,\n \"rtModel\": \"<string>\",\n \"rtVoice\": \"<string>\",\n \"gemini_rt_voice\": \"<string>\",\n \"xai_rt_voice\": \"<string>\",\n \"openai_live_voice\": \"<string>\",\n \"rtTranscriptionLanguage\": \"<string>\",\n \"disableClipboardForUser\": true,\n \"locationEnabled\": true,\n \"guestUI\": true,\n \"creditCaps\": {\n \"enabled\": false,\n \"perUserInstitution\": 123,\n \"perUser24h\": 123\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/user/institution")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"conversationModel\": \"<string>\",\n \"conversationFallbackModel\": \"<string>\",\n \"maxCompletionTokens\": 123,\n \"reasoningEffort\": \"<string>\",\n \"extendedContext\": true,\n \"about\": \"<string>\",\n \"personaMode\": true,\n \"twinWorkflowManagement\": true,\n \"personalisationAsked\": true,\n \"disableToolUseInstructions\": true,\n \"kmeanScore\": 123,\n \"ragLimitChunks\": 123,\n \"toolsDisabled\": true,\n \"roleEfforts\": {},\n \"tierModels\": {},\n \"tierEfforts\": {},\n \"enableModeration\": true,\n \"alwaysCiteSources\": true,\n \"toolResultsMaxChars\": 100500,\n \"toolCallBudget\": 25,\n \"rtEnabled\": true,\n \"rtAdminOnly\": true,\n \"rtTextInputEnabled\": true,\n \"rtModel\": \"<string>\",\n \"rtVoice\": \"<string>\",\n \"gemini_rt_voice\": \"<string>\",\n \"xai_rt_voice\": \"<string>\",\n \"openai_live_voice\": \"<string>\",\n \"rtTranscriptionLanguage\": \"<string>\",\n \"disableClipboardForUser\": true,\n \"locationEnabled\": true,\n \"guestUI\": true,\n \"creditCaps\": {\n \"enabled\": false,\n \"perUserInstitution\": 123,\n \"perUser24h\": 123\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Institution updated!"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "Authentication Required"
}{
"success": false,
"message": "Institution not found!"
}Authorizations
JWT token passed in x-access-token header
Body
Any combination of authorized institution properties
Default conversation model for the institution
Fallback conversation model — answers when the conversation model fails before any reply started. Requires the institutions.edit entitlement. '' inherits the platform default (System Models → Conversation Fallback, unset until an operator picks one); otherwise a catalog conversation model or a custom:<aimodelId> reference to one of this twin's active custom conversation models. Any other value is rejected with 400.
Maximum completion tokens for AI responses
Reasoning effort level (none, low, medium, high, max)
Whether extended context is enabled
About text for the institution
Persona twin toggle (admin-gated — requires the institutions.edit entitlement, silently stripped otherwise). When true the platform prompt becomes persona-aware — capability and onboarding questions are answered in the twin's own voice, without tool lists or platform guides.
Twin workflows switch (admin-gated — requires the institutions.edit entitlement, silently stripped otherwise; not super-only). Default true: the twin's admins can ask it in web chat to create, change, run and schedule read-only workflows (also needs the TWIN_WORKFLOW_TOOLS server flag). false removes the chat tools; existing workflows keep running.
Whether personalisation has been asked
Whether to disable tool use instructions
K-means score threshold for RAG
Maximum number of RAG chunks to retrieve
Whether tools are disabled for AI conversations
Per-subagent role reasoning preferences, authorized like roleModels (institutions.edit). Keys are the role slots: conductorModel, plannerModel, designerModel, coderModel, testerModel, writerModel, researcherModel, agenticLoopModel, preflightModel, specWriterModel, planReviewerModel, judgeModel, vision. Whole-map update; preserve sibling slots. Empty clears a slot. Provider capability limits still apply; Astra None maps to Low. xhigh is sent verbatim to Anthropic adaptive-thinking models and as max elsewhere. An unset coder effort runs Claude Opus 5.5 at xhigh.
Show child attributes
Show child attributes
Per-mode model pins (Map mode → role slot → model id), authorized like roleModels (institutions.edit). Modes: basic, advanced, expert, mythical (auto has no pool). Slots: the roleModels slots plus the coder level slots coderUpgradeModel (harder tasks) and coderVisualModel (games and simulations), which are accepted ONLY here, never in roleModels. A mode pin outranks the twin-wide roleModels pin and the platform per-mode pick; '' or null clears one pin, a null mode clears that mode. A coder level pin is used when the run's coder dispatch picks that level; with a twin-wide or mode coder pin and no level pins, the automatic level choice stays off. Values must be model-id slugs the catalog allows for that role (400 otherwise).
Show child attributes
Show child attributes
Per-mode reasoning effort (Map mode → role slot → effort), same vocabulary, authorization and whole-map semantics as roleEfforts. Modes: basic, advanced, expert, mythical. Slots: the roleEfforts slots except conductorModel (the conductor has no per-mode effort), plus coderUpgradeModel and coderVisualModel (the effort for a coder dispatch that ran that level). Order on a run: this mode cell, then roleEfforts, then the platform effort, else the model's own default. Empty clears a cell.
Show child attributes
Show child attributes
Route incoming prompts through the moderation model before they reach the main LLM
Add an explicit citation directive to the system prompt so the model footnotes RAG / web sources in its answers
Character cap for individual tool / scrape / vault results before they are trimmed and saved to the IP Vault. Default 60000.
1000 <= x <= 200000Maximum tool calls a single answer may make before the Digital Twin must write its answer. Unset (null) uses the platform default (20); a Digital Twin can only lower the platform cap.
1 <= x <= 50Enable Convo / Speech-to-Speech (realtime voice) mode for this instance
Restrict Convo mode to admin users only
Allow text input alongside speech while in Convo mode
System model id for Convo / Speech-to-Speech (provider auto-derived from the model id)
OpenAI Realtime voice (alloy, ash, ballad, coral, echo, sage, shimmer, verse, cedar, marin)
Gemini Live voice (Puck, Charon, Kore, etc.)
xAI realtime voice (eve, ara, rex, sal, leo)
OpenAI GPT-Live voice (Quartz, Ripple, Vesper, …). Empty = each member picks their own.
OpenAI realtime voice-activity-detection eagerness
low, medium, high Gemini Live interruption sensitivity — how readily the twin stops talking when a member speaks over it. low (default) ignores background noise but is harder to interrupt; high is Gemini's own default and easy to talk over.
low, high OpenAI realtime noise reduction profile
, near_field, far_field ISO 639-1 language hint for OpenAI realtime transcription (blank = auto-detect)
Hide clipboard controls from non-admin users in this institution
Allow this institution's users to opt-in to sharing browser geolocation with the assistant for location-aware answers. Defaults to true.
Strip the UI down to a chat-only minimum surface for non-admin users
Forced UI theme for all users in this institution. '' = user directed, 'dark' = force dark mode, 'light' = force light mode
, dark, light Per-user quota configuration. Settable by admins/managers with the institutions.edit entitlement when the account has not enabled caps; ignored (read-only inherited) when the account owns caps.
Show child attributes
Show child attributes
Was this page helpful?