curl --request GET \
--url https://app.reputably.net/api/entities/VisibilityRun/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.reputably.net/api/entities/VisibilityRun/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.reputably.net/api/entities/VisibilityRun/{id}', 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.reputably.net/api/entities/VisibilityRun/{id}",
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.reputably.net/api/entities/VisibilityRun/{id}"
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.reputably.net/api/entities/VisibilityRun/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.reputably.net/api/entities/VisibilityRun/{id}")
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{
"id": "<string>",
"tracker_id": "<string>",
"prompt_id": "<string>",
"variant_index": 123,
"prompt_variant": "<string>",
"location_id": "<string>",
"engine": "<string>",
"provider": "<string>",
"model": "<string>",
"run_date": "<string>",
"run_at": "<string>",
"answer_text": "<string>",
"brand_mentioned": true,
"brand_position": 123,
"brand_sentiment": "<string>",
"brand_sentiment_score": 123,
"competitors_mentioned": [
{
"name": "<string>",
"position": 123,
"domain": "<string>"
}
],
"citations": [
{
"url": "<string>",
"domain": "<string>",
"title": "<string>"
}
],
"brand_entities": [
{
"name": "<string>",
"category": "<string>",
"domain": "<string>"
}
],
"brand_cited": true,
"competitor_domains_cited": [
"<string>"
],
"cost": 123
}Get one AI Visibility run
Reads a single AI Visibility run by id. Ids do not cross workspaces.
curl --request GET \
--url https://app.reputably.net/api/entities/VisibilityRun/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.reputably.net/api/entities/VisibilityRun/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.reputably.net/api/entities/VisibilityRun/{id}', 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.reputably.net/api/entities/VisibilityRun/{id}",
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.reputably.net/api/entities/VisibilityRun/{id}"
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.reputably.net/api/entities/VisibilityRun/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.reputably.net/api/entities/VisibilityRun/{id}")
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{
"id": "<string>",
"tracker_id": "<string>",
"prompt_id": "<string>",
"variant_index": 123,
"prompt_variant": "<string>",
"location_id": "<string>",
"engine": "<string>",
"provider": "<string>",
"model": "<string>",
"run_date": "<string>",
"run_at": "<string>",
"answer_text": "<string>",
"brand_mentioned": true,
"brand_position": 123,
"brand_sentiment": "<string>",
"brand_sentiment_score": 123,
"competitors_mentioned": [
{
"name": "<string>",
"position": 123,
"domain": "<string>"
}
],
"citations": [
{
"url": "<string>",
"domain": "<string>",
"title": "<string>"
}
],
"brand_entities": [
{
"name": "<string>",
"category": "<string>",
"domain": "<string>"
}
],
"brand_cited": true,
"competitor_domains_cited": [
"<string>"
],
"cost": 123
}Authorizations
An agent key (rpk_...) created in Settings → API & MCP, sent as Authorization: Bearer rpk_.... Bearer only: a cookie session can never drive this API. An OAuth 2.1 access token obtained from the same host works identically and lands on the same ceiling.
Headers
Which workspace to read. Omit it and you get the account’s home workspace, which on an agency account is often not where the live businesses are. A workspace this credential cannot read is refused with 403 rather than quietly answered from the default.
Path Parameters
The AI Visibility run id.
Response
The AI Visibility run.
Unique id.
The exact phrasing asked for this run — stored verbatim so the UI can show it even if the prompt's variations are regenerated later.
Engine registry key, e.g. 'chatgpt' | 'gemini'.
Which backend produced this run.
Exact provider model id used for this run (for reproducibility).
YYYY-MM-DD bucket used for daily rollups and dedup.
The AI engine's full answer to the prompt.
1-based rank of the brand among all brands named in the answer; null when not mentioned.
'positive' | 'neutral' | 'negative' | 'mixed' — how the answer describes the brand.
Brands the AI answer recommended as alternatives (discovered, not user-supplied). domain is set only when the answer/its citations contained it.
Show child attributes
Show child attributes
Sources the engine cited (url_citation annotations / grounding chunks).
Show child attributes
Show child attributes
Show child attributes
Show child attributes
True when any citation domain matches the tracker's brand_domain.
Optional estimated provider cost for this run, in USD.