Get Reviewer Profile
curl --request POST \
--url https://api.velt.dev/v2/memory/profiles/get \
--header 'Content-Type: application/json' \
--header 'x-velt-api-key: <x-velt-api-key>' \
--header 'x-velt-auth-token: <x-velt-auth-token>' \
--data '
{
"data": {
"targetUserId": "<string>"
}
}
'import requests
url = "https://api.velt.dev/v2/memory/profiles/get"
payload = { "data": { "targetUserId": "<string>" } }
headers = {
"x-velt-api-key": "<x-velt-api-key>",
"x-velt-auth-token": "<x-velt-auth-token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-velt-api-key': '<x-velt-api-key>',
'x-velt-auth-token': '<x-velt-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({data: {targetUserId: '<string>'}})
};
fetch('https://api.velt.dev/v2/memory/profiles/get', 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.velt.dev/v2/memory/profiles/get",
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([
'data' => [
'targetUserId' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-velt-api-key: <x-velt-api-key>",
"x-velt-auth-token: <x-velt-auth-token>"
],
]);
$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.velt.dev/v2/memory/profiles/get"
payload := strings.NewReader("{\n \"data\": {\n \"targetUserId\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-velt-api-key", "<x-velt-api-key>")
req.Header.Add("x-velt-auth-token", "<x-velt-auth-token>")
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.velt.dev/v2/memory/profiles/get")
.header("x-velt-api-key", "<x-velt-api-key>")
.header("x-velt-auth-token", "<x-velt-auth-token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"targetUserId\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.velt.dev/v2/memory/profiles/get")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-velt-api-key"] = '<x-velt-api-key>'
request["x-velt-auth-token"] = '<x-velt-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"targetUserId\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"result": {
"userId": "u_sarah",
"name": "Sarah Lee",
"email": "sarah@acme.com",
"totalJudgments": 214,
"approvalRate": 0.62,
"avgReviewTimeSeconds": 0,
"topFlags": [ { "issue": "missing-citation", "count": 31 } ],
"contentTypes": ["marketing-copy"],
"peakHours": [9, 10, 14],
"orgBreakdown": {
"1204438871": {
"organizationId": "1204438871",
"clientOrganizationId": "org_eu",
"judgments": 120,
"approvals": 70,
"approvalRate": 0.58
}
},
"lastActive": 1731432000000,
"twinEligible": true,
"twinAccuracy": 0.81,
"evolvedStandards": [
{
"topic": "medical claims",
"shiftDate": 1731000000000,
"oldPattern": "Approved with a disclaimer.",
"newPattern": "Rejected unless a citation is present."
}
]
}
}
Insights
Get Reviewer Profile
POST
/
v2
/
memory
/
profiles
/
get
Get Reviewer Profile
curl --request POST \
--url https://api.velt.dev/v2/memory/profiles/get \
--header 'Content-Type: application/json' \
--header 'x-velt-api-key: <x-velt-api-key>' \
--header 'x-velt-auth-token: <x-velt-auth-token>' \
--data '
{
"data": {
"targetUserId": "<string>"
}
}
'import requests
url = "https://api.velt.dev/v2/memory/profiles/get"
payload = { "data": { "targetUserId": "<string>" } }
headers = {
"x-velt-api-key": "<x-velt-api-key>",
"x-velt-auth-token": "<x-velt-auth-token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-velt-api-key': '<x-velt-api-key>',
'x-velt-auth-token': '<x-velt-auth-token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({data: {targetUserId: '<string>'}})
};
fetch('https://api.velt.dev/v2/memory/profiles/get', 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.velt.dev/v2/memory/profiles/get",
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([
'data' => [
'targetUserId' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-velt-api-key: <x-velt-api-key>",
"x-velt-auth-token: <x-velt-auth-token>"
],
]);
$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.velt.dev/v2/memory/profiles/get"
payload := strings.NewReader("{\n \"data\": {\n \"targetUserId\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-velt-api-key", "<x-velt-api-key>")
req.Header.Add("x-velt-auth-token", "<x-velt-auth-token>")
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.velt.dev/v2/memory/profiles/get")
.header("x-velt-api-key", "<x-velt-api-key>")
.header("x-velt-auth-token", "<x-velt-auth-token>")
.header("Content-Type", "application/json")
.body("{\n \"data\": {\n \"targetUserId\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.velt.dev/v2/memory/profiles/get")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-velt-api-key"] = '<x-velt-api-key>'
request["x-velt-auth-token"] = '<x-velt-auth-token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"data\": {\n \"targetUserId\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"result": {
"userId": "u_sarah",
"name": "Sarah Lee",
"email": "sarah@acme.com",
"totalJudgments": 214,
"approvalRate": 0.62,
"avgReviewTimeSeconds": 0,
"topFlags": [ { "issue": "missing-citation", "count": 31 } ],
"contentTypes": ["marketing-copy"],
"peakHours": [9, 10, 14],
"orgBreakdown": {
"1204438871": {
"organizationId": "1204438871",
"clientOrganizationId": "org_eu",
"judgments": 120,
"approvals": 70,
"approvalRate": 0.58
}
},
"lastActive": 1731432000000,
"twinEligible": true,
"twinAccuracy": 0.81,
"evolvedStandards": [
{
"topic": "medical claims",
"shiftDate": 1731000000000,
"oldPattern": "Approved with a disclaimer.",
"newPattern": "Rejected unless a citation is present."
}
]
}
}
Use this API to fetch a reviewer’s behavioral profile: judgment volume, approval rate, top flags, content types, peak hours, and a per-organization breakdown. Profiles are derived from accumulated judgments, so they need some review history before they are meaningful.
Endpoint
POST https://api.velt.dev/v2/memory/profiles/get
Headers
string
required
Your API key.
string
required
Your Auth Token.
Body
Params
object
required
Show properties
Show properties
string
The reviewer to profile. Always send this field. The API does not identify the reviewer from your auth token, so omitting
targetUserId returns null.Example Requests
Get a specific reviewer’s profile
{
"data": {
"targetUserId": "u_sarah"
}
}
Response
The result is a reviewer profile, ornull when no profile exists yet.
avgReviewTimeSeconds is reserved and always returns 0.
orgBreakdown is keyed by Velt’s internal organization id, which is also the value of the organizationId field. Match on clientOrganizationId to map an entry back to the organization id you sent.
twinEligible is true once the reviewer has at least 50 judgments. twinAccuracy is the share of twin-assisted judgments the twin got right, and is null when the reviewer has no twin-assisted judgments. evolvedStandards is present only for reviewers with at least 50 judgments, and only when a content type’s approval rate moved by 25 percentage points or more between the last 90 days and the preceding 90 to 365 days. Most integrations can ignore all three.
Success Response
{
"result": {
"userId": "u_sarah",
"name": "Sarah Lee",
"email": "sarah@acme.com",
"totalJudgments": 214,
"approvalRate": 0.62,
"avgReviewTimeSeconds": 0,
"topFlags": [ { "issue": "missing-citation", "count": 31 } ],
"contentTypes": ["marketing-copy"],
"peakHours": [9, 10, 14],
"orgBreakdown": {
"1204438871": {
"organizationId": "1204438871",
"clientOrganizationId": "org_eu",
"judgments": 120,
"approvals": 70,
"approvalRate": 0.58
}
},
"lastActive": 1731432000000,
"twinEligible": true,
"twinAccuracy": 0.81,
"evolvedStandards": [
{
"topic": "medical claims",
"shiftDate": 1731000000000,
"oldPattern": "Approved with a disclaimer.",
"newPattern": "Rejected unless a citation is present."
}
]
}
}
Failure Response
{
"error": {
"message": "ERROR_MESSAGE",
"status": "INVALID_ARGUMENT"
}
}
{
"result": {
"userId": "u_sarah",
"name": "Sarah Lee",
"email": "sarah@acme.com",
"totalJudgments": 214,
"approvalRate": 0.62,
"avgReviewTimeSeconds": 0,
"topFlags": [ { "issue": "missing-citation", "count": 31 } ],
"contentTypes": ["marketing-copy"],
"peakHours": [9, 10, 14],
"orgBreakdown": {
"1204438871": {
"organizationId": "1204438871",
"clientOrganizationId": "org_eu",
"judgments": 120,
"approvals": 70,
"approvalRate": 0.58
}
},
"lastActive": 1731432000000,
"twinEligible": true,
"twinAccuracy": 0.81,
"evolvedStandards": [
{
"topic": "medical claims",
"shiftDate": 1731000000000,
"oldPattern": "Approved with a disclaimer.",
"newPattern": "Rejected unless a citation is present."
}
]
}
}
Was this page helpful?
⌘I

