curl --request POST \
--url https://api.snowseo.com/v3/ai-tracker/prompts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "<string>",
"teamId": "<string>",
"isEnabled": true,
"isBranded": true,
"region": {},
"items": [
{
"prompt": "<string>",
"isEnabled": true,
"isBranded": true,
"region": {}
}
],
"enqueue": true
}
'import requests
url = "https://api.snowseo.com/v3/ai-tracker/prompts"
payload = {
"prompt": "<string>",
"teamId": "<string>",
"isEnabled": True,
"isBranded": True,
"region": {},
"items": [
{
"prompt": "<string>",
"isEnabled": True,
"isBranded": True,
"region": {}
}
],
"enqueue": True
}
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({
prompt: '<string>',
teamId: '<string>',
isEnabled: true,
isBranded: true,
region: {},
items: [{prompt: '<string>', isEnabled: true, isBranded: true, region: {}}],
enqueue: true
})
};
fetch('https://api.snowseo.com/v3/ai-tracker/prompts', 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-tracker/prompts",
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([
'prompt' => '<string>',
'teamId' => '<string>',
'isEnabled' => true,
'isBranded' => true,
'region' => [
],
'items' => [
[
'prompt' => '<string>',
'isEnabled' => true,
'isBranded' => true,
'region' => [
]
]
],
'enqueue' => true
]),
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://api.snowseo.com/v3/ai-tracker/prompts"
payload := strings.NewReader("{\n \"prompt\": \"<string>\",\n \"teamId\": \"<string>\",\n \"isEnabled\": true,\n \"isBranded\": true,\n \"region\": {},\n \"items\": [\n {\n \"prompt\": \"<string>\",\n \"isEnabled\": true,\n \"isBranded\": true,\n \"region\": {}\n }\n ],\n \"enqueue\": true\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://api.snowseo.com/v3/ai-tracker/prompts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"<string>\",\n \"teamId\": \"<string>\",\n \"isEnabled\": true,\n \"isBranded\": true,\n \"region\": {},\n \"items\": [\n {\n \"prompt\": \"<string>\",\n \"isEnabled\": true,\n \"isBranded\": true,\n \"region\": {}\n }\n ],\n \"enqueue\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/ai-tracker/prompts")
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 \"prompt\": \"<string>\",\n \"teamId\": \"<string>\",\n \"isEnabled\": true,\n \"isBranded\": true,\n \"region\": {},\n \"items\": [\n {\n \"prompt\": \"<string>\",\n \"isEnabled\": true,\n \"isBranded\": true,\n \"region\": {}\n }\n ],\n \"enqueue\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"prompt": "<string>",
"status": "<string>",
"isEnabled": true,
"createdAt": "2023-11-07T05:31:56Z",
"success": true,
"created": 123,
"revived": 123,
"enqueued": 123,
"skipped": 123,
"results": [
{
"id": "<string>",
"prompt": "<string>",
"status": "<string>",
"isEnabled": true,
"createdAt": "2023-11-07T05:31:56Z",
"enqueued": true
}
]
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}Track Prompts
Add and manage the prompts tracked for AI visibility.
curl --request POST \
--url https://api.snowseo.com/v3/ai-tracker/prompts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "<string>",
"teamId": "<string>",
"isEnabled": true,
"isBranded": true,
"region": {},
"items": [
{
"prompt": "<string>",
"isEnabled": true,
"isBranded": true,
"region": {}
}
],
"enqueue": true
}
'import requests
url = "https://api.snowseo.com/v3/ai-tracker/prompts"
payload = {
"prompt": "<string>",
"teamId": "<string>",
"isEnabled": True,
"isBranded": True,
"region": {},
"items": [
{
"prompt": "<string>",
"isEnabled": True,
"isBranded": True,
"region": {}
}
],
"enqueue": True
}
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({
prompt: '<string>',
teamId: '<string>',
isEnabled: true,
isBranded: true,
region: {},
items: [{prompt: '<string>', isEnabled: true, isBranded: true, region: {}}],
enqueue: true
})
};
fetch('https://api.snowseo.com/v3/ai-tracker/prompts', 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-tracker/prompts",
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([
'prompt' => '<string>',
'teamId' => '<string>',
'isEnabled' => true,
'isBranded' => true,
'region' => [
],
'items' => [
[
'prompt' => '<string>',
'isEnabled' => true,
'isBranded' => true,
'region' => [
]
]
],
'enqueue' => true
]),
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://api.snowseo.com/v3/ai-tracker/prompts"
payload := strings.NewReader("{\n \"prompt\": \"<string>\",\n \"teamId\": \"<string>\",\n \"isEnabled\": true,\n \"isBranded\": true,\n \"region\": {},\n \"items\": [\n {\n \"prompt\": \"<string>\",\n \"isEnabled\": true,\n \"isBranded\": true,\n \"region\": {}\n }\n ],\n \"enqueue\": true\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://api.snowseo.com/v3/ai-tracker/prompts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"<string>\",\n \"teamId\": \"<string>\",\n \"isEnabled\": true,\n \"isBranded\": true,\n \"region\": {},\n \"items\": [\n {\n \"prompt\": \"<string>\",\n \"isEnabled\": true,\n \"isBranded\": true,\n \"region\": {}\n }\n ],\n \"enqueue\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/ai-tracker/prompts")
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 \"prompt\": \"<string>\",\n \"teamId\": \"<string>\",\n \"isEnabled\": true,\n \"isBranded\": true,\n \"region\": {},\n \"items\": [\n {\n \"prompt\": \"<string>\",\n \"isEnabled\": true,\n \"isBranded\": true,\n \"region\": {}\n }\n ],\n \"enqueue\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"prompt": "<string>",
"status": "<string>",
"isEnabled": true,
"createdAt": "2023-11-07T05:31:56Z",
"success": true,
"created": 123,
"revived": 123,
"enqueued": 123,
"skipped": 123,
"results": [
{
"id": "<string>",
"prompt": "<string>",
"status": "<string>",
"isEnabled": true,
"createdAt": "2023-11-07T05:31:56Z",
"enqueued": true
}
]
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}{
"success": true,
"error": "<string>",
"code": "<string>",
"message": "<string>",
"reference": "<string>"
}prompt, or several at once via items. Prompts that run out of credits are created paused and counted in skipped. skipped appears only in bulk (items) responses.
More endpoints
- Update a Prompt
- Delete a Prompt
- Refresh a Prompt
- Bulk prompt actions
- Delete Prompt Responses
- Enable or Disable a Model
Authorizations
Your SnowSEO API key (sk_...).
Body
- Option 1
- Option 2
Single prompt text
600Whether to start tracking straight away. Defaults to true. Applies to prompt and is the default for every entry in items (an entry's own isEnabled wins). Pass false to add prompts without tracking them: nothing runs and no credits are spent until they are enabled, and prompts that already exist but are paused stay paused.
Marks the prompt as brand-specific. Applies to prompt and is the default for every entry in items. Detected from the prompt text when omitted.
Optional region targeting. Applies to prompt and is the default for every entry in items. Omit for the team's default region, or pass null to track worldwide.
Bulk prompt items
Show child attributes
Show child attributes
When false, skips only the immediate run. The prompt is still tracked, so the refresh cron picks it up and bills for it on its next tick. To add a prompt without tracking it, use isEnabled: false instead.
Was this page helpful?

