Advertiser Review Aspects Route
curl --request GET \
--url https://api.example.com/api/v1/brand-reviews/advertisers/{advertiser_id}/aspects \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/api/v1/brand-reviews/advertisers/{advertiser_id}/aspects"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.example.com/api/v1/brand-reviews/advertisers/{advertiser_id}/aspects', 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/brand-reviews/advertisers/{advertiser_id}/aspects",
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: Bearer <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"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/brand-reviews/advertisers/{advertiser_id}/aspects"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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/brand-reviews/advertisers/{advertiser_id}/aspects")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/brand-reviews/advertisers/{advertiser_id}/aspects")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"platform": "trustpilot",
"aspects": [
"<string>"
],
"aspect_slugs": [
"<string>"
],
"vocabulary_is_core_only": false,
"vocabulary_assumed": [
"<string>"
],
"vocabulary_mixed": [
"<string>"
],
"min_mentions": 0,
"brands_total": 0,
"brands_examined": 0,
"reviews_total": 0,
"reviews_classified_total": 0,
"reviews_examined_total": 0,
"basis_notice": "Computed over AITasker's depth-capped sample of collected reviews, and within that only the reviews we classified — not the platform's full review population. Unclassified and uncollected reviews are excluded from every figure rather than counted as zero.",
"rows": [
{
"advertiser_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"domain": "<string>",
"reviews_total": 0,
"reviews_classified": 0,
"reviews_examined": 0,
"reviews_unclassified": 0,
"reviews_not_examined": 0,
"reviews_no_aspect_found": 0,
"segment": "<string>",
"segment_source": "<string>",
"cells": [
{
"aspect": "<string>",
"mentions": 0,
"positive": 0,
"negative": 0,
"mixed": 0,
"neutral": 0,
"positive_pct": 50,
"negative_pct": 50,
"cohort_median_positive_pct": 50,
"cohort_median_negative_pct": 50,
"positive_delta_pp": 0,
"negative_delta_pp": 0,
"benchmark_brand_count": 0,
"not_measured_reason": "brand_not_classified",
"evidence": [
{
"review_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sentiment": "positive",
"evidence": "<string>",
"evidence_rank": 2,
"platform": "<string>",
"source_url": "<string>",
"reviewer_name": "<string>",
"reviewed_at": "2023-11-07T05:31:56Z"
}
]
}
]
}
],
"reference_brand": {
"advertiser_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"domain": "<string>",
"reviews_total": 0,
"reviews_classified": 0,
"reviews_examined": 0,
"reviews_unclassified": 0,
"reviews_not_examined": 0,
"reviews_no_aspect_found": 0,
"segment": "<string>",
"segment_source": "<string>",
"cells": [
{
"aspect": "<string>",
"mentions": 0,
"positive": 0,
"negative": 0,
"mixed": 0,
"neutral": 0,
"positive_pct": 50,
"negative_pct": 50,
"cohort_median_positive_pct": 50,
"cohort_median_negative_pct": 50,
"positive_delta_pp": 0,
"negative_delta_pp": 0,
"benchmark_brand_count": 0,
"not_measured_reason": "brand_not_classified",
"evidence": [
{
"review_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sentiment": "positive",
"evidence": "<string>",
"evidence_rank": 2,
"platform": "<string>",
"source_url": "<string>",
"reviewer_name": "<string>",
"reviewed_at": "2023-11-07T05:31:56Z"
}
]
}
]
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Brand Reviews
Advertiser Review Aspects Route
Aspect-sentiment matrix for ONE advertiser — the Brand Details slice.
The service owns platform fallback, the one-member fetch, removal of self-referential cohort fields, and Brand Library tenancy (operator ruling 2026-08-17). This route only enforces feature access and validates the public query value.
GET
/
api
/
v1
/
brand-reviews
/
advertisers
/
{advertiser_id}
/
aspects
Advertiser Review Aspects Route
curl --request GET \
--url https://api.example.com/api/v1/brand-reviews/advertisers/{advertiser_id}/aspects \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/api/v1/brand-reviews/advertisers/{advertiser_id}/aspects"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.example.com/api/v1/brand-reviews/advertisers/{advertiser_id}/aspects', 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/brand-reviews/advertisers/{advertiser_id}/aspects",
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: Bearer <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"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/v1/brand-reviews/advertisers/{advertiser_id}/aspects"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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/brand-reviews/advertisers/{advertiser_id}/aspects")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/brand-reviews/advertisers/{advertiser_id}/aspects")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"platform": "trustpilot",
"aspects": [
"<string>"
],
"aspect_slugs": [
"<string>"
],
"vocabulary_is_core_only": false,
"vocabulary_assumed": [
"<string>"
],
"vocabulary_mixed": [
"<string>"
],
"min_mentions": 0,
"brands_total": 0,
"brands_examined": 0,
"reviews_total": 0,
"reviews_classified_total": 0,
"reviews_examined_total": 0,
"basis_notice": "Computed over AITasker's depth-capped sample of collected reviews, and within that only the reviews we classified — not the platform's full review population. Unclassified and uncollected reviews are excluded from every figure rather than counted as zero.",
"rows": [
{
"advertiser_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"domain": "<string>",
"reviews_total": 0,
"reviews_classified": 0,
"reviews_examined": 0,
"reviews_unclassified": 0,
"reviews_not_examined": 0,
"reviews_no_aspect_found": 0,
"segment": "<string>",
"segment_source": "<string>",
"cells": [
{
"aspect": "<string>",
"mentions": 0,
"positive": 0,
"negative": 0,
"mixed": 0,
"neutral": 0,
"positive_pct": 50,
"negative_pct": 50,
"cohort_median_positive_pct": 50,
"cohort_median_negative_pct": 50,
"positive_delta_pp": 0,
"negative_delta_pp": 0,
"benchmark_brand_count": 0,
"not_measured_reason": "brand_not_classified",
"evidence": [
{
"review_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sentiment": "positive",
"evidence": "<string>",
"evidence_rank": 2,
"platform": "<string>",
"source_url": "<string>",
"reviewer_name": "<string>",
"reviewed_at": "2023-11-07T05:31:56Z"
}
]
}
]
}
],
"reference_brand": {
"advertiser_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"domain": "<string>",
"reviews_total": 0,
"reviews_classified": 0,
"reviews_examined": 0,
"reviews_unclassified": 0,
"reviews_not_examined": 0,
"reviews_no_aspect_found": 0,
"segment": "<string>",
"segment_source": "<string>",
"cells": [
{
"aspect": "<string>",
"mentions": 0,
"positive": 0,
"negative": 0,
"mixed": 0,
"neutral": 0,
"positive_pct": 50,
"negative_pct": 50,
"cohort_median_positive_pct": 50,
"cohort_median_negative_pct": 50,
"positive_delta_pp": 0,
"negative_delta_pp": 0,
"benchmark_brand_count": 0,
"not_measured_reason": "brand_not_classified",
"evidence": [
{
"review_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sentiment": "positive",
"evidence": "<string>",
"evidence_rank": 2,
"platform": "<string>",
"source_url": "<string>",
"reviewer_name": "<string>",
"reviewed_at": "2023-11-07T05:31:56Z"
}
]
}
]
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Query Parameters
Response
Successful Response
The comparable grid, plus what stops it being over-read.
Available options:
trustpilot, google Required range:
x >= 0Required range:
x >= 0Required range:
x >= 0Required range:
x >= 0Required range:
x >= 0Required range:
x >= 0basis_notice
string
default:Computed over AITasker's depth-capped sample of collected reviews, and within that only the reviews we classified — not the platform's full review population. Unclassified and uncollected reviews are excluded from every figure rather than counted as zero.
Show child attributes
Show child attributes
One brand's row across the comparable aspects.
Show child attributes
Show child attributes
Was this page helpful?
⌘I