---
title: "Cited domains"
method: GET
path: "/org/analytics/citations/domains"
tags: ["Analytics"]
---

# Cited domains

`GET /org/analytics/citations/domains`

## Request

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

The cited-domain landscape for the window: each domain's tier, its Citation Coverage (÷D) and Citation Share (÷S), and its rank by citations. Paged. Requires the GEO product.

## Query parameters

- `from` string, date
- `to` string, date
- `models` string
- `location` string
- `prompt_type` 'awareness' | 'consideration' | 'evaluation' | 'decision'
- `tier` 'primary' | 'tracked' | 'secondary': A cited URL's classification tier — `primary` (Owned: one of your own websites), `tracked` (Tracked: one of your configured tracked sources), or `secondary` (External: any other domain). The tiers partition citations, so every cited URL falls in exactly one of them.
- `sort` 'citations' | 'coverage'
- `domain_contains` string
- `limit` integer
- `offset` integer

## Response `200`

The paged cited-domain landscape.

- OrgCitationDomainsResponse: The paged cited-domain landscape.
  - `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.
  - `denominators` CitationDenominatorBlock, required: The two citation denominators exposed on the source-grain endpoints.
    - `cited_run_count` integer, required: D — answers carrying ≥1 citation of any tier.
    - `cited_total` integer, required: S — total citation instances, all tiers.
    - `unique_domains` integer: Distinct cited domains matching the active filter (present on the domains endpoint).
    - `unique_pages` integer: Distinct cited pages in the window (present on the pages endpoint).
  - `total` integer, required: Total domains matching the filter, across all pages.
  - `limit` integer, required: The page size that was applied.
  - `offset` integer, required: The row offset that was applied.
  - `domains` CitedDomainItem[], required
    - `domain` string, required: The cited domain.
    - `tier` string, required: Its citation tier — one of `primary`, `tracked`, or `secondary`.
    - `tier_label` string, required: The product-facing tier name — `Owned`, `Tracked`, or `External`.
    - `cited_run_count` integer, required: Distinct answers citing this domain.
    - `cited_total` integer, required: Citation instances for this domain.
    - `citation_coverage` 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").
    - `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").
    - `avg_citation_rank` number, nullable, required: Mean citation position across the answers citing it (answer grain); null when no citation-rank data was recorded.
    - `rank_by_citations` integer, required: The domain's 1-based position in the returned ordering — by citation instances by default, or by coverage when sort=coverage.
  - `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)
