curl --request GET \
--url https://app.surfacd.com/api/v1/projects/{project}/reputation/narratives/{narrative} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.surfacd.com/api/v1/projects/{project}/reputation/narratives/{narrative}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.surfacd.com/api/v1/projects/{project}/reputation/narratives/{narrative}', 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://app.surfacd.com/api/v1/projects/{project}/reputation/narratives/{narrative}",
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://app.surfacd.com/api/v1/projects/{project}/reputation/narratives/{narrative}"
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://app.surfacd.com/api/v1/projects/{project}/reputation/narratives/{narrative}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.surfacd.com/api/v1/projects/{project}/reputation/narratives/{narrative}")
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{
"narrative": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"label": "<string>",
"description": "<string>",
"sentiment": "positive",
"response_share": 123,
"first_seen_at": "2023-11-07T05:31:56Z",
"last_seen_at": "2023-11-07T05:31:56Z",
"sparkline": [
{
"date": "2023-11-07T05:31:56Z",
"count": 123,
"positive_count": 123,
"negative_count": 123,
"neutral_count": 123
}
],
"theme": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"label": "<string>"
},
"services": [
{
"name": "<string>",
"display_name": "<string>"
}
],
"previous_response_share": 123,
"momentum": "emerging"
},
"model_agreement": [
{
"service_name": "<string>",
"count": 123
}
],
"related_narratives": [
{
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"label": "<string>",
"theme_label": "<string>",
"sentiment": "positive",
"response_share": 123
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}Get Narrative
A single narrative with its windowed summary, per-platform sentiment split, and sibling narratives sharing its theme.
curl --request GET \
--url https://app.surfacd.com/api/v1/projects/{project}/reputation/narratives/{narrative} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.surfacd.com/api/v1/projects/{project}/reputation/narratives/{narrative}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.surfacd.com/api/v1/projects/{project}/reputation/narratives/{narrative}', 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://app.surfacd.com/api/v1/projects/{project}/reputation/narratives/{narrative}",
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://app.surfacd.com/api/v1/projects/{project}/reputation/narratives/{narrative}"
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://app.surfacd.com/api/v1/projects/{project}/reputation/narratives/{narrative}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.surfacd.com/api/v1/projects/{project}/reputation/narratives/{narrative}")
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{
"narrative": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"label": "<string>",
"description": "<string>",
"sentiment": "positive",
"response_share": 123,
"first_seen_at": "2023-11-07T05:31:56Z",
"last_seen_at": "2023-11-07T05:31:56Z",
"sparkline": [
{
"date": "2023-11-07T05:31:56Z",
"count": 123,
"positive_count": 123,
"negative_count": 123,
"neutral_count": 123
}
],
"theme": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"label": "<string>"
},
"services": [
{
"name": "<string>",
"display_name": "<string>"
}
],
"previous_response_share": 123,
"momentum": "emerging"
},
"model_agreement": [
{
"service_name": "<string>",
"count": 123
}
],
"related_narratives": [
{
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"label": "<string>",
"theme_label": "<string>",
"sentiment": "positive",
"response_share": 123
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}Authorizations
Team API key created in Team Settings. Use it with URLs for the same team.
Path Parameters
Project UUID.
The narrative UUID.
Query Parameters
Must be on or after start_date.
Tag UUID or name filters. Repeat as tags[]=<uuid-or-name>. Discover tags with GET /api/v1/projects/{project}/tags.
AI platform provider filters such as chatgpt or perplexity. Repeat as services[]=<provider>. Discover providers with GET /api/v1/platforms.
Country code filters such as US or GB. Repeat as countries[]=<code>. Discover codes with GET /api/v1/countries.
Topic UUID or name filters. Use no_topic for prompts without a topic. Repeat as topics[]=<uuid-or-name>. Discover topics with GET /api/v1/projects/{project}/topics.
Prompt UUID filter.
Brand UUID to scope the reputation data to. Must belong to the project. Defaults to the project's primary brand; when the project has no primary brand an explicit brand is required. Discover brand UUIDs with GET /api/v1/projects/{project}/brands.
Response
The narrative detail.
A single narrative: its windowed summary, per-platform sentiment split, and sibling narratives sharing its theme.
A narrative (a recurring storyline) with its windowed metrics. response_share is the share of in-scope responses that mention the narrative.
Show child attributes
Show child attributes
Per-platform mention counts for the narrative across the window.
Show child attributes
Show child attributes
Show child attributes
Show child attributes