---
title: "Per-prompt performance"
method: GET
path: "/org/analytics/prompts"
tags: ["Analytics"]
---

# Per-prompt performance

`GET /org/analytics/prompts`

## Request

- Base URL: `https://apiv2.senso.ai/api/v1`
- URL: `https://apiv2.senso.ai/api/v1/org/analytics/prompts`
- Auth: API key in header `X-API-Key`

Each tracking prompt's window performance — mention rate, Share of Voice, average rank, primary citation rate, and a snapshot of its latest answers. Sortable to surface the prompts where you are invisible. Paged. Requires the GEO product.

## Query parameters

- `from` string, date
- `to` string, date
- `models` string
- `location` string
- `prompt_type` 'awareness' | 'consideration' | 'evaluation' | 'decision'
- `tag` string
- `search` string
- `sort` 'mention_rate' | 'share_of_voice' | 'citations' | 'answered' | 'text'
- `order` 'asc' | 'desc'
- `limit` integer
- `offset` integer

## Response `200`

The paged per-prompt performance table.

- OrgPromptPerformanceResponse: The paged per-prompt performance table.
  - `window` AnalyticsWindow, required: The effective window every number in the payload was computed over.
    - `from` string, date, required: First day in the window (inclusive).
    - `to` string, date, required: Last day in the window (inclusive).
    - `days` integer, required: Number of days spanned, inclusive.
    - `latest_data_day` string, date, nullable, required: Most recent day with data for the active model/location filter, or null if none.
  - `totals` AnalyticsTotals, required: The additive count block — every numerator and denominator behind the metrics, summed over the window and filter. All are additive, so they can be recombined across windows; ratios cannot.
    - `run_count` integer, required: Prompt-run answers attempted.
    - `answered_count` integer, required: Non-empty answers — the mention-rate denominator.
    - `mentioned_count` integer, required: Answers naming the org (mention-rate numerator).
    - `mention_total` integer, required: Mention instances for the org (Share of Voice numerator).
    - `tracked_mention_total` integer, required: Mention instances over {org + tracked competitors}. NOT the Share of Voice denominator.
    - `brand_mention_total` integer, required: Mention instances over ALL brands — the Share of Voice denominator.
    - `rank_sum` integer, required: Σ ordinal position over mentioned answers (avg-rank numerator).
    - `sentiment` SentimentCounts, required: The mention-sentiment split. positive + neutral + negative = mentioned_count.
      - `positive` integer, required
      - `neutral` integer, required
      - `negative` integer, required
    - `cited_run_count` integer, required: Answers with ≥1 citation of any tier — this is D, the Citation Rate and Coverage denominator.
    - `primary_cited_run_count` integer, required: Answers citing an owned domain.
    - `tracked_cited_run_count` integer, required: Answers citing a tracked source.
    - `external_cited_run_count` integer, required: Answers citing a third-party domain.
    - `cited_total` integer, required: Total citation instances, all tiers — this is S, the Citation Share denominator.
    - `primary_cited_total` integer, required: Citation instances pointing at an owned domain.
    - `tracked_cited_total` integer, required: Citation instances pointing at a tracked source.
    - `external_cited_total` integer, required: Citation instances pointing at a third-party domain.
    - `prompt_count` integer, required: Distinct prompts contributing to the window.
    - `model_count` integer, required: Distinct models contributing to the window.
    - `location_count` integer, required: Distinct locations contributing to the window.
  - `metrics` AnalyticsMetrics, required: Every ratio derivable from the totals. Each is null when its denominator is zero. Tier RATES divide by D and are independent (can sum past 100%); tier SHARES divide by S and partition (sum to exactly 100%).
    - `mention_rate` MetricValue, nullable, required: A ratio, shipped as an unrounded fraction plus a ready-to-quote string. Use `value` for math and `display` verbatim for anything a human reads — it is why `0.012` never reaches a slide as "0.012%". `value` is a 0–1 fraction for rates and shares, an average position for ranks, and an intensity for frequencies. Wherever a field of this shape is nullable, `null` means the metric's denominator was zero, so the metric was **not measured** in this window; it never means the metric was measured as zero.
      - `value` number, required: The raw number for math — a 0–1 fraction for rates/shares, an average position for ranks, an intensity for frequencies.
      - `display` string, required: The presentation string, safe to quote verbatim (e.g. "2.6%", "#1.4", "4.20 citations per cited answer").
    - `share_of_voice` MetricValue, nullable, required: A ratio, shipped as an unrounded fraction plus a ready-to-quote string. Use `value` for math and `display` verbatim for anything a human reads — it is why `0.012` never reaches a slide as "0.012%". `value` is a 0–1 fraction for rates and shares, an average position for ranks, and an intensity for frequencies. Wherever a field of this shape is nullable, `null` means the metric's denominator was zero, so the metric was **not measured** in this window; it never means the metric was measured as zero.
      - `value` number, required: The raw number for math — a 0–1 fraction for rates/shares, an average position for ranks, an intensity for frequencies.
      - `display` string, required: The presentation string, safe to quote verbatim (e.g. "2.6%", "#1.4", "4.20 citations per cited answer").
    - `avg_rank` MetricValue, nullable, required: A ratio, shipped as an unrounded fraction plus a ready-to-quote string. Use `value` for math and `display` verbatim for anything a human reads — it is why `0.012` never reaches a slide as "0.012%". `value` is a 0–1 fraction for rates and shares, an average position for ranks, and an intensity for frequencies. Wherever a field of this shape is nullable, `null` means the metric's denominator was zero, so the metric was **not measured** in this window; it never means the metric was measured as zero.
      - `value` number, required: The raw number for math — a 0–1 fraction for rates/shares, an average position for ranks, an intensity for frequencies.
      - `display` string, required: The presentation string, safe to quote verbatim (e.g. "2.6%", "#1.4", "4.20 citations per cited answer").
    - `primary_citation_rate` MetricValue, nullable, required: A ratio, shipped as an unrounded fraction plus a ready-to-quote string. Use `value` for math and `display` verbatim for anything a human reads — it is why `0.012` never reaches a slide as "0.012%". `value` is a 0–1 fraction for rates and shares, an average position for ranks, and an intensity for frequencies. Wherever a field of this shape is nullable, `null` means the metric's denominator was zero, so the metric was **not measured** in this window; it never means the metric was measured as zero.
      - `value` number, required: The raw number for math — a 0–1 fraction for rates/shares, an average position for ranks, an intensity for frequencies.
      - `display` string, required: The presentation string, safe to quote verbatim (e.g. "2.6%", "#1.4", "4.20 citations per cited answer").
    - `tracked_citation_rate` MetricValue, nullable, required: A ratio, shipped as an unrounded fraction plus a ready-to-quote string. Use `value` for math and `display` verbatim for anything a human reads — it is why `0.012` never reaches a slide as "0.012%". `value` is a 0–1 fraction for rates and shares, an average position for ranks, and an intensity for frequencies. Wherever a field of this shape is nullable, `null` means the metric's denominator was zero, so the metric was **not measured** in this window; it never means the metric was measured as zero.
      - `value` number, required: The raw number for math — a 0–1 fraction for rates/shares, an average position for ranks, an intensity for frequencies.
      - `display` string, required: The presentation string, safe to quote verbatim (e.g. "2.6%", "#1.4", "4.20 citations per cited answer").
    - `external_citation_rate` MetricValue, nullable, required: A ratio, shipped as an unrounded fraction plus a ready-to-quote string. Use `value` for math and `display` verbatim for anything a human reads — it is why `0.012` never reaches a slide as "0.012%". `value` is a 0–1 fraction for rates and shares, an average position for ranks, and an intensity for frequencies. Wherever a field of this shape is nullable, `null` means the metric's denominator was zero, so the metric was **not measured** in this window; it never means the metric was measured as zero.
      - `value` number, required: The raw number for math — a 0–1 fraction for rates/shares, an average position for ranks, an intensity for frequencies.
      - `display` string, required: The presentation string, safe to quote verbatim (e.g. "2.6%", "#1.4", "4.20 citations per cited answer").
    - `primary_citation_share` MetricValue, nullable, required: A ratio, shipped as an unrounded fraction plus a ready-to-quote string. Use `value` for math and `display` verbatim for anything a human reads — it is why `0.012` never reaches a slide as "0.012%". `value` is a 0–1 fraction for rates and shares, an average position for ranks, and an intensity for frequencies. Wherever a field of this shape is nullable, `null` means the metric's denominator was zero, so the metric was **not measured** in this window; it never means the metric was measured as zero.
      - `value` number, required: The raw number for math — a 0–1 fraction for rates/shares, an average position for ranks, an intensity for frequencies.
      - `display` string, required: The presentation string, safe to quote verbatim (e.g. "2.6%", "#1.4", "4.20 citations per cited answer").
    - `tracked_citation_share` MetricValue, nullable, required: A ratio, shipped as an unrounded fraction plus a ready-to-quote string. Use `value` for math and `display` verbatim for anything a human reads — it is why `0.012` never reaches a slide as "0.012%". `value` is a 0–1 fraction for rates and shares, an average position for ranks, and an intensity for frequencies. Wherever a field of this shape is nullable, `null` means the metric's denominator was zero, so the metric was **not measured** in this window; it never means the metric was measured as zero.
      - `value` number, required: The raw number for math — a 0–1 fraction for rates/shares, an average position for ranks, an intensity for frequencies.
      - `display` string, required: The presentation string, safe to quote verbatim (e.g. "2.6%", "#1.4", "4.20 citations per cited answer").
    - `external_citation_share` MetricValue, nullable, required: A ratio, shipped as an unrounded fraction plus a ready-to-quote string. Use `value` for math and `display` verbatim for anything a human reads — it is why `0.012` never reaches a slide as "0.012%". `value` is a 0–1 fraction for rates and shares, an average position for ranks, and an intensity for frequencies. Wherever a field of this shape is nullable, `null` means the metric's denominator was zero, so the metric was **not measured** in this window; it never means the metric was measured as zero.
      - `value` number, required: The raw number for math — a 0–1 fraction for rates/shares, an average position for ranks, an intensity for frequencies.
      - `display` string, required: The presentation string, safe to quote verbatim (e.g. "2.6%", "#1.4", "4.20 citations per cited answer").
    - `citations_per_answer` MetricValue, nullable, required: A ratio, shipped as an unrounded fraction plus a ready-to-quote string. Use `value` for math and `display` verbatim for anything a human reads — it is why `0.012` never reaches a slide as "0.012%". `value` is a 0–1 fraction for rates and shares, an average position for ranks, and an intensity for frequencies. Wherever a field of this shape is nullable, `null` means the metric's denominator was zero, so the metric was **not measured** in this window; it never means the metric was measured as zero.
      - `value` number, required: The raw number for math — a 0–1 fraction for rates/shares, an average position for ranks, an intensity for frequencies.
      - `display` string, required: The presentation string, safe to quote verbatim (e.g. "2.6%", "#1.4", "4.20 citations per cited answer").
  - `total` integer, required: Total prompts matching the filter, across all pages.
  - `limit` integer, required: The page size that was applied.
  - `offset` integer, required: The row offset that was applied.
  - `prompts` PromptPerformanceItem[], required
    - `prompt_id` string, required: The prompt's id.
    - `prompt_text` string, required: The prompt text.
    - `prompt_type` string, required: The prompt's funnel stage, canonicalized — typically `awareness`, `consideration`, `evaluation`, or `decision`. A non-standard stored type is echoed lowercased.
    - `tags` string[], required
    - `run_count` integer, required: Answers attempted for this prompt in the window.
    - `answered_count` integer, required: Non-empty answers for this prompt — this row's `mention_rate` denominator.
    - `mentioned_count` integer, required: Answers to this prompt that named your brand.
    - `mention_total` integer, required: Mention instances for your brand on this prompt.
    - `tracked_mention_total` integer, required: Mention instances across you plus tracked competitors on this prompt. A raw count for your own math — not this row's `share_of_voice` denominator.
    - `brand_mention_total` integer, required: Mention instances across all brands on this prompt — this row's `share_of_voice` denominator.
    - `rank_sum` integer, required: Sum of your ordinal positions over the answers to this prompt that mentioned you.
    - `sentiment` SentimentCounts, required: The mention-sentiment split. positive + neutral + negative = mentioned_count.
      - `positive` integer, required
      - `neutral` integer, required
      - `negative` integer, required
    - `cited_run_count` integer, required: This prompt's `D` — its answers carrying at least one citation of any tier.
    - `primary_cited_run_count` integer, required: This prompt's answers carrying at least one Owned-tier citation. The numerator of `primary_citation_rate`.
    - `mention_rate` MetricValue, nullable, required: A ratio, shipped as an unrounded fraction plus a ready-to-quote string. Use `value` for math and `display` verbatim for anything a human reads — it is why `0.012` never reaches a slide as "0.012%". `value` is a 0–1 fraction for rates and shares, an average position for ranks, and an intensity for frequencies. Wherever a field of this shape is nullable, `null` means the metric's denominator was zero, so the metric was **not measured** in this window; it never means the metric was measured as zero.
      - `value` number, required: The raw number for math — a 0–1 fraction for rates/shares, an average position for ranks, an intensity for frequencies.
      - `display` string, required: The presentation string, safe to quote verbatim (e.g. "2.6%", "#1.4", "4.20 citations per cited answer").
    - `share_of_voice` MetricValue, nullable, required: A ratio, shipped as an unrounded fraction plus a ready-to-quote string. Use `value` for math and `display` verbatim for anything a human reads — it is why `0.012` never reaches a slide as "0.012%". `value` is a 0–1 fraction for rates and shares, an average position for ranks, and an intensity for frequencies. Wherever a field of this shape is nullable, `null` means the metric's denominator was zero, so the metric was **not measured** in this window; it never means the metric was measured as zero.
      - `value` number, required: The raw number for math — a 0–1 fraction for rates/shares, an average position for ranks, an intensity for frequencies.
      - `display` string, required: The presentation string, safe to quote verbatim (e.g. "2.6%", "#1.4", "4.20 citations per cited answer").
    - `avg_rank` MetricValue, nullable, required: A ratio, shipped as an unrounded fraction plus a ready-to-quote string. Use `value` for math and `display` verbatim for anything a human reads — it is why `0.012` never reaches a slide as "0.012%". `value` is a 0–1 fraction for rates and shares, an average position for ranks, and an intensity for frequencies. Wherever a field of this shape is nullable, `null` means the metric's denominator was zero, so the metric was **not measured** in this window; it never means the metric was measured as zero.
      - `value` number, required: The raw number for math — a 0–1 fraction for rates/shares, an average position for ranks, an intensity for frequencies.
      - `display` string, required: The presentation string, safe to quote verbatim (e.g. "2.6%", "#1.4", "4.20 citations per cited answer").
    - `primary_citation_rate` MetricValue, nullable, required: A ratio, shipped as an unrounded fraction plus a ready-to-quote string. Use `value` for math and `display` verbatim for anything a human reads — it is why `0.012` never reaches a slide as "0.012%". `value` is a 0–1 fraction for rates and shares, an average position for ranks, and an intensity for frequencies. Wherever a field of this shape is nullable, `null` means the metric's denominator was zero, so the metric was **not measured** in this window; it never means the metric was measured as zero.
      - `value` number, required: The raw number for math — a 0–1 fraction for rates/shares, an average position for ranks, an intensity for frequencies.
      - `display` string, required: The presentation string, safe to quote verbatim (e.g. "2.6%", "#1.4", "4.20 citations per cited answer").
    - `latest` PromptLatestSnapshot, nullable, required: A summary of the most recent answers for a prompt — the "right now" figure, distinct from the window aggregates on the row it hangs off.
      - `run_at` string, date-time, nullable, required: When the latest answers were collected, or null if none.
      - `answer_count` integer, required: Number of latest answers summarized.
      - `mentioned_count` integer, required: How many of them mentioned your brand.
      - `models` string[], required: The models behind those latest answers.
      - `share_of_voice` MetricValue, nullable, required: A ratio, shipped as an unrounded fraction plus a ready-to-quote string. Use `value` for math and `display` verbatim for anything a human reads — it is why `0.012` never reaches a slide as "0.012%". `value` is a 0–1 fraction for rates and shares, an average position for ranks, and an intensity for frequencies. Wherever a field of this shape is nullable, `null` means the metric's denominator was zero, so the metric was **not measured** in this window; it never means the metric was measured as zero.
        - `value` number, required: The raw number for math — a 0–1 fraction for rates/shares, an average position for ranks, an intensity for frequencies.
        - `display` string, required: The presentation string, safe to quote verbatim (e.g. "2.6%", "#1.4", "4.20 citations per cited answer").
  - `data_quality` DataQuality, required: Deterministic sample-quality flag driven by the answered-run count.
    - `level` 'high' | 'medium' | 'low', required: low (<100 answered runs), medium (<400), high otherwise.
    - `answered_count` integer, required: The answered-run count the flag was derived from.
    - `reasons` string[], required: Human-readable caveats when confidence is below high; empty otherwise.
  - `notes` string[], required
  - `definitions` object, required: One-line definition of each metric in the payload, keyed by metric name.

## Other responses

- `400`: The request was malformed — a bad path/query parameter or an invalid value.
- `401`: Missing or invalid credentials — supply a valid org API key in the `X-API-Key` header.
- `403`: The API key is authenticated but not permitted to access this resource.

---

[API](https://skmtc.dev/senso/apis/senso-org-api.md) - [All operations](https://skmtc.dev/senso/apis/senso-org-api/llms.txt) - [OpenAPI document](https://skmtc.dev/senso/apis/senso-org-api/revisions/d789b4fcbe84?raw)
