List mentions
Mentions matched to your keywords, filtered and paginated. Default order is newest match first; sort=priority ranks the last 30 days of matches by attention score. Page with nextCursor, passing the same filters and sort. A mention is one post matched to one keyword. alertId applies an alert rule's filter on top of the others: the same mentions that rule would send. anyOf adds OR: URL-encoded JSON groups of conditions, at least one of which must hold on top of every other filter.
API key minted via POST /v1/api-keys (format mk_live_...)
In: header
Query Parameters
Only matches of this keyword.
Only posts from this platform.
"bluesky" | "hackernews" | "github" | "stackoverflow" | "devto" | "reddit" | "x" | "youtube" | "news" | "linkedin" | "tiktok" | "instagram" | "appstore" | "googleplay" | "trustpilot" | "googlemaps" | "rss"Only mentions in this status. Omit for every status.
"open" | "ignored" | "done"true: only mentions the classifier scored relevant; false: only the rest (unclassified included).
Only this sentiment.
"positive" | "neutral" | "negative"Only mentions carrying this intent or topic tag (buy_intent, question, complaint, praise, comparison, churn_intent, bug_report, pricing, hiring, event, promotional, testimonial, industry_insight, launch, feedback).
true: only mentions that read as machine-made (a bot account, a scheduled or templated post, AI-written text); false: only the rest, mentions judged before this existed included. Omitted: everything.
true: only posts by companies, brands and organizations (a LinkedIn company page, a GitHub organization, a business account); false: only posts by people, mentions judged before this existed included. Omitted: everything.
Only this person (an id from /v1/people), merged accounts included. Implies includeMuted.
1 <= lengthtrue: include mentions by people you muted, hidden by default: muted for the workspace, or for the mention's own keyword group.
true: include mentions their keyword's display lists hide (a language or country it does not show), hidden by default.
true: list cross-posts (a mention whose duplicateOf is set) as mentions of their own. By default each is listed only in its original's duplicates.
Only mentions assigned to this workspace member (user id).
1 <= lengthtrue: only mentions currently snoozed. Otherwise snoozed mentions stay out until they wake.
Hide these authors: display names, handles or profile URLs. Repeatable, or one comma-separated value.
items <= 200Only mentions scored at least this; unclassified ones are excluded.
0 <= value <= 100Only mentions whose classifier confidence is at least this, 0 to 1. Mentions without a confidence are excluded.
0 <= value <= 1Only authors with at least this many followers. Unknown reach never passes.
0 <= valueOnly authors with at most this many followers. Unknown reach never passes.
0 <= valueOnly posts (post), only comments (comment) or only GitHub repository events (repository). Omitted: all.
"post" | "comment" | "repository"true: only replies and comments (posts answering another post); false: only top-level posts. Omitted: both.
Apply an alert rule's filter (an id from GET /v1/alerts) on top of the other filters: the same mentions the rule would send, for a feed-shaped export or a preview. Unknown ids are a 404.
1 <= lengthApply a saved view's filter (an id from GET /v1/views) on top of the other filters, every condition ANDed: exactly what the view selects. Unknown ids are a 404.
1 <= lengthOnly matches of keywords of any of these kinds: brand, competitor, topic. Repeatable, or comma-separated.
items <= 3Only authors tagged with any of these (exact, case-sensitive), in the workspace's tags or those of the mention's own keyword group. Repeatable, or comma-separated.
items <= 20Only posts linking to any of these hosts, the host itself or a subdomain of it (octolens.com also matches blog.octolens.com). Repeatable, or comma-separated.
items <= 20Only posts from any of these platforms.
items <= 20Never posts from these platforms.
items <= 20Only matches of any of these keywords.
items <= 50Only matches of keywords in any of these groups (grp_...). Repeatable, or comma-separated.
items <= 50Never matches of keywords in these groups.
items <= 50Never matches of these keywords.
items <= 50Only these sentiments.
items <= 3Never these sentiments. A mention the classifier has not scored yet still passes.
items <= 3Only mentions carrying any of these intent or topic tags.
items <= 20Never mentions carrying these intent or topic tags.
items <= 20Never posts linking to these hosts, the host itself or a subdomain of it.
items <= 20Only Reddit posts from any of these subreddits: subreddits=SaaS,startups (names without the r/, any case). Every other post fails it. Repeatable, or comma-separated.
items <= 50Never Reddit posts from these subreddits; posts from other platforms still pass.
items <= 50Never authors tagged with any of these, in the workspace's tags or those of the mention's own keyword group.
items <= 20Only posts in any of these languages (ISO 639-1: en, es, de). A post whose language is unknown never passes.
items <= 20Never posts in these languages. A post whose language is unknown still passes.
items <= 20Only posts whose author is in any of these countries (ISO 3166-1 alpha-2: us, in, de), as the classifier read the author's profile and the post. A post whose country is unknown never passes.
items <= 100Never posts whose author is in these countries: notCountries=in. A post whose country is unknown still passes.
items <= 100Only app store reviews with any of these star ratings (1 to 5): ratings=1,2 is the unhappy ones. Every other post fails it.
items <= 5Never reviews with these star ratings (1 to 5): notRatings=5 hides the five star reviews. Posts that are not reviews still pass.
items <= 5Only posts with at least this many likes (upvotes, reactions), as the platform reported them when the post was found. A post without that count never passes.
0 <= valueOnly posts with at least this many reposts (shares, retweets), as the platform reported them when the post was found. A post without that count never passes.
0 <= valueOnly posts with at least this many replies (comments), as the platform reported them when the post was found. A post without that count never passes.
0 <= valueOnly posts with at least this many quotes, as the platform reported them when the post was found. A post without that count never passes.
0 <= valueOnly posts with at least this many views (plays), as the platform reported them when the post was found. A post without that count never passes.
0 <= valueOnly posts with at least this many bookmarks (saves), as the platform reported them when the post was found. A post without that count never passes.
0 <= valueOR across groups of conditions, as URL-encoded JSON: [{"platforms":["reddit"],"sentiments":["negative"]},{"intents":["buy_intent"]}] is "negative on Reddit, or buying intent anywhere". Each group holds the conditions of a view filter (lists any-of, not lists none-of, all ANDed); a mention passes when at least one group holds, and every other filter here still applies. 1 to 10 groups, none empty, no nesting.
Substring search in the post text or the author's name.
Only posts published at or after this instant (ISO 8601, or epoch ms).
date-timeOnly posts published at or before this instant (ISO 8601, or epoch ms).
date-timenewest: by match time, newest first. priority: by attention score, highest first; priority ranks the last 30 days of matches only, older ones stay reachable under newest. Cursors are specific to a sort.
"newest""newest" | "priority"nextCursor from the previous page; pass the same filters and sort.
Page size, 1 to 100.
251 <= value <= 100Response Body
application/json
application/json
application/json
curl -X GET "https://api.mentio.dev/v1/mentions"{
"data": [
{
"id": "string",
"status": "open",
"relevant": true,
"delivered": true,
"priority": 0,
"keyword": {
"id": "string",
"term": "string",
"group": {
"id": "string",
"name": "string",
"externalId": "string",
"isDefault": true
},
"matchedAs": "phrase",
"matchedIn": "text"
},
"post": {
"platform": "bluesky",
"kind": "post",
"url": "string",
"text": "string",
"title": "string",
"imageUrl": "string",
"subreddit": "string",
"flair": "string",
"repository": {
"name": "string",
"event": "new",
"stars": 0,
"weeklyStars": 0
},
"links": [
"string"
],
"publishedAt": "string",
"engagement": {
"likes": 0,
"reposts": 0,
"replies": 0,
"quotes": 0,
"views": 0,
"bookmarks": 0
},
"replyTo": {
"author": "string",
"url": "string",
"text": "string"
}
},
"parentMentionId": "string",
"author": {
"id": "string",
"name": "string",
"handle": "string",
"url": "string",
"avatarUrl": "string",
"followers": 0,
"tags": [
"string"
]
},
"review": {
"rating": 1,
"ratingMax": 0,
"title": "string",
"version": "string",
"country": "string",
"verified": true,
"response": "string",
"responseAt": "string",
"app": {
"platform": "appstore",
"id": "string",
"url": "string"
}
},
"classification": {
"relevance": 100,
"sentiment": "positive",
"intents": [
"string"
],
"automated": true,
"language": "string",
"country": "string",
"organization": true,
"confidence": 1,
"uncertain": true,
"note": "string",
"failed": true,
"feedback": {
"relevant": true,
"sentiment": "positive",
"at": "string",
"original": {
"relevance": 100,
"sentiment": "positive"
}
}
},
"triage": {
"assignee": {
"id": "string",
"name": "string",
"email": "string"
},
"snoozedUntil": "string",
"note": "string"
},
"duplicateOf": "string",
"duplicates": [
{
"id": "string",
"platform": "bluesky",
"url": "string",
"publishedAt": "string"
}
],
"stats": {
"comments": 0
},
"createdAt": "string"
}
],
"nextCursor": "string"
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"retryAfterSeconds": 0
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"retryAfterSeconds": 0
}
}List the comments of a mention GET
The comments under a mention's post, newest first: every comment in the thread, whether or not it names your keyword. Read once, about a day after the post, for mentions scored relevant whose keyword has comments enabled (keywords.comments), on Hacker News, Bluesky, GitHub, Stack Overflow, DEV, YouTube and Reddit; empty before that and for other keywords. Each comment delivered costs $0.008 on the comments line of the bill, once per workspace. A comment that itself names one of your keywords is also a mention: `mentionId` links it. Two mentions of one post (two keywords) list the same thread.
Update a mention PATCH
The one write on a mention. Set status to ignored or done to handle it (open puts it back), assign it to a workspace member, snooze it out of the feed, leave an internal note, or correct the classifier: `relevant` true or false is your verdict (relevance becomes 100 or 0, and every list, filter, digest and report follows it), `sentiment` replaces the label; null withdraws a verdict and restores the classifier's value. Omitted fields are untouched. Delivery and billing never change.