Export mentions as JSON
The same mentions GET /v1/mentions would list for these filters, in one response, newest matched first (the order they entered your feed): every row is the full Mention object the list returns, text included. Capped at 10,000 mentions; `truncated` (and the X-Mentions-Truncated header) says when the cap cut the list. Shares the CSV export's limit: at most 6 exports per minute per workspace, either format; a 429 carries Retry-After.
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"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.
Only this person (an id from /v1/people), merged accounts included. Implies includeMuted.
1 <= lengthtrue: include mentions by people you muted, hidden by default.
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 <= valuetrue: 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 your workspace tagged with any of these (exact, case-sensitive). 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 <= 20Never authors your workspace tagged with any of these.
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 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-timeResponse Body
application/json
application/json
application/json
application/json
curl -X GET "https://api.mentio.dev/v1/mentions/export.json"{
"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
}
},
"post": {
"platform": "bluesky",
"url": "string",
"text": "string",
"title": "string",
"imageUrl": "string",
"links": [
"string"
],
"publishedAt": "string",
"engagement": {
"likes": 0,
"reposts": 0,
"replies": 0,
"quotes": 0,
"views": 0,
"bookmarks": 0
},
"replyTo": {
"author": "string",
"url": "string",
"text": "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",
"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"
},
"createdAt": "string"
}
],
"truncated": true
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"retryAfterSeconds": 0
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"retryAfterSeconds": 0
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"retryAfterSeconds": 0
}
}Export mentions as CSV GET
The same mentions GET /v1/mentions would list for these filters, as CSV, newest matched first (the order they entered your feed, which can differ from the post date): id, published_at, platform, keyword, author, author_url, author_followers, relevance, sentiment, intents (pipe-separated), language, confidence, status, relevant, delivered, url, links (pipe-separated), text (first 1,000 characters), group, group_external_id, rating and app_id (app store reviews only), title and image_url (where the platform has them). Capped at 10,000 rows; the X-Mentions-Truncated header says when the cap cut the list. At most 6 exports per minute per workspace; a 429 carries Retry-After.
Get a mention GET
One mention by id, as it appears in the list: the post, its author with reach and your tags, the classification, the priority score and the triage fields. Ids belong to your organization; any other id is a 404.