curl --request GET \
--url https://app.get3rd.com/api/export/v1/visibility \
--header 'X-API-Key: <api-key>'import requests
url = "https://app.get3rd.com/api/export/v1/visibility"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://app.get3rd.com/api/export/v1/visibility', 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.get3rd.com/api/export/v1/visibility",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.get3rd.com/api/export/v1/visibility"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.get3rd.com/api/export/v1/visibility")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.get3rd.com/api/export/v1/visibility")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"date": "2023-12-25",
"provider": "<string>",
"market": "<string>",
"total_prompts": 123,
"visible_count": 123,
"visibility_rate": 123,
"model_id": "<string>",
"market_id": "<string>"
}
],
"pagination": {
"pageSize": 123,
"hasMore": true,
"nextCursor": "<string>"
},
"meta": {
"brandId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fromDate": "2023-11-07T05:31:56Z",
"toDate": "2023-11-07T05:31:56Z",
"plan": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Daily brand visibility
How often the brand appeared in AI answers, one row per date × model × provider × market. Counts the answers the dashboard counts: error answers and answers to retired prompts are left out, and so are branded prompts (prompts that name the brand) unless the brand is set to count them. Visibility rate is visible_count / total_prompts, computed per bucket.
curl --request GET \
--url https://app.get3rd.com/api/export/v1/visibility \
--header 'X-API-Key: <api-key>'import requests
url = "https://app.get3rd.com/api/export/v1/visibility"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://app.get3rd.com/api/export/v1/visibility', 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.get3rd.com/api/export/v1/visibility",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.get3rd.com/api/export/v1/visibility"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.get3rd.com/api/export/v1/visibility")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.get3rd.com/api/export/v1/visibility")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"date": "2023-12-25",
"provider": "<string>",
"market": "<string>",
"total_prompts": 123,
"visible_count": 123,
"visibility_rate": 123,
"model_id": "<string>",
"market_id": "<string>"
}
],
"pagination": {
"pageSize": 123,
"hasMore": true,
"nextCursor": "<string>"
},
"meta": {
"brandId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fromDate": "2023-11-07T05:31:56Z",
"toDate": "2023-11-07T05:31:56Z",
"plan": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Export API key, format 3rd_live_<64 hex characters>. Created under Settings → Looker Studio.
Query Parameters
Brand to report on, from GET /api/export/v1/brands. A brand outside the key's organization, or outside the brands the key is pinned to, returns 404.
Start of the window, inclusive (YYYY-MM-DD). Defaults to 30 days ago. Clamped to the plan's lookback window without an error, so read meta.fromDate for the window actually applied.
End of the window, inclusive (YYYY-MM-DD). Defaults to now.
Opaque cursor from the previous response's pagination.nextCursor. Omit for the first page.