curl --request PUT \
--url https://pria.praxislxp.com/api/user/me \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"email": "jsmith@example.com",
"fname": "<string>",
"lname": "<string>",
"picture": "<string>",
"remember_history_count": 123,
"use_location": true,
"use_stt": true,
"dark_mode": true,
"pin_ui": true,
"showSideBar": true,
"galleryAsGrid": true,
"toolsEnabled": [
"call_rag",
"get_user_files",
"read_from_file",
"get_browser",
"read_url"
],
"toolGuidanceEnabled": false,
"ragIgnore": true,
"ragKagMode": true,
"ragOnlySearch": true,
"browser_voice": "<string>",
"browser_voices": [
"<string>"
],
"mustChangePassword": true,
"passwordChangeSkipOnSSO": true,
"passwordChangeRequired": true,
"updatePasswordOnSSO": true,
"rt_voice": "<string>",
"gemini_rt_voice": "<string>",
"xai_rt_voice": "<string>",
"openai_live_voice": "<string>",
"ragLimitChunks": 8,
"mfaEnabled": true
}
'import requests
url = "https://pria.praxislxp.com/api/user/me"
payload = {
"email": "jsmith@example.com",
"fname": "<string>",
"lname": "<string>",
"picture": "<string>",
"remember_history_count": 123,
"use_location": True,
"use_stt": True,
"dark_mode": True,
"pin_ui": True,
"showSideBar": True,
"galleryAsGrid": True,
"toolsEnabled": ["call_rag", "get_user_files", "read_from_file", "get_browser", "read_url"],
"toolGuidanceEnabled": False,
"ragIgnore": True,
"ragKagMode": True,
"ragOnlySearch": True,
"browser_voice": "<string>",
"browser_voices": ["<string>"],
"mustChangePassword": True,
"passwordChangeSkipOnSSO": True,
"passwordChangeRequired": True,
"updatePasswordOnSSO": True,
"rt_voice": "<string>",
"gemini_rt_voice": "<string>",
"xai_rt_voice": "<string>",
"openai_live_voice": "<string>",
"ragLimitChunks": 8,
"mfaEnabled": True
}
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({
email: 'jsmith@example.com',
fname: '<string>',
lname: '<string>',
picture: '<string>',
remember_history_count: 123,
use_location: true,
use_stt: true,
dark_mode: true,
pin_ui: true,
showSideBar: true,
galleryAsGrid: true,
toolsEnabled: ['call_rag', 'get_user_files', 'read_from_file', 'get_browser', 'read_url'],
toolGuidanceEnabled: false,
ragIgnore: true,
ragKagMode: true,
ragOnlySearch: true,
browser_voice: '<string>',
browser_voices: ['<string>'],
mustChangePassword: true,
passwordChangeSkipOnSSO: true,
passwordChangeRequired: true,
updatePasswordOnSSO: true,
rt_voice: '<string>',
gemini_rt_voice: '<string>',
xai_rt_voice: '<string>',
openai_live_voice: '<string>',
ragLimitChunks: 8,
mfaEnabled: true
})
};
fetch('https://pria.praxislxp.com/api/user/me', 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/me",
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([
'email' => 'jsmith@example.com',
'fname' => '<string>',
'lname' => '<string>',
'picture' => '<string>',
'remember_history_count' => 123,
'use_location' => true,
'use_stt' => true,
'dark_mode' => true,
'pin_ui' => true,
'showSideBar' => true,
'galleryAsGrid' => true,
'toolsEnabled' => [
'call_rag',
'get_user_files',
'read_from_file',
'get_browser',
'read_url'
],
'toolGuidanceEnabled' => false,
'ragIgnore' => true,
'ragKagMode' => true,
'ragOnlySearch' => true,
'browser_voice' => '<string>',
'browser_voices' => [
'<string>'
],
'mustChangePassword' => true,
'passwordChangeSkipOnSSO' => true,
'passwordChangeRequired' => true,
'updatePasswordOnSSO' => true,
'rt_voice' => '<string>',
'gemini_rt_voice' => '<string>',
'xai_rt_voice' => '<string>',
'openai_live_voice' => '<string>',
'ragLimitChunks' => 8,
'mfaEnabled' => true
]),
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/me"
payload := strings.NewReader("{\n \"email\": \"jsmith@example.com\",\n \"fname\": \"<string>\",\n \"lname\": \"<string>\",\n \"picture\": \"<string>\",\n \"remember_history_count\": 123,\n \"use_location\": true,\n \"use_stt\": true,\n \"dark_mode\": true,\n \"pin_ui\": true,\n \"showSideBar\": true,\n \"galleryAsGrid\": true,\n \"toolsEnabled\": [\n \"call_rag\",\n \"get_user_files\",\n \"read_from_file\",\n \"get_browser\",\n \"read_url\"\n ],\n \"toolGuidanceEnabled\": false,\n \"ragIgnore\": true,\n \"ragKagMode\": true,\n \"ragOnlySearch\": true,\n \"browser_voice\": \"<string>\",\n \"browser_voices\": [\n \"<string>\"\n ],\n \"mustChangePassword\": true,\n \"passwordChangeSkipOnSSO\": true,\n \"passwordChangeRequired\": true,\n \"updatePasswordOnSSO\": true,\n \"rt_voice\": \"<string>\",\n \"gemini_rt_voice\": \"<string>\",\n \"xai_rt_voice\": \"<string>\",\n \"openai_live_voice\": \"<string>\",\n \"ragLimitChunks\": 8,\n \"mfaEnabled\": true\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/me")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jsmith@example.com\",\n \"fname\": \"<string>\",\n \"lname\": \"<string>\",\n \"picture\": \"<string>\",\n \"remember_history_count\": 123,\n \"use_location\": true,\n \"use_stt\": true,\n \"dark_mode\": true,\n \"pin_ui\": true,\n \"showSideBar\": true,\n \"galleryAsGrid\": true,\n \"toolsEnabled\": [\n \"call_rag\",\n \"get_user_files\",\n \"read_from_file\",\n \"get_browser\",\n \"read_url\"\n ],\n \"toolGuidanceEnabled\": false,\n \"ragIgnore\": true,\n \"ragKagMode\": true,\n \"ragOnlySearch\": true,\n \"browser_voice\": \"<string>\",\n \"browser_voices\": [\n \"<string>\"\n ],\n \"mustChangePassword\": true,\n \"passwordChangeSkipOnSSO\": true,\n \"passwordChangeRequired\": true,\n \"updatePasswordOnSSO\": true,\n \"rt_voice\": \"<string>\",\n \"gemini_rt_voice\": \"<string>\",\n \"xai_rt_voice\": \"<string>\",\n \"openai_live_voice\": \"<string>\",\n \"ragLimitChunks\": 8,\n \"mfaEnabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/user/me")
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 \"email\": \"jsmith@example.com\",\n \"fname\": \"<string>\",\n \"lname\": \"<string>\",\n \"picture\": \"<string>\",\n \"remember_history_count\": 123,\n \"use_location\": true,\n \"use_stt\": true,\n \"dark_mode\": true,\n \"pin_ui\": true,\n \"showSideBar\": true,\n \"galleryAsGrid\": true,\n \"toolsEnabled\": [\n \"call_rag\",\n \"get_user_files\",\n \"read_from_file\",\n \"get_browser\",\n \"read_url\"\n ],\n \"toolGuidanceEnabled\": false,\n \"ragIgnore\": true,\n \"ragKagMode\": true,\n \"ragOnlySearch\": true,\n \"browser_voice\": \"<string>\",\n \"browser_voices\": [\n \"<string>\"\n ],\n \"mustChangePassword\": true,\n \"passwordChangeSkipOnSSO\": true,\n \"passwordChangeRequired\": true,\n \"updatePasswordOnSSO\": true,\n \"rt_voice\": \"<string>\",\n \"gemini_rt_voice\": \"<string>\",\n \"xai_rt_voice\": \"<string>\",\n \"openai_live_voice\": \"<string>\",\n \"ragLimitChunks\": 8,\n \"mfaEnabled\": true\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"error": "Authentication Required"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}Update user profile or change password
Updates the current user’s profile fields or changes the user’s password. When resetCodeId is present in the request body, the endpoint operates in password-change mode and requires password (current) and newPassword fields. Otherwise, it updates profile fields validated against the authorized properties list (email, fname, lname, picture, remember_history_count, use_location, use_stt, dark_mode, pin_ui, showSideBar, galleryAsGrid, ragOnlySearch, ragIgnore, ragKagMode, ragLimitChunks, browser_voice, browser_voices, mustChangePassword, updatePasswordOnSSO, rt_voice, gemini_rt_voice, xai_rt_voice, openai_live_voice, mfaEnabled, toolsEnabled, toolGuidanceEnabled). Any properties not in this list are rejected.
curl --request PUT \
--url https://pria.praxislxp.com/api/user/me \
--header 'Content-Type: application/json' \
--header 'x-access-token: <api-key>' \
--data '
{
"email": "jsmith@example.com",
"fname": "<string>",
"lname": "<string>",
"picture": "<string>",
"remember_history_count": 123,
"use_location": true,
"use_stt": true,
"dark_mode": true,
"pin_ui": true,
"showSideBar": true,
"galleryAsGrid": true,
"toolsEnabled": [
"call_rag",
"get_user_files",
"read_from_file",
"get_browser",
"read_url"
],
"toolGuidanceEnabled": false,
"ragIgnore": true,
"ragKagMode": true,
"ragOnlySearch": true,
"browser_voice": "<string>",
"browser_voices": [
"<string>"
],
"mustChangePassword": true,
"passwordChangeSkipOnSSO": true,
"passwordChangeRequired": true,
"updatePasswordOnSSO": true,
"rt_voice": "<string>",
"gemini_rt_voice": "<string>",
"xai_rt_voice": "<string>",
"openai_live_voice": "<string>",
"ragLimitChunks": 8,
"mfaEnabled": true
}
'import requests
url = "https://pria.praxislxp.com/api/user/me"
payload = {
"email": "jsmith@example.com",
"fname": "<string>",
"lname": "<string>",
"picture": "<string>",
"remember_history_count": 123,
"use_location": True,
"use_stt": True,
"dark_mode": True,
"pin_ui": True,
"showSideBar": True,
"galleryAsGrid": True,
"toolsEnabled": ["call_rag", "get_user_files", "read_from_file", "get_browser", "read_url"],
"toolGuidanceEnabled": False,
"ragIgnore": True,
"ragKagMode": True,
"ragOnlySearch": True,
"browser_voice": "<string>",
"browser_voices": ["<string>"],
"mustChangePassword": True,
"passwordChangeSkipOnSSO": True,
"passwordChangeRequired": True,
"updatePasswordOnSSO": True,
"rt_voice": "<string>",
"gemini_rt_voice": "<string>",
"xai_rt_voice": "<string>",
"openai_live_voice": "<string>",
"ragLimitChunks": 8,
"mfaEnabled": True
}
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({
email: 'jsmith@example.com',
fname: '<string>',
lname: '<string>',
picture: '<string>',
remember_history_count: 123,
use_location: true,
use_stt: true,
dark_mode: true,
pin_ui: true,
showSideBar: true,
galleryAsGrid: true,
toolsEnabled: ['call_rag', 'get_user_files', 'read_from_file', 'get_browser', 'read_url'],
toolGuidanceEnabled: false,
ragIgnore: true,
ragKagMode: true,
ragOnlySearch: true,
browser_voice: '<string>',
browser_voices: ['<string>'],
mustChangePassword: true,
passwordChangeSkipOnSSO: true,
passwordChangeRequired: true,
updatePasswordOnSSO: true,
rt_voice: '<string>',
gemini_rt_voice: '<string>',
xai_rt_voice: '<string>',
openai_live_voice: '<string>',
ragLimitChunks: 8,
mfaEnabled: true
})
};
fetch('https://pria.praxislxp.com/api/user/me', 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/me",
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([
'email' => 'jsmith@example.com',
'fname' => '<string>',
'lname' => '<string>',
'picture' => '<string>',
'remember_history_count' => 123,
'use_location' => true,
'use_stt' => true,
'dark_mode' => true,
'pin_ui' => true,
'showSideBar' => true,
'galleryAsGrid' => true,
'toolsEnabled' => [
'call_rag',
'get_user_files',
'read_from_file',
'get_browser',
'read_url'
],
'toolGuidanceEnabled' => false,
'ragIgnore' => true,
'ragKagMode' => true,
'ragOnlySearch' => true,
'browser_voice' => '<string>',
'browser_voices' => [
'<string>'
],
'mustChangePassword' => true,
'passwordChangeSkipOnSSO' => true,
'passwordChangeRequired' => true,
'updatePasswordOnSSO' => true,
'rt_voice' => '<string>',
'gemini_rt_voice' => '<string>',
'xai_rt_voice' => '<string>',
'openai_live_voice' => '<string>',
'ragLimitChunks' => 8,
'mfaEnabled' => true
]),
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/me"
payload := strings.NewReader("{\n \"email\": \"jsmith@example.com\",\n \"fname\": \"<string>\",\n \"lname\": \"<string>\",\n \"picture\": \"<string>\",\n \"remember_history_count\": 123,\n \"use_location\": true,\n \"use_stt\": true,\n \"dark_mode\": true,\n \"pin_ui\": true,\n \"showSideBar\": true,\n \"galleryAsGrid\": true,\n \"toolsEnabled\": [\n \"call_rag\",\n \"get_user_files\",\n \"read_from_file\",\n \"get_browser\",\n \"read_url\"\n ],\n \"toolGuidanceEnabled\": false,\n \"ragIgnore\": true,\n \"ragKagMode\": true,\n \"ragOnlySearch\": true,\n \"browser_voice\": \"<string>\",\n \"browser_voices\": [\n \"<string>\"\n ],\n \"mustChangePassword\": true,\n \"passwordChangeSkipOnSSO\": true,\n \"passwordChangeRequired\": true,\n \"updatePasswordOnSSO\": true,\n \"rt_voice\": \"<string>\",\n \"gemini_rt_voice\": \"<string>\",\n \"xai_rt_voice\": \"<string>\",\n \"openai_live_voice\": \"<string>\",\n \"ragLimitChunks\": 8,\n \"mfaEnabled\": true\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/me")
.header("x-access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jsmith@example.com\",\n \"fname\": \"<string>\",\n \"lname\": \"<string>\",\n \"picture\": \"<string>\",\n \"remember_history_count\": 123,\n \"use_location\": true,\n \"use_stt\": true,\n \"dark_mode\": true,\n \"pin_ui\": true,\n \"showSideBar\": true,\n \"galleryAsGrid\": true,\n \"toolsEnabled\": [\n \"call_rag\",\n \"get_user_files\",\n \"read_from_file\",\n \"get_browser\",\n \"read_url\"\n ],\n \"toolGuidanceEnabled\": false,\n \"ragIgnore\": true,\n \"ragKagMode\": true,\n \"ragOnlySearch\": true,\n \"browser_voice\": \"<string>\",\n \"browser_voices\": [\n \"<string>\"\n ],\n \"mustChangePassword\": true,\n \"passwordChangeSkipOnSSO\": true,\n \"passwordChangeRequired\": true,\n \"updatePasswordOnSSO\": true,\n \"rt_voice\": \"<string>\",\n \"gemini_rt_voice\": \"<string>\",\n \"xai_rt_voice\": \"<string>\",\n \"openai_live_voice\": \"<string>\",\n \"ragLimitChunks\": 8,\n \"mfaEnabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://pria.praxislxp.com/api/user/me")
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 \"email\": \"jsmith@example.com\",\n \"fname\": \"<string>\",\n \"lname\": \"<string>\",\n \"picture\": \"<string>\",\n \"remember_history_count\": 123,\n \"use_location\": true,\n \"use_stt\": true,\n \"dark_mode\": true,\n \"pin_ui\": true,\n \"showSideBar\": true,\n \"galleryAsGrid\": true,\n \"toolsEnabled\": [\n \"call_rag\",\n \"get_user_files\",\n \"read_from_file\",\n \"get_browser\",\n \"read_url\"\n ],\n \"toolGuidanceEnabled\": false,\n \"ragIgnore\": true,\n \"ragKagMode\": true,\n \"ragOnlySearch\": true,\n \"browser_voice\": \"<string>\",\n \"browser_voices\": [\n \"<string>\"\n ],\n \"mustChangePassword\": true,\n \"passwordChangeSkipOnSSO\": true,\n \"passwordChangeRequired\": true,\n \"updatePasswordOnSSO\": true,\n \"rt_voice\": \"<string>\",\n \"gemini_rt_voice\": \"<string>\",\n \"xai_rt_voice\": \"<string>\",\n \"openai_live_voice\": \"<string>\",\n \"ragLimitChunks\": 8,\n \"mfaEnabled\": true\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"error": "Authentication Required"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}Authorizations
JWT token passed in x-access-token header
Body
- Profile Update
- Password Change
Any combination of authorized user properties. Only fields from the authorized list are accepted.
User email address
First name
Last name
Profile picture URL
Number of history items to remember
Whether to use location services
Whether speech-to-text is enabled
Whether dark mode is enabled
Whether the UI sidebar is pinned
Whether to show the sidebar
Whether to display gallery as grid
Tools you choose (personal accounts only): the names of the tools the AI
may use in this account's conversations. Send the FULL list on every
change. An empty array switches every tool off (conversation only). When
the field was never saved, the account uses the recommended set (the
minimal preset returned by POST /api/user/tools).
Names that are not tools a personal account can have are dropped silently. The Google and Microsoft tools are in the list like any other tool; with no saved list, the ones whose service the account connected are on. Anything that is not an array is refused with 400. A member of a Digital Twin is refused with 400: the tools of a Digital Twin are set by its administrator.
[ "call_rag", "get_user_files", "read_from_file", "get_browser", "read_url" ]
Tools Guidance (personal accounts only). true adds detailed instructions on how and when the
AI uses its tools to every question — useful for research; each question then uses more
credits. Off when never set or false. Anything but true or false is refused with 400. A
member of a Digital Twin is refused with 400: the Tools Guidance of a Digital Twin is set by
its administrator. The current value is personal.toolGuidanceEnabled of POST /api/user/tools.
false
Knowledge — retrieval mode (axis 1 of 2). When true, retrieval is
skipped entirely, the vault is closed to the AI's file tools (nothing
in the user's files can be listed, searched, opened or edited for the
turn) and the LLM answers from its training only.
Takes precedence over ragKagMode and ragOnlySearch.
Maps to the UI's "Disabled" Knowledge mode.
Knowledge — retrieval mode (axis 1 of 2): the person's choice between
RAG + KAG Fusion and RAG. Missing (never set) or true: Pria's chat
screens use RAG + KAG Fusion wherever knowledge-graph retrieval (KAG) is
available for the vault in use — the knowledge-graph leg runs alongside
the dense vector leg and the two are merged via Reciprocal Rank Fusion.
false: the person chose RAG Only (dense vector retrieval only). KAG is
always an augmentation on top of RAG — there is no "KAG without RAG" mode.
Saving it records when the choice was made (ragKagModeChosenAt in the
profile, written by the server; a body that sends it is refused like any
field outside the list above), and only a recorded false keeps KAG off:
a false saved before choices were recorded reads as no choice.
Send it only for an explicit choice: turning retrieval off (ragIgnore)
or Search Only does not change it. Turning a personal account's knowledge
graph on (kagFusionEnabledPersonal: true, retrieval on) is a choice of
RAG + KAG Fusion, so Pria's screens send ragKagMode: true with it.
Knowledge — output mode (axis 2 of 2, orthogonal to ragIgnore /
ragKagMode). When true AND retrieval is on, Pria returns the
raw vault chunks ("Search Only") instead of an LLM-rewritten
answer. Combinable with ragKagMode (graph chunks included)
and with vanilla RAG. No effect when ragIgnore=true.
Knowledge mode combinations (frontend view, where KAG is available):
• ragIgnore=true → Disabled
• ragIgnore=false, ragKagMode missing/true, ragOnly=false → RAG + KAG Fusion
• ragIgnore=false, ragKagMode=false, ragOnly=false → RAG Only
• ragIgnore=false, ragKagMode missing/true, ragOnly=true → RAG + KAG Fusion + Search Only
• ragIgnore=false, ragKagMode=false, ragOnly=true → RAG Only + Search Only
ragKagMode=false counts only with ragKagModeChosenAt; without it, it reads as missing.
Where KAG is not available, any ragKagMode reads RAG Only.
Selected browser voice for TTS
Available browser voices
Whether user must change password on next login
Admin-set, default true: SSO sign-ins never see the forced password change
Per session: whether this sign-in must change the password (the method rides the session token)
Reset password on SSO login
Real-time voice selection (OpenAI Realtime)
Real-time voice selection (Gemini Live)
Real-time voice selection (xAI Realtime)
Real-time voice selection (OpenAI GPT-Live), used when the Digital Twin sets none
How many knowledge segments a turn retrieves in your personal space, without a Digital Twin (default 2; rounded and clamped to 1-15)
1 <= x <= 15Whether email multi-factor authentication is enabled for this user
Was this page helpful?