List AI visibility models
curl --request GET \
--url https://api.snowseo.com/v3/ai-models \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.snowseo.com/v3/ai-models"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.snowseo.com/v3/ai-models', 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.snowseo.com/v3/ai-models",
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://api.snowseo.com/v3/ai-models"
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://api.snowseo.com/v3/ai-models")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/ai-models")
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{
"items": [
{
"id": "<string>",
"modelName": "<string>",
"companyName": "<string>",
"companyLink": "<string>",
"companyLogo": "<string>",
"planIds": [
"<string>"
],
"isActive": true,
"canEnable": true
}
]
}Models
AI Visibility Models
List the AI platforms used for AI-Visibility tracking, toggle which ones run, and set the refresh cadence.
GET
/
v3
/
ai-models
List AI visibility models
curl --request GET \
--url https://api.snowseo.com/v3/ai-models \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.snowseo.com/v3/ai-models"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.snowseo.com/v3/ai-models', 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.snowseo.com/v3/ai-models",
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://api.snowseo.com/v3/ai-models"
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://api.snowseo.com/v3/ai-models")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/ai-models")
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{
"items": [
{
"id": "<string>",
"modelName": "<string>",
"companyName": "<string>",
"companyLink": "<string>",
"companyLogo": "<string>",
"planIds": [
"<string>"
],
"isActive": true,
"canEnable": true
}
]
}Lists the AI platforms available for AI Visibility tracking for a team, each with its
See also the AI Visibility overview and Track Prompts for managing the prompts these models run against.
isActive state, a planIds array, and a canEnable flag reflecting your plan. Hidden platforms are omitted.
Enabling a platform lets SnowSEO run it (e.g. OpenAI, Anthropic, Google, or Perplexity) against your tracked prompts on future AI-visibility refreshes. Some platforms are plan-gated: planIds lists the plans in your plan family that include the platform (empty means unrestricted), and canEnable is true when the platform is unrestricted, your active plan is in planIds, or your organization has a special-access grant. Treat canEnable as authoritative: an empty planIds can also be a row reachable only through special access.
Every request is team-scoped - pass the
teamId of the brand you’re managing. Toggling a model or changing the cadence takes effect on the next AI-visibility refresh.More endpoints
Was this page helpful?

