Track a keyword
Start tracking a word or phrase. Matching, classification and delivery begin on the next poll. A funded workspace tracks up to 500 keywords; each costs $5 per month, deducted daily from the balance. `matching` narrows what the term matches (required and excluded terms, excluded authors, case, subreddits, GitHub repository events) before a mention is stored, so a rejected post is never billed; `context` is a sentence the classifier reads for this keyword only. `cap` puts a monthly ceiling on its matched mentions: at the cap it stops matching until the first of the next month (UTC) or until the cap is raised, while its daily keyword charge continues.
API key minted via POST /v1/api-keys (format mk_live_...)
In: header
The word or phrase to track, case-insensitive. A multi-word term matches as the phrase or as its words close together (see matching.exactPhrase); wrap it in double quotes for the exact phrase only.
2 <= length <= 80brand: your own names. competitor: theirs. topic: the space. Drives share of voice and segments.
"brand""brand" | "competitor" | "topic"Platforms to search the term on; omit or null for every platform. [] searches it nowhere: a keyword that only collects reviews or reads feeds, which then needs reviewSources or feeds.
A sentence the classifier reads for this keyword only, on top of the company profile or the group's own description (at most 300 characters): what the term means here, what to ignore. "Arc is our browser; ignore the geometry word." Null clears it.
length <= 300Omitted fields are untouched; an empty list clears one.
A mention cap per day, week or month (per, default month); omit or null for none.
Comments under this keyword's mentions; omitted fields are untouched (on create: off, 20 per post).
Which of this keyword's mentions you see, by language and country; each list is replaced when sent, kept when omitted. Hidden mentions are still billed.
The group to track it in (grp_...); omit for the workspace's default group. A term may be tracked once per group.
1 <= lengthReview pages this keyword collects, at most 10: App Store and Google Play apps, Trustpilot pages, Google Maps places. Every new review of one is a mention of the keyword, whatever its text says. Polled once a day (per country on the app stores). A newly connected page brings its last 30 days, the newest 100 reviews (per country), free and never sent as instant alerts; after that each review bills like any mention.
items <= 10RSS or Atom feeds this keyword reads, at most 20, each { url }: a feed's URL, or a page's (a forum, a community, a blog), in which case the feed the page advertises is used, else a usual address such as /feed or /rss. A URL with no feed behind it is a 400. Each feed is read every hour; an item is a mention of this keyword when it holds the term (with the keyword's matching rules), and only of keywords that named the feed. A newly connected feed brings its newest 10 items of the last 30 days that hold the term, billed like any mention and never sent as instant alerts.
items <= 20Whether the keyword also reads the workspace's feeds (GET /v1/feeds); default true. A new keyword reading them gets the look-back of the 8 most recently connected.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://api.mentio.dev/v1/keywords" \ -H "Content-Type: application/json" \ -d '{ "term": "string" }'{
"id": "string",
"term": "string",
"kind": "brand",
"muted": true,
"pausedForBalance": true,
"pausedForNoise": true,
"pausedForCap": true,
"cap": {
"mentions": 1,
"per": "day",
"used": 0,
"welcome": true,
"own": 0,
"ownPer": "day",
"resumesAt": "string"
},
"comments": {
"enabled": true,
"maxPerPost": 1
},
"display": {
"languages": {
"only": [
"en"
],
"excluded": [
"en"
]
},
"countries": {
"only": [
"us"
],
"excluded": [
"us"
]
}
},
"group": {
"id": "string",
"name": "string",
"externalId": "string",
"isDefault": true
},
"platforms": [
"bluesky"
],
"feeds": [
{
"url": "string",
"title": "string",
"connectedAt": "string"
}
],
"readsWorkspaceFeeds": true,
"reviewSources": [
{
"platform": "appstore",
"id": "string",
"url": "string",
"countries": [
"string"
],
"language": "string",
"connectedAt": "string"
}
],
"context": "string",
"matching": {
"requiredTerms": [
"string"
],
"requiredMode": "any",
"requiredGroups": [
[
"string"
]
],
"excludedTerms": [
"string"
],
"excludedAuthors": [
"string"
],
"caseSensitive": true,
"exactPhrase": true,
"subreddits": {
"only": [
"string"
],
"excluded": [
"string"
]
},
"repositories": {
"events": [
"new"
],
"minStars": 1000000,
"minWeeklyStars": 25
}
},
"stats": {
"mentions": 0,
"relevant": 0,
"last7d": 0,
"thisMonth": 0,
"lastMentionAt": "string",
"feedback": {
"relevant": 0,
"notRelevant": 0
},
"noise": {
"scored": 0,
"relevant": 0,
"noisy": true
},
"health": "healthy",
"cost": {
"keywordDays": 0,
"keywordCents": 0,
"billableMentions": 0,
"mentionCents": 0,
"billableComments": 0,
"commentCents": 0,
"totalCents": 0
}
},
"polling": [
{
"platform": "bluesky",
"lastPolledAt": "string",
"emptyPolls": 0
}
],
"createdAt": "string"
}{
"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
}
}