---
title: "Get a mention"
method: GET
path: "/v1/mentions/{id}"
tags: ["Mentions"]
---

# Get a mention

`GET /v1/mentions/{id}`

## Request

- Base URL: `https://api.rumoro.dev`
- URL: `https://api.rumoro.dev/v1/mentions/{id}`
- Auth: HTTP bearer

Fetches one mention by id, with the same fields the list returns. An id from another workspace gets a 404.

## Path parameters

- `id` string, required: Mention id (mm_...).

## Response `200`

The mention

- Mention
  - `id` string, required: The mention's id (mm_...). A mention is one post matched to one keyword, so a post that matches two keywords has two ids.
  - `status` 'open' | 'ignored' | 'done', required: open means no one has handled it. ignored means you hid it from the feed and channels. done means it was handled.
  - `relevant` boolean, required: True when the classifier's relevance score is 40 or more, the delivery threshold.
  - `delivered` boolean, required: true once any channel of yours received it.
  - `priority` number, required: How much the mention deserves attention, with one decimal, worked out when you read it. It adds half the relevance, points for the author's followers (8 when unknown) and points for the strongest intent (from 20 for buy intent down to 5 for praise). It then takes off 2 points per day of age, at most 20.
  - `keyword` object, required: The keyword the post matched, with its group.
    - `id` string, required: The keyword's id (kw_...).
    - `term` string, required: The term being tracked.
    - `group` GroupRef, required: The keyword's group.
      - `id` string, required: The group's id (grp_...).
      - `name` string, required: Name of the group.
      - `externalId` string, nullable, required: An id from your own system, or null.
      - `isDefault` boolean, required: True for the workspace's default group. New keywords go there when you don't name a group.
  - `post` object, required
    - `platform` 'bluesky' | 'hackernews' | 'github' | 'stackoverflow' | 'devto' | 'reddit' | 'x' | 'youtube' | 'news' | 'linkedin' | 'tiktok' | 'instagram' | 'appstore' | 'googleplay' | 'trustpilot' | 'googlemaps' | 'rss', required: The platform. Review platforms are appstore, googleplay, trustpilot and googlemaps (a place's Google reviews).
    - `kind` 'post' | 'comment', required: post: a top-level post. comment: anything that answers a post or another comment (a Hacker News comment, an X or Bluesky reply, a Stack Overflow answer, a comment read from a thread).
    - `url` string, required: A stable link to the post.
    - `text` string, required: The title and body, cut to 8 KB when the post is collected.
    - `title` string, nullable, required: The post's title on platforms that have titles, such as Hacker News stories, Reddit threads, GitHub issues and pull requests, Stack Overflow questions, DEV articles, YouTube videos, news articles and reviews with a title. Null on platforms without titles (X, Bluesky, LinkedIn) and for posts collected before October 2026.
    - `imageUrl` string, nullable, required: Preview image sent by the platform, or null. Examples are YouTube thumbnails, DEV covers, news sharing images and Bluesky images or link cards.
    - `links` string[], required: Up to 20 links found in the post, in the order they appear. Empty when there are none and for posts collected before September 2026.
    - `publishedAt` string, required: When the post went live on the platform.
    - `engagement` object, nullable, required: Engagement numbers as the platform gave them when the post was collected, often a few minutes after it was written. A number the platform lacks is null. The whole object is null on platforms that report none and for posts collected before September 2026. X reports all six.
      - `likes` integer, nullable, required
      - `reposts` integer, nullable, required
      - `replies` integer, nullable, required
      - `quotes` integer, nullable, required
      - `views` integer, nullable, required
      - `bookmarks` integer, nullable, required
    - `replyTo` object, nullable, required: The post being replied to, on X and Bluesky. Null when the post is not a reply.
      - `author` string, nullable, required: Who wrote the parent post, as named on the platform.
      - `url` string, nullable, required: Link to the parent post.
      - `text` string, nullable, required: Text of the parent post, if the platform provided it.
  - `parentMentionId` string, nullable, required: For a comment whose parent post or comment is itself one of your mentions: that mention's id (mm_...). Null otherwise.
  - `author` object, nullable, required: The author of the post. Null when the platform gave no author.
    - `id` string, nullable, required: aut_... id for GET /v1/people/{id}, or null while the account isn't in your audience yet.
    - `name` string, nullable, required: The name shown on the platform.
    - `handle` string, nullable, required: The handle taken from the profile link, written the platform's way (@name, u/name). Null on platforms without handles.
    - `url` string, nullable, required: Link to the profile.
    - `avatarUrl` string, nullable, required: Avatar URL, or null if the platform has none.
    - `followers` integer, nullable, required: Followers at the time of their latest post. Null if the platform has no follower count.
    - `tags` string[], required: Tags your workspace gave this person.
  - `review` object, nullable, required: Details of an app store review. Null for any other post. The stars set the sentiment, with 4 and 5 positive, 3 neutral, and 1 and 2 negative. A review always counts as relevant, because you picked the app.
    - `rating` integer, required: The reviewer's star rating.
    - `ratingMax` integer, required: The highest possible rating, which is 5 on both stores.
    - `title` string, nullable, required: The review's title. Null where reviews have none, as on Google Play.
    - `version` string, nullable, required: The app version the reviewer used, if the store reports it.
    - `country` string, nullable, required: A lowercase two-letter code. On the App Store and Google Play it is the storefront the review was read in. On Trustpilot it is the reviewer's country. Null when the platform gives none.
    - `verified` boolean, nullable, required: True when Trustpilot marks the review as verified. Null on platforms without that mark.
    - `response` string, nullable, required: The developer's reply at the time the review was collected. Null when there was none.
    - `responseAt` string, nullable, required: Time of the developer's reply.
    - `app` object, required: The app the review is about.
      - `platform` 'appstore' | 'googleplay' | 'trustpilot' | 'googlemaps', required: Where the reviews come from. appstore is the Apple App Store, googleplay is Google Play, trustpilot is a company's Trustpilot page and googlemaps is the Google reviews of a place.
      - `id` string, required: The app's id in the store.
      - `url` string, required: Link to the app in the store.
  - `classification` object, nullable, required: The classifier's result with your feedback applied. Null while the post waits to be classified.
    - `relevance` integer, nullable, required: Score out of 100, or null if classification failed.
    - `sentiment` 'positive' | 'neutral' | 'negative', nullable, required: The sentiment the classifier assigned.
    - `intents` string[], required: Tags for intent and topic. The values are buy_intent, question, complaint, praise, comparison, churn_intent (moving away from the keyword), bug_report, pricing, hiring, event, promotional, testimonial (a user recommending it from experience), industry_insight (analysis or numbers about the market), launch (a new product or feature announced) and feedback (an idea or request for it).
    - `automated` boolean, required: A label for posts that look machine-made. Examples are bot or app accounts, scheduled or template posts and obvious AI summaries. Such mentions are kept, delivered and billed as usual. false until judged.
    - `language` string, nullable, required: ISO 639-1 code (en, es, de) of the post's language. Null if unknown or scored before languages were stored.
    - `confidence` number, nullable, required: The classifier's confidence in its relevance score, from 0 to 1. Null when the fallback model scored the post, or when it was scored before confidence was stored.
    - `uncertain` boolean, required: True when a person should check the score, because confidence is below 0.4 or the model that wrote the note disagreed with it. It is a hint for reviewers and never hides a mention.
    - `note` string, nullable, required: A sentence from the classifier on why it gave this score.
    - `failed` boolean, required: Set when the model failed to score the post. Such posts remain in the feed and cost nothing.
    - `feedback` object, nullable, required: Feedback from your team, or null. Judging relevance sets `relevance` to 100 or 0 and updates `relevant` to match. A new sentiment replaces `sentiment`. Lists, filters, digests and reports all use the corrected values.
      - `relevant` boolean, nullable, required: Whether you judged it relevant. Null if you only changed the sentiment.
      - `sentiment` 'positive' | 'neutral' | 'negative', nullable, required: The sentiment you set. Null if you only judged relevance.
      - `at` string, required: When the latest feedback was given.
      - `original` object, required: The classifier's values that your feedback overrode.
        - `relevance` integer, nullable, required: The classifier's score before your feedback. Null if it had not scored the post.
        - `sentiment` 'positive' | 'neutral' | 'negative', nullable, required: The classifier's sentiment before you changed it.
  - `triage` object, required
    - `assignee` object, nullable, required: The member handling this mention. Null if nobody is assigned.
      - `id` string, required
      - `name` string, nullable, required
      - `email` string, nullable, required
    - `snoozedUntil` string, nullable, required: The mention is hidden from the feed until this time. Null when it is not snoozed.
    - `note` string, nullable, required: A note for your team, or null.
  - `stats` object, required: Computed counts.
    - `comments` integer, required: Comments of this post you received (GET /v1/mentions/{id}/comments); 0 until its thread is read, and for keywords without comments.
  - `createdAt` string, required: When the match was stored. The feed is sorted by this by default.

## Other responses

- `401`: The API key is missing or not valid
- `404`: Mention not found

---

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