Get Perception Snapshot
curl --request GET \
--url https://api.example.com/api/v1/brands/{brandId}/perception/{snapshotId} \
--header 'Authorization: <authorization>'import requests
url = "https://api.example.com/api/v1/brands/{brandId}/perception/{snapshotId}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.example.com/api/v1/brands/{brandId}/perception/{snapshotId}', 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/api/v1/brands/{brandId}/perception/{snapshotId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/brands/{brandId}/perception/{snapshotId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/brands/{brandId}/perception/{snapshotId}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/brands/{brandId}/perception/{snapshotId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"success": true,
"brand": {},
"snapshot": {
"snapshotId": "<string>",
"month": 123,
"year": 123,
"scores": {},
"attributes": [
{}
],
"attributeMetrics": {},
"insights": {},
"providers": [
{}
],
"createdAt": "<string>",
"completedAt": "<string>"
}
}Perception
Get Perception Snapshot
Full detail of a single perception snapshot: scores, attribute alignment and SWOT
GET
/
api
/
v1
/
brands
/
{brandId}
/
perception
/
{snapshotId}
Get Perception Snapshot
curl --request GET \
--url https://api.example.com/api/v1/brands/{brandId}/perception/{snapshotId} \
--header 'Authorization: <authorization>'import requests
url = "https://api.example.com/api/v1/brands/{brandId}/perception/{snapshotId}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.example.com/api/v1/brands/{brandId}/perception/{snapshotId}', 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/api/v1/brands/{brandId}/perception/{snapshotId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/brands/{brandId}/perception/{snapshotId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/v1/brands/{brandId}/perception/{snapshotId}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/brands/{brandId}/perception/{snapshotId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"success": true,
"brand": {},
"snapshot": {
"snapshotId": "<string>",
"month": 123,
"year": 123,
"scores": {},
"attributes": [
{}
],
"attributeMetrics": {},
"insights": {},
"providers": [
{}
],
"createdAt": "<string>",
"completedAt": "<string>"
}
}Retrieve the full detail of a single completed perception snapshot: the four scores, the attribute alignment breakdown and the SWOT insights. Get a
A
snapshotId from the Brand Perception endpoint’s history array.
Bearer token. Example:
Bearer qw-api-xxxPath Parameters
The unique identifier of the brand
The unique identifier of the perception snapshot
Response
Indicates if the request was successful
id, name, domainShow Snapshot
Show Snapshot
Snapshot ID
Month (1-12)
Year
sentiment, alignment, consistency, factualAlignment (0-100 or null)Brand attributes evaluated by AI. Each object has
text (string) and status (aligned, partial, missing).Counts:
aligned, partial, missing, total.SWOT arrays of strings:
strengths, weaknesses, opportunities, threats.AI providers included in the analysis
Creation timestamp (ISO 8601)
Completion timestamp (ISO 8601) or
null404 RESOURCE_NOT_FOUND is returned if the snapshot does not exist, is not COMPLETED, or does not belong to the brand.
Example Request
curl -X GET "https://www.qwairy.co/api/v1/brands/cm1234567890abcdef/perception/snap_2026_05" \
-H "Authorization: Bearer qw-api-your-token-here"
Example Response
{
"success": true,
"brand": {
"id": "cm1234567890abcdef",
"name": "My Brand",
"domain": "mybrand.com"
},
"snapshot": {
"snapshotId": "snap_2026_05",
"month": 5,
"year": 2026,
"scores": {
"sentiment": 78,
"alignment": 65,
"consistency": 82,
"factualAlignment": 71
},
"attributes": [
{ "text": "Premium positioning", "status": "aligned" },
{ "text": "Sustainable materials", "status": "partial" },
{ "text": "Made in France", "status": "missing" }
],
"attributeMetrics": {
"aligned": 1,
"partial": 1,
"missing": 1,
"total": 3
},
"insights": {
"strengths": ["Strong brand recognition in core market"],
"weaknesses": ["Limited awareness of product range"],
"opportunities": ["Growing demand in adjacent category"],
"threats": ["Aggressive competitor messaging"]
},
"providers": ["chatgpt", "perplexity"],
"createdAt": "2026-05-01T03:00:00.000Z",
"completedAt": "2026-05-03T04:12:00.000Z"
}
}
⌘I

