mentio-dev · Schema

Alert

CompanySocial ListeningAI IntegrationSDKsReal-time Monitoring

Properties

Name Type Description
id string Alert id (feed_...).
name string
enabled boolean
mode string instant: each matching mention as it happens. hourly: one digest each UTC hour (five minutes past, so the last mentions of the hour are scored) covering the previous full hour, nothing when that hour
filter object
schedule objectnull Daily and weekly alerts only; null for instant and hourly ones.
event string Event name carried in webhook payloads; the mode default unless you set one.
channels array Where it sends.
stats object Computed over this workspace's deliveries.
createdAt string ISO 8601 timestamp, UTC.
View JSON Schema on GitHub

JSON Schema

mentio-dev-alert-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/mentio-dev/json-schema/mentio-dev-alert-schema.json",
  "title": "Alert",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/mentio-dev-api-openapi.json#/components/schemas/Alert",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Alert id (feed_...)."
    },
    "name": {
      "type": "string"
    },
    "enabled": {
      "type": "boolean"
    },
    "mode": {
      "type": "string",
      "enum": [
        "instant",
        "hourly",
        "daily",
        "weekly"
      ],
      "description": "instant: each matching mention as it happens. hourly: one digest each UTC hour (five minutes past, so the last mentions of the hour are scored) covering the previous full hour, nothing when that hour has no mention at or over the rule's relevance floor; Slack, Telegram and webhook channels only. daily: one digest at the scheduled local time. weekly: one digest a week, on schedule.weekday."
    },
    "filter": {
      "type": "object",
      "properties": {
        "keywordIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only these keywords."
        },
        "groupIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only keywords in these groups (grp_...): one rule per customer, say."
        },
        "platforms": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "bluesky",
              "hackernews",
              "github",
              "stackoverflow",
              "devto",
              "reddit",
              "x",
              "youtube",
              "news",
              "linkedin",
              "tiktok",
              "instagram",
              "appstore",
              "googleplay",
              "trustpilot",
              "googlemaps",
              "rss"
            ],
            "description": "Platform: bluesky, hackernews, github, stackoverflow, devto, reddit, x, youtube, news, linkedin, tiktok, instagram, appstore (App Store reviews), googleplay (Google Play reviews), trustpilot (Trustpilot reviews), googlemaps (Google reviews of a place), rss (RSS and Atom feeds a keyword reads)."
          },
          "description": "Only posts from these platforms."
        },
        "minRelevance": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "The rule's relevance floor. Absent, it sends relevant mentions only (scored 40 and up, the classifier's line); lower, down to 0, it also receives the matches the classifier scored as noise; higher, it hears less. Email channels keep the 40 line whatever the rule says. Unclassified mentions never pass."
        },
        "minConfidence": {
          "type": "number",
          "minimum": 0,
          "maximum": 1,
          "description": "Only mentions whose classifier confidence is at least this, 0 to 1. A mention without a confidence never passes."
        },
        "sentiments": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "positive",
              "neutral",
              "negative"
            ],
            "description": "Classifier sentiment."
          },
          "description": "Only these sentiments."
        },
        "intents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "At least one of these intent or topic tags."
        },
        "excludeAuthors": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "maxItems": 200,
          "description": "Never these authors: display names, handles or profile URLs."
        },
        "minFollowers": {
          "type": "integer",
          "minimum": 0,
          "description": "Only authors with at least this many followers. Unknown reach never passes."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "maxItems": 20,
          "description": "Only authors tagged with any of these, in the workspace's tags or those of the mention's own keyword group."
        },
        "linkHosts": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "maxItems": 20,
          "description": "Only posts linking to any of these hosts, the host itself or a subdomain of it (octolens.com also matches blog.octolens.com). A post with no links never passes."
        },
        "languages": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[a-z]{2}$"
          },
          "maxItems": 20,
          "description": "Only posts in any of these languages (ISO 639-1: en, es, de). A post whose language is unknown never passes."
        },
        "countries": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "us",
              "ca",
              "mx",
              "br",
              "ar",
              "co",
              "cl",
              "pe",
              "gb",
              "ie",
              "fr",
              "de",
              "es",
              "pt",
              "it",
              "nl",
              "be",
              "ch",
              "at",
              "se",
              "no",
              "dk",
              "fi",
              "pl",
              "cz",
              "ro",
              "gr",
              "hu",
              "ua",
              "ru",
              "lt",
              "lv",
              "ee",
              "tr",
              "il",
              "ae",
              "sa",
              "eg",
              "ng",
              "ke",
              "za",
              "ma",
              "in",
              "pk",
              "bd",
              "lk",
              "np",
              "cn",
              "hk",
              "tw",
              "jp",
              "kr",
              "sg",
              "my",
              "id",
              "ph",
              "vn",
              "th",
              "au",
              "nz"
            ]
          },
          "maxItems": 100,
          "description": "Only posts whose author is in any of these countries (ISO 3166-1 alpha-2: us, in, de). A post whose country is unknown never passes."
        },
        "notCountries": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "us",
              "ca",
              "mx",
              "br",
              "ar",
              "co",
              "cl",
              "pe",
              "gb",
              "ie",
              "fr",
              "de",
              "es",
              "pt",
              "it",
              "nl",
              "be",
              "ch",
              "at",
              "se",
              "no",
              "dk",
              "fi",
              "pl",
              "cz",
              "ro",
              "gr",
              "hu",
              "ua",
              "ru",
              "lt",
              "lv",
              "ee",
              "tr",
              "il",
              "ae",
              "sa",
              "eg",
              "ng",
              "ke",
              "za",
              "ma",
              "in",
              "pk",
              "bd",
              "lk",
              "np",
              "cn",
              "hk",
              "tw",
              "jp",
              "kr",
              "sg",
              "my",
              "id",
              "ph",
              "vn",
              "th",
              "au",
              "nz"
            ]
          },
          "maxItems": 100,
          "description": "Never posts whose author is in these countries: [\"in\"]. A post whose country is unknown still passes."
        },
        "automated": {
          "type": "boolean",
          "description": "true: only posts that read as machine-made (bots, templated posts); false: only the rest. Omit for both."
        },
        "organization": {
          "type": "boolean",
          "description": "true: only posts by companies, brands and organizations; false: only posts by people. Omit for both."
        },
        "ratings": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "maxItems": 5,
          "description": "Only app store reviews with any of these star ratings (1 to 5): [1, 2] sends the unhappy ones. Every other post fails it."
        },
        "notRatings": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "maxItems": 5,
          "description": "Never reviews with these star ratings (1 to 5): [5] keeps the five star reviews out. Posts that are not reviews still pass."
        },
        "minLikes": {
          "type": "integer",
          "minimum": 0,
          "description": "Only 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."
        },
        "minReposts": {
          "type": "integer",
          "minimum": 0,
          "description": "Only 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."
        },
        "minReplies": {
          "type": "integer",
          "minimum": 0,
          "description": "Only 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."
        },
        "minQuotes": {
          "type": "integer",
          "minimum": 0,
          "description": "Only posts with at least this many quotes, as the platform reported them when the post was found. A post without that count never passes."
        },
        "minViews": {
          "type": "integer",
          "minimum": 0,
          "description": "Only 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."
        },
        "minBookmarks": {
          "type": "integer",
          "minimum": 0,
          "description": "Only 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."
        },
        "anyOf": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/FilterGroup"
          },
          "minItems": 1,
          "maxItems": 10,
          "description": "OR across groups: a mention passes when it meets every condition of at least one group (1 to 10 groups). The other conditions still apply to every mention: the whole filter is (other conditions) AND (group 1 OR group 2 ...). A group takes the conditions of a view filter (platforms, sentiments, intents, keywordKinds, the not lists ...), with no anyOf of its own."
        }
      }
    },
    "schedule": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "hour": {
          "type": "integer",
          "minimum": 0,
          "maximum": 23
        },
        "minute": {
          "type": "integer",
          "minimum": 0,
          "maximum": 59,
          "default": 0
        },
        "timezone": {
          "type": "string",
          "minLength": 1,
          "maxLength": 64
        },
        "skipEmpty": {
          "type": "boolean",
          "default": true
        },
        "weekday": {
          "type": "integer",
          "minimum": 0,
          "maximum": 6,
          "description": "Weekly rules: the day it sends, 0 Sunday to 6 Saturday. Required for mode weekly; ignored on daily rules."
        }
      },
      "required": [
        "hour",
        "timezone"
      ],
      "description": "Daily and weekly alerts only; null for instant and hourly ones."
    },
    "event": {
      "type": "string",
      "description": "Event name carried in webhook payloads; the mode default unless you set one."
    },
    "channels": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "slack",
              "email",
              "webhook",
              "telegram"
            ]
          },
          "label": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind",
          "label"
        ]
      },
      "description": "Where it sends."
    },
    "stats": {
      "type": "object",
      "properties": {
        "sentLast7d": {
          "type": "integer",
          "minimum": 0,
          "description": "Deliveries in the last 7 days, across channels."
        },
        "lastSentAt": {
          "type": [
            "string",
            "null"
          ],
          "description": "ISO 8601 timestamp, UTC."
        },
        "nextRunAt": {
          "type": [
            "string",
            "null"
          ],
          "description": "Hourly, daily and weekly alerts: the next digest; null when disabled or instant."
        }
      },
      "required": [
        "sentLast7d",
        "lastSentAt",
        "nextRunAt"
      ],
      "description": "Computed over this workspace's deliveries."
    },
    "createdAt": {
      "type": "string",
      "description": "ISO 8601 timestamp, UTC."
    }
  },
  "required": [
    "id",
    "name",
    "enabled",
    "mode",
    "filter",
    "schedule",
    "event",
    "channels",
    "stats",
    "createdAt"
  ],
  "$defs": {
    "FilterGroup": {
      "type": "object",
      "properties": {
        "q": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200,
          "description": "Substring in the post text or the author's name."
        },
        "keywordIds": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          },
          "maxItems": 50,
          "description": "Only matches of any of these keywords."
        },
        "notKeywordIds": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          },
          "maxItems": 50,
          "description": "Never matches of these keywords."
        },
        "keywordKinds": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "brand",
              "competitor",
              "topic"
            ]
          },
          "maxItems": 3,
          "description": "Only matches of keywords of any of these kinds: brand, competitor, topic."
        },
        "groupIds": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          },
          "maxItems": 50,
          "description": "Only matches of keywords in any of these groups (grp_...)."
        },
        "notGroupIds": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1
          },
          "maxItems": 50,
          "description": "Never matches of keywords in these groups."
        },
        "platforms": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "bluesky",
              "hackernews",
              "github",
              "stackoverflow",
              "devto",
              "reddit",
              "x",
              "youtube",
              "news",
              "linkedin",
              "tiktok",
              "instagram",
              "appstore",
              "googleplay",
              "trustpilot",
              "googlemaps",
              "rss"
            ],
            "description": "Platform: bluesky, hackernews, github, stackoverflow, devto, reddit, x, youtube, news, linkedin, tiktok, instagram, appstore (App Store reviews), googleplay (Google Play reviews), trustpilot (Trustpilot reviews), googlemaps (Google reviews of a place), rss (RSS and Atom feeds a keyword reads)."
          },
          "maxItems": 20,
          "description": "Only posts from any of these platforms."
        },
        "notPlatforms": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "bluesky",
              "hackernews",
              "github",
              "stackoverflow",
              "devto",
              "reddit",
              "x",
              "youtube",
              "news",
              "linkedin",
              "tiktok",
              "instagram",
              "appstore",
              "googleplay",
              "trustpilot",
              "googlemaps",
              "rss"
            ],
            "description": "Platform: bluesky, hackernews, github, stackoverflow, devto, reddit, x, youtube, news, linkedin, tiktok, instagram, appstore (App Store reviews), googleplay (Google Play reviews), trustpilot (Trustpilot reviews), googlemaps (Google reviews of a place), rss (RSS and Atom feeds a keyword reads)."
          },
          "maxItems": 20,
          "description": "Never posts from these platforms."
        },
        "status": {
          "type": "string",
          "enum": [
            "open",
            "ignored",
            "done"
          ],
          "description": "Only mentions in this status: open, ignored, done."
        },
        "relevant": {
          "type": "boolean",
          "description": "true: only mentions the classifier scored relevant; false: only the rest."
        },
        "minRelevance": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "Only mentions scored at least this."
        },
        "minConfidence": {
          "type": "number",
          "minimum": 0,
          "maximum": 1,
          "description": "Only mentions whose classifier confidence is at least this."
        },
        "sentiments": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "positive",
              "neutral",
              "negative"
            ],
            "description": "Classifier sentiment."
          },
          "maxItems": 3,
          "description": "Only these sentiments."
        },
        "notSentiments": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "positive",
              "neutral",
              "negative"
            ],
            "description": "Classifier sentiment."
          },
          "maxItems": 3,
          "description": "Never these sentiments; an unscored mention still passes."
        },
        "intents": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "maxItems": 20,
          "description": "Only mentions carrying any of these intent or topic tags."
        },
        "notIntents": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "maxItems": 20,
          "description": "Never mentions carrying these tags."
        },
        "automated": {
          "type": "boolean",
          "description": "true: only posts that read as machine-made; false: only the rest."
        },
        "languages": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[a-z]{2}$"
          },
          "maxItems": 20,
          "description": "Only posts in any of these languages (ISO 639-1)."
        },
        "notLanguages": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[a-z]{2}$"
          },
          "maxItems": 20,
          "description": "Never posts in these languages; an unknown language still passes."
        },
        "countries": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "us",
              "ca",
              "mx",
              "br",
              "ar",
              "co",
              "cl",
              "pe",
              "gb",
              "ie",
              "fr",
              "de",
              "es",
              "pt",
              "it",
              "nl",
              "be",
              "ch",
              "at",
              "se",
              "no",
              "dk",
              "fi",
              "pl",
              "cz",
              "ro",
              "gr",
              "hu",
              "ua",
              "ru",
              "lt",
              "lv",
              "ee",
              "tr",
              "il",
              "ae",
              "sa",
              "eg",
              "ng",
              "ke",
              "za",
              "ma",
              "in",
              "pk",
              "bd",
              "lk",
              "np",
              "cn",
              "hk",
              "tw",
              "jp",
              "kr",
              "sg",
              "my",
              "id",
              "ph",
              "vn",
              "th",
              "au",
              "nz"
            ]
          },
          "maxItems": 100,
          "description": "Only posts whose author is in any of these countries (ISO 3166-1 alpha-2: us, in, de). An unknown country never passes."
        },
        "notCountries": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "us",
              "ca",
              "mx",
              "br",
              "ar",
              "co",
              "cl",
              "pe",
              "gb",
              "ie",
              "fr",
              "de",
              "es",
              "pt",
              "it",
              "nl",
              "be",
              "ch",
              "at",
              "se",
              "no",
              "dk",
              "fi",
              "pl",
              "cz",
              "ro",
              "gr",
              "hu",
              "ua",
              "ru",
              "lt",
              "lv",
              "ee",
              "tr",
              "il",
              "ae",
              "sa",
              "eg",
              "ng",
              "ke",
              "za",
              "ma",
              "in",
              "pk",
              "bd",
              "lk",
              "np",
              "cn",
              "hk",
              "tw",
              "jp",
              "kr",
              "sg",
              "my",
              "id",
              "ph",
              "vn",
              "th",
              "au",
              "nz"
            ]
          },
          "maxItems": 100,
          "description": "Never posts whose author is in these countries; an unknown country still passes."
        },
        "organization": {
          "type": "boolean",
          "description": "true: only posts by companies, brands and organizations; false: only posts by people."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "maxItems": 20,
          "description": "Only authors tagged with any of these, in the workspace's tags or those of the mention's own keyword group."
        },
        "notTags": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "maxItems": 20,
          "description": "Never authors tagged with any of these, in the workspace's tags or those of the mention's own keyword group."
        },
        "linkHosts": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "maxItems": 20,
          "description": "Only posts linking to any of these hosts, the host itself or a subdomain of it."
        },
        "notLinkHosts": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "maxItems": 20,
          "description": "Never posts linking to these hosts."
        },
        "subreddits": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 60
          },
          "maxItems": 50,
          "description": "Only Reddit posts from any of these subreddits (names without the r/, any case); every other post fails it."
        },
        "notSubreddits": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 60
          },
          "maxItems": 50,
          "description": "Never Reddit posts from these subreddits; posts from other platforms still pass."
        },
        "minFollowers": {
          "type": "integer",
          "minimum": 0,
          "description": "Only authors with at least this many followers; unknown reach never passes."
        },
        "maxFollowers": {
          "type": "integer",
          "minimum": 0,
          "description": "Only authors with at most this many followers; unknown reach never passes."
        },
        "isReply": {
          "type": "boolean",
          "description": "true: only replies and comments; false: only top-level posts."
        },
        "kind": {
          "type": "string",
          "enum": [
            "post",
            "comment",
            "repository"
          ],
          "description": "Only posts (post), only comments (comment) or only GitHub repository events (repository)."
        },
        "excludeAuthors": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "maxItems": 200,
          "description": "Never these authors: display names, handles or profile URLs."
        },
        "ratings": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "maxItems": 5,
          "description": "Only app store reviews with any of these star ratings; every other post fails it."
        },
        "notRatings": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "maxItems": 5,
          "description": "Never reviews with these star ratings; posts that are not reviews still pass."
        },
        "minLikes": {
          "type": "integer",
          "minimum": 0,
          "description": "Only 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."
        },
        "minReposts": {
          "type": "integer",
          "minimum": 0,
          "description": "Only 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."
        },
        "minReplies": {
          "type": "integer",
          "minimum": 0,
          "description": "Only 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."
        },
        "minQuotes": {
          "type": "integer",
          "minimum": 0,
          "description": "Only posts with at least this many quotes, as the platform reported them when the post was found. A post without that count never passes."
        },
        "minViews": {
          "type": "integer",
          "minimum": 0,
          "description": "Only 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."
        },
        "minBookmarks": {
          "type": "integer",
          "minimum": 0,
          "description": "Only 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."
        }
      },
      "additionalProperties": false,
      "description": "A group of conditions, all of which must hold: the vocabulary of a view filter, without anyOf."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/mentio-dev-alert"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.