Prompt statistics
Per-prompt performance over time — the top tracked prompts by mentions, each with a daily series of mentions, responses, and average position.
curl --request GET \
--url 'https://api.aiclicks.io/api/v1/prompt-statistics-time-series?domain_id=8f1d3c0a-2f9b-4c11-9b80-7a82e1f0c3f3&days=30&limit=25' \
--header 'Authorization: Bearer ak_live_xxx'
import httpx, os
resp = httpx.get(
"https://api.aiclicks.io/api/v1/prompt-statistics-time-series",
params={"domain_id": "8f1d3c0a-2f9b-4c11-9b80-7a82e1f0c3f3", "days": 30, "limit": 25},
headers={"Authorization": f"Bearer {os.environ['AICLICKS_API_KEY']}"},
)
resp.raise_for_status()
for p in resp.json()["data"]["items"]:
total = sum(d["mentions"] for d in p["series"])
print(f"{total:>5} {p['text']}")
const url = new URL("https://api.aiclicks.io/api/v1/prompt-statistics-time-series");
url.searchParams.set("domain_id", "8f1d3c0a-2f9b-4c11-9b80-7a82e1f0c3f3");
url.searchParams.set("days", "30");
url.searchParams.set("limit", "25");
const resp = await fetch(url, {
headers: { Authorization: `Bearer ${process.env.AICLICKS_API_KEY}` },
});
const { data } = await resp.json();
for (const p of data.items) console.log(p.text, p.series);
{
"data": {
"items": [
{
"id": "3b7c1e90-1a2b-4c3d-9e4f-5a6b7c8d9e0f",
"text": "best ai search visibility tools",
"estimated_search_volume": 8100,
"series": [
{ "date": "2026-06-01", "mentions": 10, "responses": 20, "citations": 6, "avg_position": 2.0 },
{ "date": "2026-06-02", "mentions": 12, "responses": 21, "citations": 8, "avg_position": 1.8 }
]
},
{
"id": "9f0e1d2c-3b4a-5968-8776-1a2b3c4d5e6f",
"text": "chatgpt seo alternatives",
"estimated_search_volume": null,
"series": [
{ "date": "2026-06-01", "mentions": 4, "responses": 18, "citations": 0, "avg_position": null }
]
}
]
},
"domain_id": "8f1d3c0a-2f9b-4c11-9b80-7a82e1f0c3f3",
"days": 30,
"limit": 25,
"generated_at": "2026-07-13T10:00:11.218Z"
}
{ "detail": "domain_id query parameter is required. List the domains this key can access with GET /api/v1/domains, then pass ?domain_id=<uuid>." }
{ "detail": "Invalid or revoked API key" }
{ "detail": "API access is not enabled for this team. Contact support@aiclicks.io." }
{ "detail": "Too many requests. Please try again later." }
Which of the brand's tracked prompts are winning or losing visibility, and how each moves day by day. Returns the top limit prompts ranked by total mentions over the window; each prompt carries its estimated_search_volume and a daily series of mentions, responses, citations, and avg_position. Use it for "which prompts gained or dropped the most this month?" and to spot a single prompt driving an overall visibility swing.
domain_id is a required query parameter. Use GET /api/v1/domains to discover which domains the calling key can access.
Authorizations
Your API key formatted as Bearer ak_live_<your-key>. Create one in the dashboard under Settings → Developers.
Optional UUID for log correlation. If omitted, we generate one and echo it back in the response.
Query parameters
UUID of the domain. Find domains via GET /api/v1/domains. Omitting this returns 400.
Trailing look-back window, 1–365. Defaults to 30.
How many prompts to return, 1–100. Defaults to 25. Prompts are ranked by total mentions across the window, descending.
Response
The list payload.
One entry per prompt, ranked by total mentions descending, capped at limit.
Prompt UUID. Matches the id from GET /api/v1/prompts.
The prompt text.
Estimated monthly search volume for the prompt (a static per-prompt attribute, same value as GET /api/v1/prompts). null if not yet computed.
Daily datapoints, sorted by date ascending.
Echo of the requested domain.
Echo of the requested window.
Echo of the requested cap.
ISO-8601 timestamp of when the server produced (or cached) this response.
Response headers
| Header | Description |
|---|---|
X-Cache | HIT or MISS. Whether the response came from cache. |
X-Request-Id | Unique request id. Echoes incoming if you set one. |
X-RateLimit-Limit | Max requests per minute for this key. |
X-RateLimit-Remaining | Requests remaining in the current minute. |
X-RateLimit-Reset | Unix epoch seconds when the window resets. |
Empty result
If no prompts had mentions in the window, items is an empty list with a 200.
{
"data": { "items": [] },
"domain_id": "8f1d3c0a-2f9b-4c11-9b80-7a82e1f0c3f3",
"days": 30,
"limit": 25,
"generated_at": "2026-07-13T10:00:11.218Z"
}