Get Theme Sentiment
curl --request GET \
--url https://api.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions \
--header 'Authorization: <authorization>'import requests
url = "https://api.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions', 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.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions",
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.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions"
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.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions")
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{
"themes": [
{
"themeId": "<string>",
"positiveSentiment": 123,
"neutralSentiment": 123,
"negativeSentiment": 123,
"positiveSentimentDelta": 123,
"neutralSentimentDelta": 123,
"negativeSentimentDelta": 123,
"totalKeywords": 123
}
]
}Sentiment
Get Theme Sentiment
Retrieve sentiment breakdown grouped by theme.
GET
/
ai-analytics-service
/
api
/
public
/
v1
/
sentiment
/
theme
/
mentions
Get Theme Sentiment
curl --request GET \
--url https://api.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions \
--header 'Authorization: <authorization>'import requests
url = "https://api.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions', 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.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions",
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.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions"
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.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions")
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{
"themes": [
{
"themeId": "<string>",
"positiveSentiment": 123,
"neutralSentiment": 123,
"negativeSentiment": 123,
"positiveSentimentDelta": 123,
"neutralSentimentDelta": 123,
"negativeSentimentDelta": 123,
"totalKeywords": 123
}
]
}Returns sentiment data grouped by theme. Each theme shows positive, neutral, and negative mention counts with period-over-period change.
Parameters
string
required
Bearer token. Format:
Bearer slat_<your-token>.integer
Number of days for the analysis window.
string
Start of date range. ISO 8601 format (e.g.,
2026-02-01T00:00:00Z).string
End of date range. ISO 8601 format.
number
Filter by topic ID.
number
Filter by brand ID.
string
Filter by brand name.
string[]
Filter by one or more platforms:
CHATGPT, PERPLEXITY, GOOGLE_AI_OVERVIEW, GOOGLE_AI_MODE, GEMINI, CLAUDE.string
Filter by ISO country code for region.
string
Filter by sentiment label (e.g.,
positive, neutral, negative).number
Filter by a single prompt ID.
number[]
Filter by multiple prompt IDs. Maximum 10 values.
Response
Returns200 OK with an array of theme sentiment objects.
object[]
required
Array of theme sentiment objects.
Show theme sentiment object
Show theme sentiment object
string
required
Unique identifier for the theme.
integer
required
Positive mention count for the theme.
integer
required
Neutral mention count.
integer
required
Negative mention count.
integer
required
Change in positive sentiment compared to the previous period.
integer
required
Change in neutral sentiment compared to the previous period.
integer
required
Change in negative sentiment compared to the previous period.
integer
required
Number of keywords associated with the theme.
Example
curl -s "https://api.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions?dateRange=30&topicId=42" \
-H "Authorization: Bearer slat_YOUR_TOKEN"
import requests
response = requests.get(
"https://api.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions",
headers={
"Authorization": "Bearer slat_YOUR_TOKEN",
},
params={
"dateRange": 30,
"topicId": 42,
},
)
themes = response.json()
for theme in themes:
total = theme["positiveSentiment"] + theme["neutralSentiment"] + theme["negativeSentiment"]
print(f"Theme {theme['themeId']}: {total} mentions")
const params = new URLSearchParams({
dateRange: "30",
topicId: "42",
});
const response = await fetch(
`https://api.slatehq.ai/ai-analytics-service/api/public/v1/sentiment/theme/mentions?${params}`,
{
headers: {
"Authorization": "Bearer slat_YOUR_TOKEN",
},
}
);
const themes = await response.json();
console.log(themes.length, "themes found");
Response
[
{
"themeId": "theme-abc-123",
"positiveSentiment": 45,
"neutralSentiment": 30,
"negativeSentiment": 5,
"positiveSentimentDelta": 3,
"neutralSentimentDelta": -1,
"negativeSentimentDelta": 0,
"totalKeywords": 12
},
{
"themeId": "theme-def-456",
"positiveSentiment": 28,
"neutralSentiment": 42,
"negativeSentiment": 10,
"positiveSentimentDelta": -2,
"neutralSentimentDelta": 5,
"negativeSentimentDelta": 1,
"totalKeywords": 8
}
]
Delta values compare the current period to the previous period of equal length.
Status codes
| Status | Description |
|---|---|
200 | Theme sentiment data returned. |
400 | promptIds exceeds maximum of 10 values. |
401 | Missing or invalid Bearer token. See Authentication. |
500 | Internal server error. |
What’s next
- Get Overall Sentiment — View aggregated sentiment across all themes.
- Get Citations — View citation sources.
Was this page helpful?