Duplicate a keyword
A new keyword with this one's settings and a new `term` (or the same term in another group): its kind, platforms, context, every matching rule, its monthly mention cap and its comments setting. Review apps and feeds are copied only when listed in `include`. It is a new keyword: $5 per month, and the newest posts of the last 30 days come in at once, as with any new keyword.
API key minted via POST /v1/api-keys (format mk_live_...)
In: header
Path Parameters
Keyword id (kw_...).
1 <= lengthThe term of the copy. The same term as the original only in another group (groupId): a term is tracked once per group. Wrap it in double quotes for the exact phrase only.
2 <= length <= 80The group of the copy (grp_...); omit for the original's group.
1 <= lengthAlso copy these: reviewSources (its review apps) and feeds (its RSS or Atom feeds). Off by default, since two keywords on one app or feed collect, and bill, every review or item twice.
items <= 2Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://api.mentio.dev/v1/keywords/kw_abc123/duplicate" \ -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,
"welcome": true,
"own": 0
},
"comments": {
"enabled": true,
"maxPerPost": 1
},
"group": {
"id": "string",
"name": "string",
"externalId": "string",
"isDefault": true
},
"platforms": [
"bluesky"
],
"feeds": [
{
"url": "string",
"title": "string",
"connectedAt": "string"
}
],
"reviewSources": [
{
"platform": "appstore",
"id": "string",
"url": "string",
"countries": [
"string"
],
"language": "string",
"connectedAt": "string"
}
],
"context": "string",
"matching": {
"requiredTerms": [
"string"
],
"requiredMode": "any",
"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
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"retryAfterSeconds": 0
}
}Delete a keyword DELETE
Removes the keyword and its matches. Posts also matched by another keyword stay.
Get a keyword's health GET
Whether the keyword earns what it costs over a trailing window (`range`, default 30d): a status (healthy, noisy, quiet, capped, paused, new) with the reasons in plain words, its numbers by platform and week, what it cost, the words and authors its noise is made of, and suggestions. Each suggestion carries a `patch` to send to PATCH /v1/keywords/{id} as is, and the effect it would have had, measured by running the matcher's own rules over the window's posts. `ai=true` adds a context rewritten by a language model (cached a day, at most 20 model calls an hour per workspace). Read only and never billed; the report is cached for 5 minutes, and a change to the keyword starts a fresh one. At most 30 reads a minute per workspace.