---
title: "Views"
description: "Saved filters over your mentions. Switch between them on the Mentions page, read one through the API with viewId, export one as CSV."
canonical: https://docs.mentio.dev/views
markdown: https://docs.mentio.dev/views.mdx
---

# Views

Saved filters over your mentions. Switch between them on the Mentions page, read one through the API with viewId, export one as CSV.

A view is a named filter over your mentions: "Negative about us", "Competitor mentions", "Needs a reply". The Mentions page switches between them, and the API reads one by passing its id as `viewId` to the list or the export.

Nothing is materialized. A view selects whatever matches its filter at the moment it is read, so "Negative about us" is whatever is negative on a brand keyword today.

## On the Mentions page

The switcher at the left of the toolbar lists your views. A view is the base of the list and the filter chips narrow it further, exactly as `viewId` and the other parameters combine in the API. Once you have filters set, **Create view** saves them under a name; **Manage** renames, describes, refilters (from the chips on the page) or deletes the active view.

## The filter

A view's `filter` takes the same fields as `GET /v1/mentions`, as JSON: `keywordIds` or `keywordKinds` (brand, competitor, topic), `platforms`, `status`, `relevant`, `minRelevance`, `minConfidence`, `sentiments`, `intents`, `languages`, `tags` (author tags), `linkHosts`, `minFollowers`, `maxFollowers`, `isReply`, `automated`, `excludeAuthors` and `q`. Lists are any-of, the `not` twins (`notPlatforms`, `notSentiments`, `notIntents`, `notKeywordIds`, `notLanguages`, `notTags`, `notLinkHosts`) are none-of, and every condition is ANDed. An empty filter is every mention.

A view has no time window and no inbox state (person, assignee, snoozed): those belong to whoever reads it.

```bash
curl -X POST https://api.mentio.dev/v1/views \
  -H "Authorization: Bearer $MENTIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Negative about us",
    "description": "Answer these today.",
    "filter": { "keywordKinds": ["brand"], "sentiments": ["negative"], "relevant": true }
  }'
```

## Reading a view

Pass the id as `viewId`. The view's filter is ANDed with any other filter on the request, so `viewId` plus `since` reads the view for one window, and the same parameter on `GET /v1/mentions/export.csv` exports it.

```bash
curl "https://api.mentio.dev/v1/mentions?viewId=vw_...&since=2026-09-01T00:00:00Z" \
  -H "Authorization: Bearer $MENTIO_API_KEY"
```

## Views and alerts

A view is what you look at; an alert is what gets sent. They share the filter vocabulary, and an alert rule's filter can be read the same way with `alertId`. Turning a view into an alert rule is one `POST /v1/alerts` with the same filter.
