Get Citations by URL
curl --request GET \
--url https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/urls \
--header 'Authorization: <authorization>'import requests
url = "https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/urls"
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/analytics/citations/urls', 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/analytics/citations/urls",
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/analytics/citations/urls"
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/analytics/citations/urls")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/urls")
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{
"data": [
{
"urlHash": "<string>",
"url": "<string>",
"title": "<string>",
"domain": "<string>",
"citations": 123,
"citationsDelta": 123,
"runsCount": 123,
"avgRank": 123,
"category": "<string>",
"platforms": [
"<string>"
]
}
],
"pagination": {
"total": 123,
"limit": 123,
"offset": 123,
"hasMore": true
}
}Analytics
Get Citations by URL
Retrieve individual cited URLs with citation counts, rank, and category.
GET
/
ai-analytics-service
/
api
/
public
/
v1
/
analytics
/
citations
/
urls
Get Citations by URL
curl --request GET \
--url https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/urls \
--header 'Authorization: <authorization>'import requests
url = "https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/urls"
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/analytics/citations/urls', 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/analytics/citations/urls",
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/analytics/citations/urls"
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/analytics/citations/urls")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/urls")
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{
"data": [
{
"urlHash": "<string>",
"url": "<string>",
"title": "<string>",
"domain": "<string>",
"citations": 123,
"citationsDelta": 123,
"runsCount": 123,
"avgRank": 123,
"category": "<string>",
"platforms": [
"<string>"
]
}
],
"pagination": {
"total": 123,
"limit": 123,
"offset": 123,
"hasMore": true
}
}Returns citation data at the individual URL level. Each entry includes the URL, title, domain, citation count, average rank, and category. Results are paginated.
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.
string
End of date range. ISO 8601 format.
number
Brand ID. Optional — if omitted, uses the workspace’s default brand.
number
Filter by topic ID.
string[]
Filter by one or more platforms.
string
Filter by citation category (e.g.,
OWNED, EARNED, COMPETITOR).string
Search URLs by text. Case-insensitive partial match.
string
Filter by ISO country code.
integer
Number of results per page. Default:
20. Maximum: 100.integer
Number of results to skip. Default:
0.number
Filter by a single prompt ID.
number[]
Filter by multiple prompt IDs. Maximum 10 values.
Response
Returns200 OK with a paginated list of cited URLs.
object[]
required
Array of citation URL objects.
Show citation URL object
Show citation URL object
string
required
Unique hash for the URL.
string
required
Full URL of the cited page.
string
Page title.
string
required
Domain of the URL.
integer
required
Total citation count.
integer
required
Change from previous period.
integer
required
Number of query runs that cited the URL.
number
required
Average citation rank.
string
required
Citation category.
string[]
required
Platforms that cited the URL.
object
required
Example
curl -s "https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/urls?dateRange=30&topicId=42&category=OWNED&limit=10" \
-H "Authorization: Bearer slat_YOUR_TOKEN"
import requests
response = requests.get(
"https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/urls",
headers={
"Authorization": "Bearer slat_YOUR_TOKEN",
},
params={
"dateRange": 30,
"topicId": 42,
"category": "OWNED",
"limit": 10,
},
)
result = response.json()
for u in result["data"]:
print(f"{u['url']}: {u['citations']} citations (rank {u['avgRank']})")
const params = new URLSearchParams({
dateRange: "30",
topicId: "42",
category: "OWNED",
limit: "10",
});
const response = await fetch(
`https://api.slatehq.ai/ai-analytics-service/api/public/v1/analytics/citations/urls?${params}`,
{
headers: {
"Authorization": "Bearer slat_YOUR_TOKEN",
},
}
);
const result = await response.json();
console.log(result.data.length, "URLs,", result.pagination.total, "total");
Response
{
"data": [
{
"urlHash": "a1b2c3d4",
"url": "https://example.com/pm-tools-comparison",
"title": "Best Project Management Tools 2026",
"domain": "example.com",
"citations": 25,
"citationsDelta": 3,
"runsCount": 18,
"avgRank": 1.8,
"category": "OWNED",
"platforms": ["CHATGPT", "PERPLEXITY", "GEMINI"]
}
],
"pagination": {
"total": 120,
"limit": 10,
"offset": 0,
"hasMore": true
}
}
Status codes
| Status | Description |
|---|---|
200 | Citation URLs returned. |
400 | promptIds exceeds maximum of 10 values. |
401 | Missing or invalid Bearer token. See Authentication. |
500 | Internal server error. |
What’s next
- Get Citations by Domain — View citations grouped by domain.
- Get Citations Summary — View citation totals and categories.
Was this page helpful?