curl --request POST \
--url https://app.reputably.net/api/functions/getCitationStats \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"tracker_id": "<string>",
"business_location_id": "<string>",
"days": 123,
"engine": "<string>",
"prompt_id": "<string>",
"variant_index": 123,
"page_limit": 123
}
'import requests
url = "https://app.reputably.net/api/functions/getCitationStats"
payload = {
"tracker_id": "<string>",
"business_location_id": "<string>",
"days": 123,
"engine": "<string>",
"prompt_id": "<string>",
"variant_index": 123,
"page_limit": 123
}
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({
tracker_id: '<string>',
business_location_id: '<string>',
days: 123,
engine: '<string>',
prompt_id: '<string>',
variant_index: 123,
page_limit: 123
})
};
fetch('https://app.reputably.net/api/functions/getCitationStats', 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/functions/getCitationStats",
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([
'tracker_id' => '<string>',
'business_location_id' => '<string>',
'days' => 123,
'engine' => '<string>',
'prompt_id' => '<string>',
'variant_index' => 123,
'page_limit' => 123
]),
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://app.reputably.net/api/functions/getCitationStats"
payload := strings.NewReader("{\n \"tracker_id\": \"<string>\",\n \"business_location_id\": \"<string>\",\n \"days\": 123,\n \"engine\": \"<string>\",\n \"prompt_id\": \"<string>\",\n \"variant_index\": 123,\n \"page_limit\": 123\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://app.reputably.net/api/functions/getCitationStats")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"tracker_id\": \"<string>\",\n \"business_location_id\": \"<string>\",\n \"days\": 123,\n \"engine\": \"<string>\",\n \"prompt_id\": \"<string>\",\n \"variant_index\": 123,\n \"page_limit\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.reputably.net/api/functions/getCitationStats")
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 \"tracker_id\": \"<string>\",\n \"business_location_id\": \"<string>\",\n \"days\": 123,\n \"engine\": \"<string>\",\n \"prompt_id\": \"<string>\",\n \"variant_index\": 123,\n \"page_limit\": 123\n}"
response = http.request(request)
puts response.read_body{}Citations of the brand's own website
How often AI answers use the brand’s own site as a source: cited rate overall, per engine and per prompt, the cited pages, and cited share against competitors.
A platform-scoped credential may call this against another agency’s workspace.
curl --request POST \
--url https://app.reputably.net/api/functions/getCitationStats \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"tracker_id": "<string>",
"business_location_id": "<string>",
"days": 123,
"engine": "<string>",
"prompt_id": "<string>",
"variant_index": 123,
"page_limit": 123
}
'import requests
url = "https://app.reputably.net/api/functions/getCitationStats"
payload = {
"tracker_id": "<string>",
"business_location_id": "<string>",
"days": 123,
"engine": "<string>",
"prompt_id": "<string>",
"variant_index": 123,
"page_limit": 123
}
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({
tracker_id: '<string>',
business_location_id: '<string>',
days: 123,
engine: '<string>',
prompt_id: '<string>',
variant_index: 123,
page_limit: 123
})
};
fetch('https://app.reputably.net/api/functions/getCitationStats', 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/functions/getCitationStats",
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([
'tracker_id' => '<string>',
'business_location_id' => '<string>',
'days' => 123,
'engine' => '<string>',
'prompt_id' => '<string>',
'variant_index' => 123,
'page_limit' => 123
]),
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://app.reputably.net/api/functions/getCitationStats"
payload := strings.NewReader("{\n \"tracker_id\": \"<string>\",\n \"business_location_id\": \"<string>\",\n \"days\": 123,\n \"engine\": \"<string>\",\n \"prompt_id\": \"<string>\",\n \"variant_index\": 123,\n \"page_limit\": 123\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://app.reputably.net/api/functions/getCitationStats")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"tracker_id\": \"<string>\",\n \"business_location_id\": \"<string>\",\n \"days\": 123,\n \"engine\": \"<string>\",\n \"prompt_id\": \"<string>\",\n \"variant_index\": 123,\n \"page_limit\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.reputably.net/api/functions/getCitationStats")
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 \"tracker_id\": \"<string>\",\n \"business_location_id\": \"<string>\",\n \"days\": 123,\n \"engine\": \"<string>\",\n \"prompt_id\": \"<string>\",\n \"variant_index\": 123,\n \"page_limit\": 123\n}"
response = http.request(request)
puts response.read_body{}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.
Body
Visibility tracker id.
Business id, as an alternative to tracker_id.
Window in days.
Restrict to one engine.
Restrict to a single prompt.
With prompt_id, one wording of it.
Maximum cited pages to return.
Response
Success.
The response is of type object.