AnalyticsMentions Time Series

Mentions Time Series

Daily count of LLM responses that mentioned a tracked brand.

curl --request GET \
  --url 'https://api.aiclicks.io/api/v1/mentions-time-series?domain_id=8f1d3c0a-2f9b-4c11-9b80-7a82e1f0c3f3&days=30' \
  --header 'Authorization: Bearer ak_live_xxx'
{
  "data": {
    "items": [
      { "date": "2026-05-19", "value": 7 },
      { "date": "2026-05-20", "value": 11 },
      { "date": "2026-05-21", "value": 0 }
    ]
  },
  "domain_id": "8f1d3c0a-2f9b-4c11-9b80-7a82e1f0c3f3",
  "days": 30,
  "generated_at": "2026-06-17T10:00:11.218Z"
}

Mentions is the number of responses that mentioned the brand on a given day, summed across every model channel.

value = sum over models of COUNT(responses where response.mentions > 0)

A response that names the brand five times still counts as one — the unit is response-presence, not raw mention frequency. A response that doesn't name the brand contributes zero. This matches the Mentions chart on the prompts page, so the daily values reconcile.

domain_id is a required query parameter. Use GET /api/v1/domains to discover which domains the calling key can access.

Authorizations

header
Authorizationstring
Required

Your API key formatted as Bearer ak_live_<your-key>. Create one in the dashboard under Settings → Developers.

header
X-Request-Idstring

Optional UUID for log correlation. If omitted, we generate one and echo it back in the response.

Query parameters

query
domain_idstring
Required

UUID of the domain. Find domains via GET /api/v1/domains. Omitting this returns 400.

query
daysinteger

Look-back window, 1–365. Defaults to 30. Snapped to the nearest known bucket: 1, 7, 14, 30, 90, 180, 270, or 365 days.

Response

dataobject
Required

The list payload.

data.itemsarray
Required

One row per day with responses in the window, oldest first.

domain_idstring
Required

Echo of the requested domain.

daysinteger
Required

Echo of the requested window.

generated_atstring
Required

ISO-8601 timestamp of when the server produced (or cached) this response.

Response headers

HeaderDescription
X-CacheHIT or MISS. Indicates whether the response came from cache.
X-Request-IdUnique request id. Echoes incoming if you set one.
X-RateLimit-LimitMax requests per minute for this key.
X-RateLimit-RemainingRequests remaining in current minute.
X-RateLimit-ResetUnix epoch seconds when the window resets.

Caching

Cached for 1 hour per (domain_id, days). Newly completed analyses appear after the TTL expires.

How mentions is calculated

For each (date, model) in the window:

  1. Take every response that ran on a tracked prompt at that date and model.
  2. Count the responses where mentions > 0.

Then sum those per-model counts within each date — that's the day's value. The metric is presence-based: a response with five brand mentions and a response with one both contribute 1.

The denominator (total responses that ran) is available indirectly via GET /visibility-time-series, which divides this presence count by total responses to produce a percentage.

Errors

400 Bad Requesterror

domain_id query parameter missing. Body points you at /api/v1/domains.

401 Unauthorizederror

Missing, malformed, or revoked API key.

403 Forbiddenerror

Team's developer_access flag is off, the domain belongs to a team your API key is not scoped to, or your allowed_domains allowlist excludes it.

404 Not Founderror

domain_id is malformed, does not exist, or your user is not a member of its team.

429 Too Many Requestserror

Rate limit exceeded. Inspect the Retry-After header for how long to wait.

Empty result

If no analyses ran in the window, the response is a successful 200 with an empty list:

{
  "data": { "items": [] },
  "domain_id": "8f1d3c0a-2f9b-4c11-9b80-7a82e1f0c3f3",
  "days": 30,
  "generated_at": "2026-06-17T10:00:11.218Z"
}