---
title: "Prompt detail"
method: GET
path: "/org/analytics/prompts/{promptId}"
tags: ["Analytics"]
---

# Prompt detail

`GET /org/analytics/prompts/{promptId}`

## Request

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

One prompt end to end — its metric history over the window plus, unless suppressed, the latest full answers from every model × location. Requires the GEO product.

## Path parameters

- `promptId` string, uuid, required

## Query parameters

- `from` string, date
- `to` string, date
- `models` string
- `location` string
- `prompt_type` 'awareness' | 'consideration' | 'evaluation' | 'decision'
- `tag` string
- `include_answers` boolean

## Response `200`

The prompt's history and latest answers.

- OrgAnalyticsPromptDetailResponse: One prompt's metric history plus its latest full answers.
  - `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
  - `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").
  - `series` MentionSeriesPoint[], required: Daily visibility counts and ratios for this prompt, oldest first — the only record of what happened earlier in the window, and counts only, never answer text. Days with no data are absent rather than zero-filled.
    - `period_start` string, date, required: First day of the bucket (day or ISO week).
    - `run_count` integer, required: Prompt-run answers attempted in this bucket.
    - `answered_count` integer, required: Non-empty answers in this bucket — the `mention_rate` denominator for this bucket.
    - `mentioned_count` integer, required: Answers in this bucket that named your brand.
    - `mention_total` integer, required: Mention instances for your brand in this bucket.
    - `tracked_mention_total` integer, required: Mention instances across you plus tracked competitors in this bucket. A raw count for your own math — not this bucket's `share_of_voice` denominator.
    - `brand_mention_total` integer, required: Mention instances across all brands — this bucket's `share_of_voice` denominator.
    - `rank_sum` integer, required: Sum of your ordinal positions over the answers in this bucket that mentioned you.
    - `sentiment` SentimentCounts, required: The mention-sentiment split. positive + neutral + negative = mentioned_count.
      - `positive` integer, required
      - `neutral` integer, required
      - `negative` integer, required
    - `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").
  - `latest_answers` LatestAnswerItem[], required: The latest full answers per model × location. Empty when include_answers=false.
    - `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.
    - `provider` string, required: The model provider.
    - `model` string, required: The model identifier.
    - `location` string, required: The location the answer was collected for.
    - `run_at` string, date-time, required: When the answer was collected.
    - `response_text` string, required: The model's full answer text.
    - `empty` boolean, required: Whether the model returned an empty answer.
    - `mentioned` boolean, required: Whether the answer named your brand.
    - `rank` integer, nullable, required: Your brand's ordinal position in the answer (1 = named first), or null if not mentioned.
    - `sentiment` string, nullable, required: Mention sentiment — `positive`, `neutral`, or `negative` — or null if not mentioned.
    - `sov_pct` number, nullable, required: Your share of brand mentions within this single answer, as a percentage (0–100), or null if not applicable.
    - `citations` AnswerCitation[], required
      - `url` string, required: The cited URL.
      - `domain` string, required: The cited URL's domain.
      - `citation_type` string, required: Its citation tier — one of `primary`, `tracked`, or `secondary`.
    - `competitor_mentions` object, required: Mention counts within this answer for your tracked competitors, keyed by competitor name.
    - `has_primary_citation` boolean, required: Whether the answer cited an owned domain.
    - `has_tracked_citation` boolean, required: Whether the answer cited a tracked source.
    - `has_external_citation` boolean, required: Whether the answer cited a third-party domain.
  - `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.
- `404`: The requested resource does not exist or is not visible to this key.

---

[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)
