Latest Content Coverage
curl --request GET \
--url https://server.promptwatch.com/api/v2/content-gap/prompts/{promptId}/latest \
--header 'X-API-Key: <api-key>'import requests
url = "https://server.promptwatch.com/api/v2/content-gap/prompts/{promptId}/latest"
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://server.promptwatch.com/api/v2/content-gap/prompts/{promptId}/latest', 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://server.promptwatch.com/api/v2/content-gap/prompts/{promptId}/latest",
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://server.promptwatch.com/api/v2/content-gap/prompts/{promptId}/latest"
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://server.promptwatch.com/api/v2/content-gap/prompts/{promptId}/latest")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.promptwatch.com/api/v2/content-gap/prompts/{promptId}/latest")
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{
"id": "6ba7b826-9dad-11d1-80b4-00c04fd430c8",
"contentCoverageScore": 0.64,
"explanation": "Illustrative: key product claims are partially supported on-site.",
"report": "## Coverage summary\n\nExample markdown sections only.",
"sources": [
{
"url": "https://docs.example.com/security",
"title": "Security overview",
"snippet": "Illustrative snippet text."
}
],
"queryFanouts": [
"crm for agencies",
"compare CRM features"
],
"sitemapTotalUrls": 500,
"sitemapCrawledUrls": 412,
"createdAt": "2026-03-28T12:00:00.000Z",
"recommendations": [
{
"id": "6ba7b827-9dad-11d1-80b4-00c04fd430c8",
"title": "Add integration comparison table",
"action": "CREATE",
"details": "Illustrative recommendation body.",
"priority": 1,
"impact": "HIGH",
"effort": "MODERATE",
"contentType": "ARTICLE",
"queryFanouts": [
"crm integrations"
],
"suggestedSections": [
"Overview",
"FAQ"
],
"targetSources": [
{
"url": "https://competitor.example/compare",
"title": "Competitor page",
"snippet": "Illustrative."
}
]
}
]
}{
"error": "Unauthorized",
"message": "Missing or invalid X-API-Key header."
}{
"code": "CONTENT_GAP_PROMPT_NOT_FOUND",
"message": "Prompt not found"
}{
"code": "CONTENT_GAP_PROMPT_NOT_FOUND",
"message": "Prompt not found"
}Content Gap
Latest Content Coverage
Get the latest content coverage result for a prompt. Returns null if the prompt exists but has no content coverage yet.
GET
/
content-gap
/
prompts
/
{promptId}
/
latest
Latest Content Coverage
curl --request GET \
--url https://server.promptwatch.com/api/v2/content-gap/prompts/{promptId}/latest \
--header 'X-API-Key: <api-key>'import requests
url = "https://server.promptwatch.com/api/v2/content-gap/prompts/{promptId}/latest"
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://server.promptwatch.com/api/v2/content-gap/prompts/{promptId}/latest', 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://server.promptwatch.com/api/v2/content-gap/prompts/{promptId}/latest",
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://server.promptwatch.com/api/v2/content-gap/prompts/{promptId}/latest"
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://server.promptwatch.com/api/v2/content-gap/prompts/{promptId}/latest")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.promptwatch.com/api/v2/content-gap/prompts/{promptId}/latest")
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{
"id": "6ba7b826-9dad-11d1-80b4-00c04fd430c8",
"contentCoverageScore": 0.64,
"explanation": "Illustrative: key product claims are partially supported on-site.",
"report": "## Coverage summary\n\nExample markdown sections only.",
"sources": [
{
"url": "https://docs.example.com/security",
"title": "Security overview",
"snippet": "Illustrative snippet text."
}
],
"queryFanouts": [
"crm for agencies",
"compare CRM features"
],
"sitemapTotalUrls": 500,
"sitemapCrawledUrls": 412,
"createdAt": "2026-03-28T12:00:00.000Z",
"recommendations": [
{
"id": "6ba7b827-9dad-11d1-80b4-00c04fd430c8",
"title": "Add integration comparison table",
"action": "CREATE",
"details": "Illustrative recommendation body.",
"priority": 1,
"impact": "HIGH",
"effort": "MODERATE",
"contentType": "ARTICLE",
"queryFanouts": [
"crm integrations"
],
"suggestedSections": [
"Overview",
"FAQ"
],
"targetSources": [
{
"url": "https://competitor.example/compare",
"title": "Competitor page",
"snippet": "Illustrative."
}
]
}
]
}{
"error": "Unauthorized",
"message": "Missing or invalid X-API-Key header."
}{
"code": "CONTENT_GAP_PROMPT_NOT_FOUND",
"message": "Prompt not found"
}{
"code": "CONTENT_GAP_PROMPT_NOT_FOUND",
"message": "Prompt not found"
}Authorizations
API key for authentication. Get yours from the Promptwatch dashboard under Settings > API Keys.
Path Parameters
Prompt identifier
Response
object | null
Default Response
Coverage run identifier
Aggregate coverage score
Plain-language summary
Markdown report body
Cited URLs from analysis
Show child attributes
Show child attributes
Expanded queries used in analysis
URLs in sitemap at run time
URLs crawled for this run
When this run completed
Structured recommendations
Show child attributes
Show child attributes
⌘I