---
title: "List attention items"
method: GET
path: "/v1/attention"
tags: ["Attention"]
---

# List attention items

`GET /v1/attention`

## Request

- Base URL: `https://api.mentio.dev`
- URL: `https://api.mentio.dev/v1/attention`
- Auth: HTTP bearer

What needs a person, newest first: a keyword whose mentions spiked in the last hour (mention.spike), whose negative share of the last 24 hours jumped (sentiment.negative_spike), that turned noisy (keyword.noisy), or a channel whose last sends all failed (channel.failing). Detected once an hour; an item opens when its condition starts and resolves on its own when the condition is gone. Open items by default; `status=all` reads the history. Each opening is also an account event of the same name, which webhook, Slack, email and Telegram channels can subscribe to.

## Query parameters

- `status` 'open' | 'resolved' | 'dismissed' | 'all': open (default), resolved, dismissed, or all.
- `kind` string: Only these kinds, comma separated: mention.spike, sentiment.negative_spike, keyword.noisy, channel.failing, feed.failing (feed.recovered never opens an item).
- `limit` integer: Items per page, newest first; 50 by default, at most 100.
- `cursor` string: nextCursor from the previous page.

## Response `200`

Attention items

- object
  - `data` AttentionItem[], required
    - `id` string, required: Attention item id (att_...).
    - `kind` 'mention.spike' | 'sentiment.negative_spike' | 'keyword.noisy' | 'channel.failing' | 'feed.failing' | 'feed.recovered', required: mention.spike: far more mentions in the last hour than the keyword usually gets. sentiment.negative_spike: the negative share of the last 24 hours jumped. keyword.noisy: most scored matches are noise. channel.failing: the channel's last sends all failed. feed.failing: a workspace feed failed its last 3 hourly reads. feed.recovered: it read again after failing.
    - `status` 'open' | 'resolved' | 'dismissed', required: open: the condition holds. resolved: it no longer does. dismissed: a person put it away; it does not come back for the same episode.
    - `subject` object, required: What the item is about.
      - `type` 'keyword' | 'channel' | 'feed', required: keyword, channel or feed.
      - `id` string, required: The keyword (kw_...), the channel (dest_...) or the feed (fd_...).
    - `title` string, required: One line for a person: what happened.
    - `openedAt` string, required: When the condition was first seen.
    - `resolvedAt` string, nullable, required: When it no longer held; null while it does.
    - `dismissedAt` string, nullable, required: When a person dismissed it; null if nobody did.
    - `data` union, required: The facts as they stood when it opened: the same object the account event of the same name carries as `data`.
      - MentionSpikeEventData
        - `attentionId` string, required: The attention item (att_...): GET /v1/attention lists it, POST /v1/attention/{id}/dismiss puts it away.
        - `url` string, required: Where to look in the dashboard.
        - `keyword` object, required: The keyword the item is about.
          - `id` string, required: Keyword id (kw_...).
          - `term` string, required: The tracked term.
          - `kind` 'brand' | 'competitor' | 'topic', required: brand, competitor or topic.
          - `name` string, required: The keyword as Mentio names it: the term, or "term (Group)" outside the default group.
          - `groupId` string, required: Its group (grp_...).
        - `window` object, required: The stretch of time the counts cover, by match time.
          - `from` string, required: Start, inclusive.
          - `to` string, required: End, exclusive.
        - `matches` integer, required: Fresh matches in the hour: posts published at most 6 hours before they matched. Look-backs and free reviews never count.
        - `relevant` integer, required: Of those, scored relevant so far.
        - `baseline` object, required: What the keyword usually gets.
          - `meanPerHour` number, required: Fresh matches per hour over the baseline.
          - `stddevPerHour` number, required: Their standard deviation.
          - `hours` integer, required: Hours in the baseline: the week before the window, or since the keyword started listening.
      - NegativeSpikeEventData
        - `attentionId` string, required: The attention item (att_...): GET /v1/attention lists it, POST /v1/attention/{id}/dismiss puts it away.
        - `url` string, required: Where to look in the dashboard.
        - `keyword` object, required: The keyword the item is about.
          - `id` string, required: Keyword id (kw_...).
          - `term` string, required: The tracked term.
          - `kind` 'brand' | 'competitor' | 'topic', required: brand, competitor or topic.
          - `name` string, required: The keyword as Mentio names it: the term, or "term (Group)" outside the default group.
          - `groupId` string, required: Its group (grp_...).
        - `window` object, required: The stretch of time the counts cover, by match time.
          - `from` string, required: Start, inclusive.
          - `to` string, required: End, exclusive.
        - `negative` integer, required: Relevant matches scored negative in the window.
        - `relevant` integer, required: Relevant matches in the window.
        - `share` number, required: negative / relevant.
        - `baseline` object, required: What the keyword usually reads.
          - `negative` integer, required: Negative relevant matches in the 7 days before the window.
          - `relevant` integer, required: Relevant matches in those 7 days.
          - `share` number, required: The usual negative share, smoothed so a quiet week still has one.
      - KeywordNoisyEventData
        - `attentionId` string, required: The attention item (att_...): GET /v1/attention lists it, POST /v1/attention/{id}/dismiss puts it away.
        - `url` string, required: Where to look in the dashboard.
        - `keyword` object, required: The keyword the item is about.
          - `id` string, required: Keyword id (kw_...).
          - `term` string, required: The tracked term.
          - `kind` 'brand' | 'competitor' | 'topic', required: brand, competitor or topic.
          - `name` string, required: The keyword as Mentio names it: the term, or "term (Group)" outside the default group.
          - `groupId` string, required: Its group (grp_...).
        - `windowDays` integer, required: The window the noise is measured over, in days (since the keyword's last change when that is inside it).
        - `scored` integer, required: Matches the classifier scored in that window.
        - `relevant` integer, required: Of those, relevant.
        - `noiseShare` number, required: The share scored under the relevance line. Every match bills, relevant or not.
      - ChannelFailingEventData
        - `attentionId` string, required: The attention item (att_...): GET /v1/attention lists it, POST /v1/attention/{id}/dismiss puts it away.
        - `url` string, required: Where to look in the dashboard.
        - `channel` object, required: The channel whose sends fail.
          - `id` string, required: Channel id (dest_...).
          - `kind` 'slack' | 'email' | 'webhook' | 'telegram', required: slack, email, webhook or telegram.
          - `label` string, required: The channel's label.
        - `failures` integer, required: Failed sends in a row within the last 24 hours.
        - `lastError` string, nullable, required: The newest failure, as the transport reported it.
        - `since` string, required: The oldest of those failures.
      - FeedFailingEventData
        - `attentionId` string, required: The attention item (att_...): GET /v1/attention lists it, POST /v1/attention/{id}/dismiss puts it away.
        - `url` string, required: Where to look in the dashboard.
        - `feed` object, required: The workspace feed (GET /v1/feeds/{id}).
          - `id` string, required: Feed id (fd_...).
          - `url` string, required: The feed address.
          - `title` string, nullable, required: The feed's own title, when it has one.
        - `reason` 'login_required' | 'login_expired' | 'blocked' | 'not_found' | 'not_a_feed' | 'unreachable', required: login_required: the feed answers a sign-in or access-denied page (connect it with the forum's sign-in, auth). login_expired: the same on a feed that has a sign-in: copy a fresh cookie. blocked: a 403, a 429 or a bot check. not_found: the feed is gone. not_a_feed: the address answers a page, not RSS or Atom. unreachable: no answer or a server error.
        - `detail` string, nullable, required: What the last failed read saw, in a few words.
        - `failingSince` string, required: When it started failing: the third failed read in a row.
        - `keywordsAffected` integer, required: Live keywords of the workspace that read workspace feeds: what misses its posts while it fails.
  - `nextCursor` string, nullable, required: Pass as cursor for the next page; null on the last one.

## Other responses

- `400`: Unknown kind, or a cursor this list did not hand out
- `401`: Missing or invalid API key

---

[API](https://skmtc.dev/mentio/apis/mentio-api.md) · [All operations](https://skmtc.dev/mentio/apis/mentio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mentio/apis/mentio-api/revisions/b16a21d0ed02?raw)
