---
title: "Stream Citations"
method: POST
path: "/v1/reports/citations/stream"
tags: ["Reports", "Reports"]
---

# Stream Citations

`POST /v1/reports/citations/stream`

## Request body

- StreamCitationsQuery
  - `date_interval` 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year' | 'relative_week' — Date interval for the report. (only used with date dimension)
  - `dimensions` string[] — Dimensions to group the report by.
  - `metrics` string[], required — Metrics to include. `share_of_voice` is deprecated, use `citation_share` instead.
  - `order_by` object — Custom ordering of the report results. The order is a record of key-value pairs where: - `key` is the field to order by, which can be a metric or dimension - `value` is the direction of the order, either `asc` for ascending or `desc` for descending. When not specified, the default order is the first metric in the query descending.
  - `pagination` Pagination — Offset-based pagination parameters.
    - `limit` integer — Maximum number of results to return. Default is 10,000, maximum is 50,000.
    - `offset` integer — Offset for the results. Used for pagination.
  - `category_id` string, uuid, required
  - `start_date` string, date-time, required — Start date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD HH:MM, or full ISO timestamp.
  - `end_date` string, date-time, required — End date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD HH:MM, or full ISO timestamp.
  - `filters` union[] — List of filters to apply to the citations report.
    - union
      - HostnameFilter — Filter by hostname
        - `field` 'hostname', required
        - `operator` 'is' | 'not_is' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'matches' | 'contains_case_insensitive' | 'not_contains_case_insensitive', required
        - `value` union, required
          - string
          - string[]
      - PathFilter — Filter by request path
        - `field` 'path', required
        - `operator` 'is' | 'not_is' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'matches' | 'contains_case_insensitive' | 'not_contains_case_insensitive', required
        - `value` union, required
          - string
          - string[]
      - RegionIdFilter — Filter by region UUID.
        - `field` union, required
          - 'region_id'
          - 'region'
        - `operator` 'is' | 'not_is' | 'in' | 'not_in', required
        - `value` union, required
          - string, uuid
          - string[]
      - RegionNameFilter — Filter by region name.
        - `field` 'region_name', required
        - `operator` 'is' | 'not_is' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'matches' | 'contains_case_insensitive' | 'not_contains_case_insensitive', required
        - `value` union, required
          - string
          - string[]
      - TopicIdFilter — Filter by topic UUID.
        - `field` union, required
          - 'topic_id'
          - 'topic'
        - `operator` 'is' | 'not_is' | 'in' | 'not_in', required
        - `value` union, required
          - string, uuid
          - string[]
      - TopicNameFilter — Filter by topic name
        - `field` 'topic_name', required
        - `operator` 'is' | 'not_is' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'matches' | 'contains_case_insensitive' | 'not_contains_case_insensitive', required
        - `value` union, required
          - string
          - string[]
      - ModelIdFilter — Filter by AI model/platform UUID.
        - `field` union, required
          - 'model_id'
          - 'model'
        - `operator` 'is' | 'not_is' | 'in' | 'not_in', required
        - `value` union, required
          - string, uuid
          - string[]
      - TagIdFilter — Filter by tag (prompt group) UUID.
        - `field` union, required
          - 'tag_id'
          - 'tag'
        - `operator` 'is' | 'not_is' | 'in' | 'not_in', required
        - `value` union, required
          - string, uuid
          - string[]
      - TagNameFilter — Filter by tag name.
        - `field` 'tag_name', required
        - `operator` 'is' | 'not_is' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'matches' | 'contains_case_insensitive' | 'not_contains_case_insensitive', required
        - `value` union, required
          - string
          - string[]
      - UrlFilter — Filter by URL
        - `field` 'url', required
        - `operator` 'is' | 'not_is' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'matches' | 'contains_case_insensitive' | 'not_contains_case_insensitive', required
        - `value` union, required
          - string
          - string[]
      - RootDomainFilter — Filter by root domain
        - `field` 'root_domain', required
        - `operator` 'is' | 'not_is' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'matches' | 'contains_case_insensitive' | 'not_contains_case_insensitive', required
        - `value` union, required
          - string
          - string[]
      - AnalysisTypeFilter — Filter by analysis type (visibility, sentiment, or accuracy).
        - `field` 'analysis_type', required
        - `operator` 'is' | 'not_is' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'matches' | 'contains_case_insensitive' | 'not_contains_case_insensitive', required
        - `value` union, required
          - 'visibility' | 'sentiment' | 'sentiment_v2' | 'accuracy'
          - string[]
      - PromptTypeFilter — Filter by prompt type (visibility or sentiment). .. deprecated:: Use :class:`AnalysisTypeFilter` instead. ``prompt_type`` is normalised to ``analysis_type`` at parse time.
        - `field` 'prompt_type', required
        - `operator` 'is' | 'not_is' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'matches' | 'contains_case_insensitive' | 'not_contains_case_insensitive', required
        - `value` union, required
          - 'visibility' | 'sentiment'
          - string[]
      - PersonaIdFilter — Filter by persona UUID.
        - `field` 'persona_id', required
        - `operator` 'is' | 'not_is' | 'in' | 'not_in', required
        - `value` union, required
          - string, uuid
          - string[]
      - CitationCategoryFilter — Filter by citation category
        - `field` 'citation_category', required
        - `operator` 'is' | 'not_is' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'matches' | 'contains_case_insensitive' | 'not_contains_case_insensitive', required
        - `value` union, required
          - string
          - string[]
      - PromptFilter — Filter by prompt text
        - `field` 'prompt', required
        - `operator` 'is' | 'not_is' | 'in' | 'not_in' | 'contains' | 'not_contains' | 'matches' | 'contains_case_insensitive' | 'not_contains_case_insensitive', required
        - `value` union, required
          - string
          - string[]
      - PromptIdFilter — Filter by prompt UUID.
        - `field` 'prompt_id', required
        - `operator` 'is' | 'not_is' | 'in' | 'not_in', required
        - `value` union, required
          - string, uuid
          - string[]

## Response `200`

Server-sent events stream. Emits a `summary` event first, then one `row` event per streamed row.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/cooper-square-technologies/apis/external-api.md) · [All operations](https://skmtc.net/cooper-square-technologies/apis/external-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/cooper-square-technologies/external-api/versions/ab03b3c80494/schema)
