Skip to main content
PUT
/
api
/
user
/
me
Update user profile or change password
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,
  "ragIgnore": true,
  "ragKagMode": true,
  "ragOnlySearch": true,
  "browser_voice": "<string>",
  "browser_voices": [
    "<string>"
  ],
  "mustChangePassword": true,
  "updatePasswordOnSSO": true,
  "rt_voice": "<string>",
  "gemini_rt_voice": "<string>",
  "xai_rt_voice": "<string>",
  "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,
"ragIgnore": True,
"ragKagMode": True,
"ragOnlySearch": True,
"browser_voice": "<string>",
"browser_voices": ["<string>"],
"mustChangePassword": True,
"updatePasswordOnSSO": True,
"rt_voice": "<string>",
"gemini_rt_voice": "<string>",
"xai_rt_voice": "<string>",
"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,
ragIgnore: true,
ragKagMode: true,
ragOnlySearch: true,
browser_voice: '<string>',
browser_voices: ['<string>'],
mustChangePassword: true,
updatePasswordOnSSO: true,
rt_voice: '<string>',
gemini_rt_voice: '<string>',
xai_rt_voice: '<string>',
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,
'ragIgnore' => true,
'ragKagMode' => true,
'ragOnlySearch' => true,
'browser_voice' => '<string>',
'browser_voices' => [
'<string>'
],
'mustChangePassword' => true,
'updatePasswordOnSSO' => true,
'rt_voice' => '<string>',
'gemini_rt_voice' => '<string>',
'xai_rt_voice' => '<string>',
'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 \"ragIgnore\": true,\n \"ragKagMode\": true,\n \"ragOnlySearch\": true,\n \"browser_voice\": \"<string>\",\n \"browser_voices\": [\n \"<string>\"\n ],\n \"mustChangePassword\": true,\n \"updatePasswordOnSSO\": true,\n \"rt_voice\": \"<string>\",\n \"gemini_rt_voice\": \"<string>\",\n \"xai_rt_voice\": \"<string>\",\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 \"ragIgnore\": true,\n \"ragKagMode\": true,\n \"ragOnlySearch\": true,\n \"browser_voice\": \"<string>\",\n \"browser_voices\": [\n \"<string>\"\n ],\n \"mustChangePassword\": true,\n \"updatePasswordOnSSO\": true,\n \"rt_voice\": \"<string>\",\n \"gemini_rt_voice\": \"<string>\",\n \"xai_rt_voice\": \"<string>\",\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 \"ragIgnore\": true,\n \"ragKagMode\": true,\n \"ragOnlySearch\": true,\n \"browser_voice\": \"<string>\",\n \"browser_voices\": [\n \"<string>\"\n ],\n \"mustChangePassword\": true,\n \"updatePasswordOnSSO\": true,\n \"rt_voice\": \"<string>\",\n \"gemini_rt_voice\": \"<string>\",\n \"xai_rt_voice\": \"<string>\",\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

x-access-token
string
header
required

JWT token passed in x-access-token header

Body

application/json

Any combination of authorized user properties. Only fields from the authorized list are accepted.

email
string<email>

User email address

fname
string

First name

lname
string

Last name

picture
string

Profile picture URL

remember_history_count
integer

Number of history items to remember

use_location
boolean

Whether to use location services

use_stt
boolean

Whether speech-to-text is enabled

dark_mode
boolean

Whether dark mode is enabled

pin_ui
boolean

Whether the UI sidebar is pinned

showSideBar
boolean

Whether to show the sidebar

Whether to display gallery as grid

ragIgnore
boolean

Knowledge — retrieval mode (axis 1 of 2). When true, retrieval is skipped entirely and the LLM answers from its training only. Takes precedence over ragKagMode and ragOnlySearch. Maps to the UI's "Disabled" Knowledge mode.

ragKagMode
boolean

Knowledge — retrieval mode (axis 1 of 2). When true AND retrieval is on (ragIgnore=false) AND the user/institution is KAG-eligible, the knowledge-graph leg runs alongside the dense vector leg and the two are merged via Reciprocal Rank Fusion. NB. KAG is always an augmentation on top of RAG — there is no "KAG without RAG" mode. Maps to the UI's "RAG + KAG Fusion" Knowledge mode. When false with ragIgnore=false, behaviour is "RAG Only" (dense vector retrieval only).

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): • ragIgnore=true → Disabled • ragIgnore=false, ragKagMode=false, ragOnly=false → RAG Only • ragIgnore=false, ragKagMode=true, ragOnly=false → RAG + KAG Fusion • ragIgnore=false, ragKagMode=false, ragOnly=true → RAG Only + Search Only • ragIgnore=false, ragKagMode=true, ragOnly=true → RAG + KAG Fusion + Search Only

browser_voice
string

Selected browser voice for TTS

browser_voices
string[]

Available browser voices

mustChangePassword
boolean

Whether user must change password on next login

updatePasswordOnSSO
boolean

Reset password on SSO login

rt_voice
string

Real-time voice selection (OpenAI Realtime)

gemini_rt_voice
string

Real-time voice selection (Gemini Live)

xai_rt_voice
string

Real-time voice selection (xAI Realtime)

mfaEnabled
boolean

Whether email multi-factor authentication is enabled for this user

Response

Profile updated or password changed successfully

success
boolean
Example:

true

message
string

Either 'Profile updated!' or 'Password Changes Successfully'