Skip to main content
Cognizo’s metrics all come out of the same machinery: every tracked prompt is run against AI providers on a schedule, each answer is parsed for brand mentions, and the metrics are aggregations over those runs. Three endpoints return the canonical metric envelope — visibility, share_of_voice and sentiment — at both brand and prompt/region level. They share one response shape.

The metric envelope

The units trap

value is not the same unit across metric types. This is the single most common integration bug.
Two consequences worth internalising:
  • Don’t re-aggregate sentiment client-side. It’s already an average, not a count. Averaging the daily averages is not the window average — read aggregate_metrics for that.
  • 0 and null mean different things. For visibility and share of voice, 0 means “we ran the prompts and the brand never showed up”. For sentiment, null means “nothing was scored”, which is not the same as neutral.

Metrics on list endpoints

List endpoints embed the same numbers as flat fields — same units, same _diff convention against the previous equal-length period:
  • Prompts (list_brand_prompts): visibility, visibility_diff, sentiment, sentiment_diff, citation_share, citation_share_diff, mentioned, top_competitors, last_run, plus search-volume fields.
  • Topics (list_brand_topics): visibility, share_of_voice, sentiment, citation_share and their diffs, plus prompt_count and top_brands.
  • Brands (list_brands): visibility is the 30-day figure, null on brands where it hasn’t been computed.

Search volume

Prompt rows carry both a raw volume and a bucketed volume_range (<10, 10-50, … 1m+). The bucket is derived from the raw number — use volume_range for display and grouping, volume for sorting, and expect both to be null for prompts where volume hasn’t been estimated yet.

Citation metrics

Citations are counted per AI answer, so they follow their own vocabulary: The citation_share and mention_share endpoints return a time series where each point carries count, total, share_percent, plus rolling average_count / average_percentage.
Dates on the citation share series come back as "YYYY-MM-DDT00:00:00" with no timezone offset — they’re period starts in the workspace’s local time, not UTC instants. Parse them as local dates.