Watch a Discord server under a keyword
Files every message of a connected server (or of channelIds) under the keyword, without a text match. Uses no keyword slot. The keyword must be a TEXT keyword of this workspace (400 DISCORD_KEYWORD_NOT_TEXT for a review source, 404 KEYWORD_NOT_FOUND otherwise); a keyword watches a server once (409 DISCORD_MONITOR_EXISTS). Omit dailyCap for the plan default, clamp(round(0.02 × monthly mentions), 25, 500) — 100 on the free trial; an explicit cap may be 1–2000. Every channelIds entry must be a readable channel of the server inside its channel scope (400 DISCORD_CHANNEL_INVALID). Requires an admin-scoped key; 403 DISCORD_SOURCE_UNAVAILABLE while the Discord source is not enabled for the workspace.
Authorizations
Clerk API key. Create one in Settings → API Keys. Pass as Authorization: Bearer <key>. Keys carry a scope — read, write (implies read) or admin (implies write) — chosen when the key is minted. Each operation's security requirement (and its x-required-scope extension) names the minimum scope it needs; request the least-privileged key that covers the operations you call.
Body
The parent TEXT keyword the server's messages are filed under. Uses no keyword slot.
x <= 9007199254740991101
The connected server's link id (DiscordServer.linkId).
x <= 900719925474099112
Channels to watch; omit or [] for every channel the server link reads. Each id must be a readable channel of the server and inside its channel scope.
500A Discord snowflake id as a decimal string (64-bit — never parse it as a number).
^\d{1,20}$Posts per UTC day (1–2000). Omit for the plan default: clamp(round(0.02 × monthly mentions), 25, 500) — 100 on the free trial.
1 <= x <= 2000100
Response
200 response
-9007199254740991 <= x <= 9007199254740991-9007199254740991 <= x <= 9007199254740991A Discord snowflake id as a decimal string (64-bit — never parse it as a number).
^\d{1,20}$"1290000000000000200"
-9007199254740991 <= x <= 9007199254740991Watched channel ids; [] = every channel the server link reads.
A Discord snowflake id as a decimal string (64-bit — never parse it as a number).
^\d{1,20}$paused: paused by an admin. paused_bot_removed: waits for the bot to be re-added to the server, then resumes on its own.
active, paused, paused_bot_removed -9007199254740991 <= x <= 9007199254740991Posts created so far this UTC day.
-9007199254740991 <= x <= 9007199254740991e.g. missing_access when the bot can read none of the watched channels.
Expected mentions per month at this monitor's cap; null = unknown (no stats yet).
-9007199254740991 <= x <= 9007199254740991"2026-10-28T12:00:00.000Z"
"2026-10-28T12:00:00.000Z"
