Update perception prompts
curl --request POST \
--url https://api.example.com/v1/perception-prompts/batch-update \
--header 'Content-Type: application/json' \
--data '
{
"prompts": [
{
"id": "<string>",
"propertyId": "<string>",
"scoringLogic": {},
"goodScore": "<string>",
"badScore": "<string>"
}
],
"promptIds": [
"<string>"
],
"propertyId": "<string>",
"scoringLogic": {},
"goodScore": "<string>",
"badScore": "<string>"
}
'import requests
url = "https://api.example.com/v1/perception-prompts/batch-update"
payload = {
"prompts": [
{
"id": "<string>",
"propertyId": "<string>",
"scoringLogic": {},
"goodScore": "<string>",
"badScore": "<string>"
}
],
"promptIds": ["<string>"],
"propertyId": "<string>",
"scoringLogic": {},
"goodScore": "<string>",
"badScore": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
prompts: [
{
id: '<string>',
propertyId: '<string>',
scoringLogic: {},
goodScore: '<string>',
badScore: '<string>'
}
],
promptIds: ['<string>'],
propertyId: '<string>',
scoringLogic: {},
goodScore: '<string>',
badScore: '<string>'
})
};
fetch('https://api.example.com/v1/perception-prompts/batch-update', 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.example.com/v1/perception-prompts/batch-update",
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([
'prompts' => [
[
'id' => '<string>',
'propertyId' => '<string>',
'scoringLogic' => [
],
'goodScore' => '<string>',
'badScore' => '<string>'
]
],
'promptIds' => [
'<string>'
],
'propertyId' => '<string>',
'scoringLogic' => [
],
'goodScore' => '<string>',
'badScore' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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.example.com/v1/perception-prompts/batch-update"
payload := strings.NewReader("{\n \"prompts\": [\n {\n \"id\": \"<string>\",\n \"propertyId\": \"<string>\",\n \"scoringLogic\": {},\n \"goodScore\": \"<string>\",\n \"badScore\": \"<string>\"\n }\n ],\n \"promptIds\": [\n \"<string>\"\n ],\n \"propertyId\": \"<string>\",\n \"scoringLogic\": {},\n \"goodScore\": \"<string>\",\n \"badScore\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/v1/perception-prompts/batch-update")
.header("Content-Type", "application/json")
.body("{\n \"prompts\": [\n {\n \"id\": \"<string>\",\n \"propertyId\": \"<string>\",\n \"scoringLogic\": {},\n \"goodScore\": \"<string>\",\n \"badScore\": \"<string>\"\n }\n ],\n \"promptIds\": [\n \"<string>\"\n ],\n \"propertyId\": \"<string>\",\n \"scoringLogic\": {},\n \"goodScore\": \"<string>\",\n \"badScore\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/perception-prompts/batch-update")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompts\": [\n {\n \"id\": \"<string>\",\n \"propertyId\": \"<string>\",\n \"scoringLogic\": {},\n \"goodScore\": \"<string>\",\n \"badScore\": \"<string>\"\n }\n ],\n \"promptIds\": [\n \"<string>\"\n ],\n \"propertyId\": \"<string>\",\n \"scoringLogic\": {},\n \"goodScore\": \"<string>\",\n \"badScore\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"updatedCount": 123,
"updatedPrompts": [
{}
],
"brandIds": [
"<string>"
],
"brandId": {}
}Topics & Prompts
Update perception prompts
Update the property and/or scoring logic on one or more existing perception prompts.
POST
/
v1
/
perception-prompts
/
batch-update
Update perception prompts
curl --request POST \
--url https://api.example.com/v1/perception-prompts/batch-update \
--header 'Content-Type: application/json' \
--data '
{
"prompts": [
{
"id": "<string>",
"propertyId": "<string>",
"scoringLogic": {},
"goodScore": "<string>",
"badScore": "<string>"
}
],
"promptIds": [
"<string>"
],
"propertyId": "<string>",
"scoringLogic": {},
"goodScore": "<string>",
"badScore": "<string>"
}
'import requests
url = "https://api.example.com/v1/perception-prompts/batch-update"
payload = {
"prompts": [
{
"id": "<string>",
"propertyId": "<string>",
"scoringLogic": {},
"goodScore": "<string>",
"badScore": "<string>"
}
],
"promptIds": ["<string>"],
"propertyId": "<string>",
"scoringLogic": {},
"goodScore": "<string>",
"badScore": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
prompts: [
{
id: '<string>',
propertyId: '<string>',
scoringLogic: {},
goodScore: '<string>',
badScore: '<string>'
}
],
promptIds: ['<string>'],
propertyId: '<string>',
scoringLogic: {},
goodScore: '<string>',
badScore: '<string>'
})
};
fetch('https://api.example.com/v1/perception-prompts/batch-update', 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.example.com/v1/perception-prompts/batch-update",
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([
'prompts' => [
[
'id' => '<string>',
'propertyId' => '<string>',
'scoringLogic' => [
],
'goodScore' => '<string>',
'badScore' => '<string>'
]
],
'promptIds' => [
'<string>'
],
'propertyId' => '<string>',
'scoringLogic' => [
],
'goodScore' => '<string>',
'badScore' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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.example.com/v1/perception-prompts/batch-update"
payload := strings.NewReader("{\n \"prompts\": [\n {\n \"id\": \"<string>\",\n \"propertyId\": \"<string>\",\n \"scoringLogic\": {},\n \"goodScore\": \"<string>\",\n \"badScore\": \"<string>\"\n }\n ],\n \"promptIds\": [\n \"<string>\"\n ],\n \"propertyId\": \"<string>\",\n \"scoringLogic\": {},\n \"goodScore\": \"<string>\",\n \"badScore\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/v1/perception-prompts/batch-update")
.header("Content-Type", "application/json")
.body("{\n \"prompts\": [\n {\n \"id\": \"<string>\",\n \"propertyId\": \"<string>\",\n \"scoringLogic\": {},\n \"goodScore\": \"<string>\",\n \"badScore\": \"<string>\"\n }\n ],\n \"promptIds\": [\n \"<string>\"\n ],\n \"propertyId\": \"<string>\",\n \"scoringLogic\": {},\n \"goodScore\": \"<string>\",\n \"badScore\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/perception-prompts/batch-update")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompts\": [\n {\n \"id\": \"<string>\",\n \"propertyId\": \"<string>\",\n \"scoringLogic\": {},\n \"goodScore\": \"<string>\",\n \"badScore\": \"<string>\"\n }\n ],\n \"promptIds\": [\n \"<string>\"\n ],\n \"propertyId\": \"<string>\",\n \"scoringLogic\": {},\n \"goodScore\": \"<string>\",\n \"badScore\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"updatedCount": 123,
"updatedPrompts": [
{}
],
"brandIds": [
"<string>"
],
"brandId": {}
}Use this to set the property a perception prompt measures (for example
Same scoring logic on many prompts:
Per-prompt property and scoring logic:
"Trust" or "Clarity") and the scoring logic used the next time responses are scored.
Send only the fields you want to change. Omitted fields stay as they are. Pass scoringLogic: null to clear scoring logic.
A scoring update replaces the whole scoringLogic value. goodScore and badScore are stored as { "good": "...", "bad": "..." }, which is what response scoring reads. Existing scores are left as they are until responses are scored again.
Prefer a single call with promptIds when applying the same change to every prompt. Use prompts[] when each prompt needs a different property or scoring logic.
Request body
Provide eitherprompts[] or promptIds plus at least one shared field (propertyId and/or scoring logic).
PerceptionPromptUpdate[]
Per-prompt updates. Each item must include
id and at least one of propertyId or a scoring field.Show PerceptionPromptUpdate
Show PerceptionPromptUpdate
string
required
Perception prompt UUID.
string
The perception property this prompt measures, e.g.
"Trust", "Clarity". Also accepted as property_id.string | object | null
How to interpret the score. An object
{ "good": "...", "bad": "..." }, a string, or null to clear. Also accepted as scoring_logic. Replaces the current scoring logic.string
What a high score means. Combined with
badScore into { good, bad }.string
What a low score means.
string[]
Apply the same
propertyId and/or scoring fields to every listed perception prompt.string
Shared property when using
promptIds. Also accepted as property_id.string | object | null
Shared scoring logic when using
promptIds. null clears it. Also accepted as scoring_logic.string
Shared high-score meaning when using
promptIds.string
Shared low-score meaning when using
promptIds.Request
Same property on many prompts:curl -s -X POST \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"promptIds": ["PERCEPTION_PROMPT_ID_1", "PERCEPTION_PROMPT_ID_2"],
"propertyId": "Trust"
}' \
"https://app.rocketblue.ai/api/v1/perception-prompts/batch-update"
curl -s -X POST \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"promptIds": ["PERCEPTION_PROMPT_ID_1", "PERCEPTION_PROMPT_ID_2"],
"goodScore": "Clear recommendation and specific evidence",
"badScore": "Vague, contradictory, or unsupported claims"
}' \
"https://app.rocketblue.ai/api/v1/perception-prompts/batch-update"
curl -s -X POST \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompts": [
{
"id": "PERCEPTION_PROMPT_ID_1",
"propertyId": "Trust",
"scoringLogic": {
"good": "Specific evidence that the brand is reliable",
"bad": "Doubt, complaints, or missing proof"
}
},
{
"id": "PERCEPTION_PROMPT_ID_2",
"scoringLogic": null
}
]
}' \
"https://app.rocketblue.ai/api/v1/perception-prompts/batch-update"
Response
integer
Number of perception prompts updated.
object[]
Updated perception prompts with
id, propertyId, promptText, scoringLogic, and brandId.string[]
Brands affected by the update.
string | null
Present when all updated prompts belonged to a single brand.
{
"updatedCount": 2,
"updatedPrompts": [
{
"id": "perception-prompt-uuid-1",
"propertyId": "Trust",
"promptText": "How trustworthy is Acme?",
"scoringLogic": {
"good": "Specific evidence that the brand is reliable",
"bad": "Doubt, complaints, or missing proof"
},
"brandId": "brand-uuid-123"
},
{
"id": "perception-prompt-uuid-2",
"propertyId": "Clarity",
"promptText": "Would you recommend Acme?",
"scoringLogic": null,
"brandId": "brand-uuid-123"
}
],
"brandIds": ["brand-uuid-123"],
"brandId": "brand-uuid-123"
}
⌘I

