List prompts
curl --request GET \
--url https://perquery.ai/api/v1/sites/{site_uuid}/prompts \
--header 'Authorization: <api-key>'import requests
url = "https://perquery.ai/api/v1/sites/{site_uuid}/prompts"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://perquery.ai/api/v1/sites/{site_uuid}/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://perquery.ai/api/v1/sites/{site_uuid}/prompts",
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: <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://perquery.ai/api/v1/sites/{site_uuid}/prompts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<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://perquery.ai/api/v1/sites/{site_uuid}/prompts")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://perquery.ai/api/v1/sites/{site_uuid}/prompts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"rows": [
{
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"text": "<string>",
"target_page": "<string>",
"primary_keyword": "<string>",
"text_editable": true,
"labels": [
"<string>"
],
"metrics": {
"visibility": 123,
"rank": 123,
"sentiment": 123,
"has_opportunity": true,
"assistants_present": [
"<string>"
],
"trend": [
123
],
"subset_scoped": true,
"volume": 123,
"opportunity": 123
}
}
],
"total": 123,
"page": 123,
"page_size": 123,
"total_pages": 123
}Prompts
List prompts
Returns the tracked prompts of the site with their metrics. Use q, tracking_group, ungrouped, sentiment, target and opportunity to filter, and sort and direction to order. Use date_range to select the period (7g, 1a, 3a, 6a, 1y or custom with since and until). Use persona and llm to limit the data to one persona and to some AI assistants. The list is paged with page and page_size.
GET
/
v1
/
sites
/
{site_uuid}
/
prompts
List prompts
curl --request GET \
--url https://perquery.ai/api/v1/sites/{site_uuid}/prompts \
--header 'Authorization: <api-key>'import requests
url = "https://perquery.ai/api/v1/sites/{site_uuid}/prompts"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://perquery.ai/api/v1/sites/{site_uuid}/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://perquery.ai/api/v1/sites/{site_uuid}/prompts",
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: <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://perquery.ai/api/v1/sites/{site_uuid}/prompts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<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://perquery.ai/api/v1/sites/{site_uuid}/prompts")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://perquery.ai/api/v1/sites/{site_uuid}/prompts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"rows": [
{
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"text": "<string>",
"target_page": "<string>",
"primary_keyword": "<string>",
"text_editable": true,
"labels": [
"<string>"
],
"metrics": {
"visibility": 123,
"rank": 123,
"sentiment": 123,
"has_opportunity": true,
"assistants_present": [
"<string>"
],
"trend": [
123
],
"subset_scoped": true,
"volume": 123,
"opportunity": 123
}
}
],
"total": 123,
"page": 123,
"page_size": 123,
"total_pages": 123
}Authorizations
ApiKey pq_<prefix>_<secret>. An API key gives read-only access.
Path Parameters
Query Parameters
7g- 7g1a- 1a3a- 3a6a- 6a1y- 1ycustom- custom
Available options:
7g, 1a, 3a, 6a, 1y, custom Minimum string length:
1asc- ascdesc- desc
Available options:
asc, desc Minimum string length:
1chatgpt- chatgptgemini- geminiclaude- claudeperplexity- perplexitygoogleai- googleaigrok- grokdeepseek- deepseek
Available options:
chatgpt, gemini, claude, perplexity, googleai, grok, deepseek all- allyes- yesno- no
Available options:
all, yes, no Minimum string length:
1Required range:
x >= 1Required range:
1 <= x <= 200pos- posneu- neuneg- neg
Available options:
pos, neu, neg, null Minimum string length:
1The first day of a custom range.
vis- visrank- ranksentiment- sentimentvolume- volumeopportunity- opportunity
Available options:
vis, rank, sentiment, volume, opportunity Minimum string length:
1all- allyes- yesno- no
Available options:
all, yes, no Minimum string length:
1The last day of a custom range.

