# Docs - [Introduction](/): Omnia developer documentation — REST API and MCP Server for querying AI visibility data, brand citations, share of voice, and sentiment across ChatGPT, Perplexity, and Google AI Overviews. - REST API - [Overview](/api): Omnia REST API reference — programmatically query AI visibility metrics, brand share of voice, citations, and sentiment across ChatGPT, Perplexity, Google AI Overviews, and more. - [Authentication](/api/authentication) - [Responses](/api/responses) - [Pagination](/api/pagination) - [Rate limiting](/api/rate-limiting) - [Async operations](/api/async-operations) - [Versioning](/api/versioning) - **Guides** - [Export performance data](/api/guides/export-performance-data) - **Endpoints** - AI Answer - [Get AI answer](/api/ai-answer/get-ai-answer): Retrieve an AI answer by its id - [List AI answers](/api/ai-answer/list-ai-answers): Retrieve a paginated list of AI answers for the given prompt. Pagination in this endpoint is not 100% accurate and pages might have fewer items than initially requested. For the same reason, the real total number of items can be lower than the one reported in responses - Brand - [Create brand](/api/brand/create-brand): Create a new brand with the provided details. The brand will be associated with the authenticated organization. - [Delete brand](/api/brand/delete-brand): Delete a brand and all its associated data including topics and prompts. This action cannot be undone. - [Get brand](/api/brand/get-brand): Retrieve a brand by its id - [List brands](/api/brand/list-brands): Retrieve a paginated list of brands. Optionally filter by domain or name using partial, case-insensitive matching. - [Update brand](/api/brand/update-brand): Update an existing brand. Only the fields provided in the request body will be updated. - Performance - [Create metrics export task](/api/brand/performance/create-metrics-export-task): Schedule an asynchronous export task that writes the resulting **CSV** file to cloud storage and exposes it as a presigned download URL. Use this variant when you don't want to keep an HTTP connection open for the duration of the export (for example, for scheduled jobs, very large date ranges, or background pipelines) or when you need a CSV file ready to load into BI tools like Looker Studio, BigQuery or Tableau. The request body is empty; all parameters are passed as query parameters (same shape as the streaming `GET` variant). Each row of the CSV file carries the same columns as the `ExportRow` shape documented on the streaming endpoint, and changing `entityGranularity` cascades entity information onto each row the same way. The response is `202 Accepted` with `links.self` pointing at the polling endpoint (`GET /api/v1/exports/{export}`). Poll that URL until the `status` becomes `completed` (or `failed`). When the export completes, the polling response includes a `resultsUrl`, a presigned URL that lets you download the CSV file. Presigned URLs expire 7 days after generation. - [Get citations aggregates](/api/brand/performance/get-citations-aggregates): Retrieve a paginated list of citations aggregates - [Get citations time series](/api/brand/performance/get-citations-time-series): Retrieve time series data showing citations evolution over time for a brand and its competitors. Returns data points for each brand within the specified date range. - [Get metrics export](/api/brand/performance/get-metrics-export): Retrieve the status of a metrics export task. When the export has finished successfully, the response includes a presigned URL to download the results as CSV. While the task is in progress, the response includes a `Retry-After` header suggesting when to poll again. - [Get sentiment aggregates](/api/brand/performance/get-sentiment-aggregates): Retrieve a flat, paginated list of sentiment aggregates. Each row represents a unique brand-feature pair with counts of endorsed, undermined, and neutral feature mentions. - [Get sentiment time series](/api/brand/performance/get-sentiment-time-series): Retrieve daily sentiment distribution over time for the owned brand only (competitors are not included). Returns counts of endorsed, undermined, and neutral feature mentions per day within the specified date range. - [Get share of voice aggregates](/api/brand/performance/get-share-of-voice-aggregates): Retrieve a paginated list of share of voice aggregates - [Get share of voice time series](/api/brand/performance/get-share-of-voice-time-series): Retrieve time series data showing share of voice evolution over time for a brand and its competitors. Returns data points for each brand within the specified date range. - [Get visibility aggregates](/api/brand/performance/get-visibility-aggregates): Retrieve a paginated list of visibility aggregates - [Get visibility time series](/api/brand/performance/get-visibility-time-series): Retrieve time series data showing visibility evolution over time for a brand and its competitors. Returns data points for each brand within the specified date range. - [Stream metrics export](/api/brand/performance/stream-metrics-export): Stream every row of the selected metric for the given brand. Changing `entityGranularity` cascades entity information onto each row: brand-level exports carry only brand fields, topic-level exports also include the topic, and prompt-level exports also include the prompt. If you can't keep an HTTP connection open for the duration of the export (for example, for scheduled jobs, very large date ranges, or background pipelines), use `POST /api/v1/brands/{brand}/export` instead and poll for completion. - Insight - [Get insight](/api/insight/get-insight): Retrieve a single insight by its id - [List insights](/api/insight/list-insights): Retrieve a paginated list of insights - [Update insight](/api/insight/update-insight): Changes the status of an insight - Generation - [Generate insights](/api/insight/generation/generate-insights): Starts a new insights generation task. - [Get insight generation](/api/insight/generation/get-insight-generation): Retrieve an insight generation by its id. This method is used to poll ongoing generations. - Prompt - [Create prompt](/api/prompt/create-prompt): Creates a new non-monitored prompt that depends on the selected topic. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `POST /api/v1/brands/{brand}/prompts` instead. It does not require a topic ID. - [Create prompts](/api/prompt/create-prompts): Bulk-create prompts for a brand. Each prompt is grouped under the named topic, or an auto-managed topic for the given location if no topic name is provided. Returns a report detailing created prompts, skipped duplicates, and row-level errors. - [Delete prompt](/api/prompt/delete-prompt): Delete a prompt. This action cannot be undone. - [Get prompt](/api/prompt/get-prompt): Retrieve a prompt by its id - [List prompts](/api/prompt/list-prompts): Retrieve a paginated list of prompts. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `GET /api/v1/brands/{brand}/prompts` instead. It does not require a topic ID and supports `type`, `countries`, and `tags` filters to narrow the results. - [Toggle prompt monitoring](/api/prompt/toggle-prompt-monitoring): Changes the monitoring status for a prompt. - [Update prompt](/api/prompt/update-prompt): Update an existing prompt. Only the fields provided in the request body will be updated. - Performance - [Get citations aggregates](/api/prompt/performance/get-citations-aggregates): Retrieve a paginated list of prompt citations aggregates - [Get citations time series](/api/prompt/performance/get-citations-time-series): Retrieve prompt time series data showing citations evolution over time for a brand and its competitors. Returns data points for each brand within the specified date range. - [Get sentiment aggregates](/api/prompt/performance/get-sentiment-aggregates): Retrieve a flat, paginated list of sentiment aggregates for a prompt. Each row represents a unique brand-feature pair with counts of endorsed, undermined, and neutral feature mentions. - [Get sentiment time series](/api/prompt/performance/get-sentiment-time-series): Retrieve daily sentiment distribution over time for the owned brand within a prompt (competitors are not included). Returns counts of endorsed, undermined, and neutral feature mentions per day within the specified date range. - [Get share of voice aggregates](/api/prompt/performance/get-share-of-voice-aggregates): Retrieve a paginated list of prompt share of voice aggregates - [Get share of voice time series](/api/prompt/performance/get-share-of-voice-time-series): Retrieve prompt time series data showing share of voice evolution over time for a brand and its competitors. Returns data points for each brand within the specified date range. - [Get visibility aggregates](/api/prompt/performance/get-visibility-aggregates): Retrieve a paginated list of prompt visibility aggregates - [Get visibility time series](/api/prompt/performance/get-visibility-time-series): Retrieve prompt time series data showing visibility evolution over time for a brand and its competitors. Returns data points for each brand within the specified date range. - Topic - [Bulk import prompts](/api/topic/bulk-import-prompts): Bulk-import prompts from parsed CSV rows. Rows missing a topic are grouped via automatic topic discovery. Returns a report detailing created topics, skipped duplicates, and row-level errors. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `POST /api/v1/brands/{brand}/prompts` instead. - [Create topic](/api/topic/create-topic): Creates a new non-monitored topic with associated prompts. If a topic with the same name and location already exists for this brand, the prompts will be added to the existing topic instead. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `POST /api/v1/brands/{brand}/prompts` instead. - [Delete topic](/api/topic/delete-topic): Delete a topic and all its associated data including prompts. This action cannot be undone. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `DELETE /api/v1/prompts/{prompt}` to delete individual prompts instead. - [Get topic](/api/topic/get-topic): Retrieve a topic by its id. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `GET /api/v1/brands/{brand}/prompts` instead. It returns all prompts for the brand and supports `type`, `countries`, and `tags` filters to narrow the results. - [List topics](/api/topic/list-topics): Retrieve a paginated list of topics. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `GET /api/v1/brands/{brand}/prompts` instead. It returns all prompts for the brand and supports `type`, `countries`, and `tags` filters to narrow the results. - [Toggle topic monitoring](/api/topic/toggle-topic-monitoring): Changes the monitoring status for a topic and all its prompts. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `PUT /api/v1/prompts/{prompt}/toggle-monitoring` to toggle monitoring for individual prompts instead. - [Update topic](/api/topic/update-topic): Update an existing topic. Only the fields provided in the request body will be updated. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `PATCH /api/v1/prompts/{prompt}` to update individual prompts instead. - Performance - [Get citations aggregates](/api/topic/performance/get-citations-aggregates): Retrieve a paginated list of topic citations aggregates. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `GET /api/v1/brands/{brand}/citations/aggregates` with the `promptType` query parameter for a Branded/Non-Branded split, or create a View (`POST /api/v1/brands/{brand}/views`) to replicate this topic's specific prompt grouping and query `GET /api/v1/views/{view}/citations/aggregates` instead. - [Get citations time series](/api/topic/performance/get-citations-time-series): Retrieve topic time series data showing citations evolution over time for a brand and its competitors. Returns data points for each brand within the specified date range. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `GET /api/v1/brands/{brand}/citations/timeseries` with the `promptType` query parameter for a Branded/Non-Branded split, or create a View (`POST /api/v1/brands/{brand}/views`) to replicate this topic's specific prompt grouping and query `GET /api/v1/views/{view}/citations/timeseries` instead. - [Get sentiment aggregates](/api/topic/performance/get-sentiment-aggregates): Retrieve a flat, paginated list of sentiment aggregates for a topic. Each row represents a unique brand-feature pair with counts of endorsed, undermined, and neutral feature mentions. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `GET /api/v1/brands/{brand}/sentiment/aggregates` with the `promptType` query parameter for a Branded/Non-Branded split, or create a View (`POST /api/v1/brands/{brand}/views`) to replicate this topic's specific prompt grouping and query `GET /api/v1/views/{view}/sentiment/aggregates` instead. - [Get sentiment time series](/api/topic/performance/get-sentiment-time-series): Retrieve daily sentiment distribution over time for the owned brand within a topic (competitors are not included). Returns counts of endorsed, undermined, and neutral feature mentions per day within the specified date range. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `GET /api/v1/brands/{brand}/sentiment/timeseries` with the `promptType` query parameter for a Branded/Non-Branded split, or create a View (`POST /api/v1/brands/{brand}/views`) to replicate this topic's specific prompt grouping and query `GET /api/v1/views/{view}/sentiment/timeseries` instead. - [Get share of voice aggregates](/api/topic/performance/get-share-of-voice-aggregates): Retrieve a paginated list of topic share of voice aggregates. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `GET /api/v1/brands/{brand}/share-of-voice/aggregates` with the `promptType` query parameter for a Branded/Non-Branded split, or create a View (`POST /api/v1/brands/{brand}/views`) to replicate this topic's specific prompt grouping and query `GET /api/v1/views/{view}/share-of-voice/aggregates` instead. - [Get share of voice time series](/api/topic/performance/get-share-of-voice-time-series): Retrieve topic time series data showing share of voice evolution over time for a brand and its competitors. Returns data points for each brand within the specified date range. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `GET /api/v1/brands/{brand}/share-of-voice/timeseries` with the `promptType` query parameter for a Branded/Non-Branded split, or create a View (`POST /api/v1/brands/{brand}/views`) to replicate this topic's specific prompt grouping and query `GET /api/v1/views/{view}/share-of-voice/timeseries` instead. - [Get visibility aggregates](/api/topic/performance/get-visibility-aggregates): Retrieve a paginated list of topic visibility aggregates. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `GET /api/v1/brands/{brand}/visibility/aggregates` with the `promptType` query parameter for a Branded/Non-Branded split, or create a View (`POST /api/v1/brands/{brand}/views`) to replicate this topic's specific prompt grouping and query `GET /api/v1/views/{view}/visibility/aggregates` instead. - [Get visibility time series](/api/topic/performance/get-visibility-time-series): Retrieve topic time series data showing visibility evolution over time for a brand and its competitors. Returns data points for each brand within the specified date range. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `GET /api/v1/brands/{brand}/visibility/timeseries` with the `promptType` query parameter for a Branded/Non-Branded split, or create a View (`POST /api/v1/brands/{brand}/views`) to replicate this topic's specific prompt grouping and query `GET /api/v1/views/{view}/visibility/timeseries` instead. - Trend - [Accept trend](/api/trend/accept-trend): Accepts a trend and starts monitoring all the selected prompt ids. This converts the trend into an active topic that can be managed via the topics endpoints. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `POST /api/v1/brands/{brand}/prompts` to create and start monitoring prompts directly instead. - [Import trends](/api/trend/import-trends): Creates new trends from a list of imported keywords. This method is asynchronous and it requires querying for new trends to see when the import finishes. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation — if so, use `POST /api/v1/brands/{brand}/prompts` to create prompts directly instead. - [List trends](/api/trend/list-trends): Retrieve a paginated list of trends. **Deprecated**: Returns a `410 Gone` error once Topics are disabled for your account due to deprecation. No direct replacement — use `GET /api/v1/brands/{brand}/prompts` to list all prompts for a brand instead. It supports `type`, `countries`, and `tags` filters to narrow the results. - View - [Create view](/api/view/create-view): Create a view for a brand. The view name must be unique per brand (case-insensitive). Omit `filters` (or pass `{}`) for a view matching all of the brand's prompts. A view is a named saved filter over a brand's prompts (any combination of prompt type, countries, tags, and status). The prompt set is resolved from the filters at query time, so a view always reflects the brand's current prompts. Views are the recommended grouping primitive for analytics, replacing topic-scoped endpoints. - [Delete view](/api/view/delete-view): Delete a view. Only the saved filter is removed — the prompts it groups are not affected. - [Get view](/api/view/get-view): Retrieve a view by its id. A view is a named saved filter over a brand's prompts (any combination of prompt type, countries, tags, and status). The prompt set is resolved from the filters at query time, so a view always reflects the brand's current prompts. Views are the recommended grouping primitive for analytics, replacing topic-scoped endpoints. - [List view prompts](/api/view/list-view-prompts): Retrieve the paginated list of prompts the view currently groups, with summary performance metrics per prompt. The prompt set is resolved from the view's saved filters at query time. - [List views](/api/view/list-views): Retrieve a paginated list of the brand's views. A view is a named saved filter over a brand's prompts (any combination of prompt type, countries, tags, and status). The prompt set is resolved from the filters at query time, so a view always reflects the brand's current prompts. Views are the recommended grouping primitive for analytics, replacing topic-scoped endpoints. - [Update view](/api/view/update-view): Update a view's name and/or filters. `filters` replaces the entire filters object — include every criterion the view should keep. - Performance - [Get citation aggregates](/api/view/performance/get-citation-aggregates): Retrieve a paginated list of citation aggregates over the prompts the view groups. The prompt set comes from the view's saved filters; the query parameters only control dates, engine, sorting, filtering by source, and pagination. - [Get citations time series](/api/view/performance/get-citations-time-series): Retrieve citations time series over the prompts the view groups. The prompt set comes from the view's saved filters; the query parameters only control dates and engine. - [Get sentiment aggregates](/api/view/performance/get-sentiment-aggregates): Retrieve a paginated list of sentiment aggregates (one row per brand-feature pair) over the prompts the view groups. The prompt set comes from the view's saved filters; the query parameters only control dates, engine, sorting, filtering by brand or feature, and pagination. - [Get sentiment time series](/api/view/performance/get-sentiment-time-series): Retrieve daily sentiment feature mention distribution over the prompts the view groups. The prompt set comes from the view's saved filters; the query parameters only control dates and engine. - [Get share of voice aggregates](/api/view/performance/get-share-of-voice-aggregates): Retrieve a paginated list of share of voice aggregates over the prompts the view groups. The prompt set comes from the view's saved filters; the query parameters only control dates, engine, sorting, and pagination. - [Get share of voice time series](/api/view/performance/get-share-of-voice-time-series): Retrieve share of voice time series over the prompts the view groups. The prompt set comes from the view's saved filters; the query parameters only control dates and engine. - [Get visibility aggregates](/api/view/performance/get-visibility-aggregates): Retrieve a paginated list of visibility aggregates over the prompts the view groups. The prompt set comes from the view's saved filters; the query parameters only control dates, engine, sorting, and pagination. - [Get visibility time series](/api/view/performance/get-visibility-time-series): Retrieve visibility time series over the prompts the view groups. The prompt set comes from the view's saved filters; the query parameters only control dates and engine. - MCP Server - [Overview](/mcp): The Omnia MCP Server connects AI assistants like Claude, Cursor, and ChatGPT directly to your brand's AI visibility data. Query share of voice, citations, and sentiment in natural language — no dashboards required. - [Connecting to Omnia MCP](/mcp/connecting): Step-by-step guide to connecting Claude, Cursor, ChatGPT, or any MCP-compatible AI assistant to the Omnia MCP Server. Authenticate with OAuth and start querying your AI visibility data instantly.