curl --request POST \
--url https://api.example.com/api/v1/brands/{brand_id}/brand-intelligence/audits-commentary \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"refresh": false
}
'import requests
url = "https://api.example.com/api/v1/brands/{brand_id}/brand-intelligence/audits-commentary"
payload = { "refresh": False }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({refresh: false})
};
fetch('https://api.example.com/api/v1/brands/{brand_id}/brand-intelligence/audits-commentary', 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/{brand_id}/brand-intelligence/audits-commentary",
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([
'refresh' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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/api/v1/brands/{brand_id}/brand-intelligence/audits-commentary"
payload := strings.NewReader("{\n \"refresh\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <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.example.com/api/v1/brands/{brand_id}/brand-intelligence/audits-commentary")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"refresh\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/brands/{brand_id}/brand-intelligence/audits-commentary")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"refresh\": false\n}"
response = http.request(request)
puts response.read_body{
"module": "seo",
"group_key": "<string>",
"generated_at": "2023-11-07T05:31:56Z",
"period": "<string>",
"prompt_version": "<string>",
"schema_version": "<string>",
"status": "ready",
"summary": "",
"strengths": [
{
"title": "<string>",
"detail": "<string>",
"evidence_refs": [
"<string>"
],
"rule_id": "<string>",
"confidence": "medium"
}
],
"weaknesses": [
{
"title": "<string>",
"detail": "<string>",
"evidence_refs": [
"<string>"
],
"rule_id": "<string>",
"confidence": "medium"
}
],
"table_stakes": [
{
"title": "<string>",
"detail": "<string>",
"evidence_refs": [
"<string>"
],
"rule_id": "<string>",
"confidence": "medium"
}
],
"recommendations": [
{
"title": "<string>",
"detail": "<string>",
"evidence_refs": [
"<string>"
],
"rule_id": "<string>",
"confidence": "medium"
}
],
"source_refs": {},
"provenance": {},
"fallback_reason": "<string>",
"refresh_available_at": "2023-11-07T05:31:56Z"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Get Brand Intelligence Audits Commentary Route
The Audits hub analyst summary — one grounded read across four audits.
POST for consistency with every other commentary route (and because the forced refresh is a side-effecting request), though this one carries no cohort: the subject is fixed to the brand’s own core audits.
Deliberately a SEPARATE route from anything the hub’s measured layer reads.
The “What to fix first” strip fetches audit details straight from the audits
API; this endpoint can sit at status: "pending" for a minute while an
LLM run completes, and a shared fetch would let slow narration gate the
strip and the cards.
Reads only already-persisted brand_audits rows — no audit is triggered
and no provider is called.
curl --request POST \
--url https://api.example.com/api/v1/brands/{brand_id}/brand-intelligence/audits-commentary \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"refresh": false
}
'import requests
url = "https://api.example.com/api/v1/brands/{brand_id}/brand-intelligence/audits-commentary"
payload = { "refresh": False }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({refresh: false})
};
fetch('https://api.example.com/api/v1/brands/{brand_id}/brand-intelligence/audits-commentary', 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/{brand_id}/brand-intelligence/audits-commentary",
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([
'refresh' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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/api/v1/brands/{brand_id}/brand-intelligence/audits-commentary"
payload := strings.NewReader("{\n \"refresh\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <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.example.com/api/v1/brands/{brand_id}/brand-intelligence/audits-commentary")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"refresh\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/brands/{brand_id}/brand-intelligence/audits-commentary")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"refresh\": false\n}"
response = http.request(request)
puts response.read_body{
"module": "seo",
"group_key": "<string>",
"generated_at": "2023-11-07T05:31:56Z",
"period": "<string>",
"prompt_version": "<string>",
"schema_version": "<string>",
"status": "ready",
"summary": "",
"strengths": [
{
"title": "<string>",
"detail": "<string>",
"evidence_refs": [
"<string>"
],
"rule_id": "<string>",
"confidence": "medium"
}
],
"weaknesses": [
{
"title": "<string>",
"detail": "<string>",
"evidence_refs": [
"<string>"
],
"rule_id": "<string>",
"confidence": "medium"
}
],
"table_stakes": [
{
"title": "<string>",
"detail": "<string>",
"evidence_refs": [
"<string>"
],
"rule_id": "<string>",
"confidence": "medium"
}
],
"recommendations": [
{
"title": "<string>",
"detail": "<string>",
"evidence_refs": [
"<string>"
],
"rule_id": "<string>",
"confidence": "medium"
}
],
"source_refs": {},
"provenance": {},
"fallback_reason": "<string>",
"refresh_available_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
Body
The Audits hub analyst summary carries NO cohort.
Its subject is fixed — the core audits already persisted for this brand — so there is nothing for the client to curate and nothing to validate. The only knob is the operator-style forced refresh, which the server-side 24h cooldown still governs.
Response
Successful Response
seo, content, reviews, social, google-ads, paid-media, audits, competitor-rollup ready, pending 6006Show child attributes
Show child attributes
6Show child attributes
Show child attributes
6Show child attributes
Show child attributes
6Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?