Node reference
Discord
Discord node reference - all 92 operations, the credential it needs, and a worked example.
Calls the Discord REST API across 92 operations. Messaging works either through an incoming webhook URL (zero setup, one channel, no credential) or a bot token, which additionally unlocks: reading messages and reactions, pins and polls, channel and thread management, members, roles, bans, invites, emoji, scheduled events, and webhook management. No trigger node - Discord delivers content events only over a persistent Gateway WebSocket, not an HTTP callback.
Credential: Discord (Bot) - see Credentials.
Each operation below lists the permission it needs. Permissions are granted to the bot per-server and per-channel when it is invited (these are Discord permissions, not OAuth scopes). If a run fails with a permission error, the node names the missing permission in the error - grant it and re-run; you do not need to rebuild the workflow.
| Operation | What it does | Permission |
|---|
sendMessage | Send message | (none — posts via the pasted webhook URL) |
editMessage | Edit message | (none — the pasted webhook URL owns the message) |
deleteMessage | Delete message | (none — the pasted webhook URL owns the message) |
getWebhookMessage | Get sent message | (none — the pasted webhook URL owns the message) |
createThread | Create forum post | (none — posts via the pasted webhook URL) |
executeSlackWebhook | Send Slack-format payload | (none — posts via the pasted webhook URL) |
executeGithubWebhook | Send GitHub-format payload | (none — posts via the pasted webhook URL) |
| Operation | What it does | Permission |
|---|
sendChannelMessage | Send channel message | SEND_MESSAGES (SEND_MESSAGES_IN_THREADS in a thread) |
sendDirectMessage | Send direct message | (none — a DM channel has no server permissions) |
getMessage | Get message | VIEW_CHANNEL + READ_MESSAGE_HISTORY |
getMessages | Get channel messages | VIEW_CHANNEL + READ_MESSAGE_HISTORY |
searchGuildMessages | Search server messages | READ_MESSAGE_HISTORY |
editChannelMessage | Edit channel message | (none — the bot's own messages only; MANAGE_MESSAGES to edit flags) |
deleteChannelMessage | Delete channel message | MANAGE_MESSAGES (not needed for the bot's own message) |
bulkDeleteMessages | Bulk delete messages | MANAGE_MESSAGES |
crosspostMessage | Publish announcement message | SEND_MESSAGES (+ MANAGE_MESSAGES if not the bot's own message) |
| Operation | What it does | Permission |
|---|
addReaction | Add reaction | READ_MESSAGE_HISTORY (+ ADD_REACTIONS for a new emoji) |
removeOwnReaction | Remove my reaction | (none — any valid bot token) |
removeUserReaction | Remove a user's reaction | MANAGE_MESSAGES |
getReactions | Get reactions | (none — any valid bot token) |
removeEmojiReactions | Remove all reactions for emoji | MANAGE_MESSAGES |
removeAllReactions | Remove all reactions | MANAGE_MESSAGES |
| Operation | What it does | Permission |
|---|
pinMessage | Pin message | PIN_MESSAGES |
unpinMessage | Unpin message | PIN_MESSAGES |
getPinnedMessages | Get pinned messages | VIEW_CHANNEL + READ_MESSAGE_HISTORY |
getPollAnswerVoters | Get poll answer voters | VIEW_CHANNEL |
endPoll | End poll | (none — the bot's own polls only) |
| Operation | What it does | Permission |
|---|
getChannel | Get channel | VIEW_CHANNEL |
modifyChannel | Modify channel | MANAGE_CHANNELS (MANAGE_ROLES to change overwrites) |
deleteChannel | Delete channel | MANAGE_CHANNELS (MANAGE_THREADS for a thread) |
triggerTyping | Trigger typing indicator | (none — any valid bot token) |
followAnnouncementChannel | Follow announcement channel | MANAGE_WEBHOOKS (in the target channel) |
editChannelPermissions | Set permission overwrite | MANAGE_ROLES |
deleteChannelPermission | Delete permission overwrite | MANAGE_ROLES |
getChannelInvites | Get channel invites | MANAGE_CHANNELS |
createChannelInvite | Create channel invite | CREATE_INSTANT_INVITE |
| Operation | What it does | Permission |
|---|
startThread | Start thread | CREATE_PUBLIC_THREADS (CREATE_PRIVATE_THREADS for a private thread) |
startThreadFromMessage | Start thread from message | CREATE_PUBLIC_THREADS |
joinThread | Join thread | (none — any valid bot token) |
leaveThread | Leave thread | (none — any valid bot token) |
addThreadMember | Add thread member | SEND_MESSAGES |
removeThreadMember | Remove thread member | MANAGE_THREADS |
getThreadMember | Get thread member | (none — any valid bot token) |
listThreadMembers | List thread members | (none — needs the GUILD_MEMBERS privileged intent) |
listPublicArchivedThreads | List public archived threads | READ_MESSAGE_HISTORY |
listPrivateArchivedThreads | List private archived threads | READ_MESSAGE_HISTORY + MANAGE_THREADS |
listJoinedPrivateArchivedThreads | List joined private archived threads | READ_MESSAGE_HISTORY |
| Operation | What it does | Permission |
|---|
getGuild | Get server | (none — the bot must be a member of the server) |
getGuildChannels | Get server channels | (none — any valid bot token) |
createGuildChannel | Create server channel | MANAGE_CHANNELS |
modifyChannelPositions | Reorder server channels | MANAGE_CHANNELS |
listActiveThreads | List active threads | (none — any valid bot token) |
getGuildInvites | Get server invites | MANAGE_GUILD |
getGuildIntegrations | Get server integrations | MANAGE_GUILD |
getPruneCount | Get prune count | KICK_MEMBERS |
| Operation | What it does | Permission |
|---|
getGuildMember | Get member | (none — the bot must be a member of the server) |
listGuildMembers | List members | (none — needs the GUILD_MEMBERS privileged intent) |
searchGuildMembers | Search members | (none — any valid bot token) |
modifyGuildMember | Modify member | MANAGE_ROLES / MANAGE_NICKNAMES / MODERATE_MEMBERS (one per field changed) |
modifyCurrentMember | Change my nickname | CHANGE_NICKNAME |
addRole | Add role | MANAGE_ROLES |
removeRole | Remove role | MANAGE_ROLES |
kickMember | Kick member | KICK_MEMBERS |
| Operation | What it does | Permission |
|---|
banMember | Ban member | BAN_MEMBERS |
unbanMember | Unban member | BAN_MEMBERS |
getGuildBan | Get ban | BAN_MEMBERS |
getGuildBans | List bans | BAN_MEMBERS |
bulkBanMembers | Bulk ban members | BAN_MEMBERS + MANAGE_GUILD |
| Operation | What it does | Permission |
|---|
getGuildRoles | Get roles | (none — any valid bot token) |
createRole | Create role | MANAGE_ROLES |
modifyRole | Modify role | MANAGE_ROLES |
deleteRole | Delete role | MANAGE_ROLES |
| Operation | What it does | Permission |
|---|
listGuildEmojis | List server emojis | (none — any valid bot token) |
getGuildEmoji | Get server emoji | (none — any valid bot token) |
createGuildEmoji | Create server emoji | CREATE_GUILD_EXPRESSIONS |
modifyGuildEmoji | Modify server emoji | MANAGE_GUILD_EXPRESSIONS |
deleteGuildEmoji | Delete server emoji | MANAGE_GUILD_EXPRESSIONS |
| Operation | What it does | Permission |
|---|
listScheduledEvents | List scheduled events | (none — the bot must be a member of the server) |
createScheduledEvent | Create scheduled event | CREATE_EVENTS |
getScheduledEvent | Get scheduled event | VIEW_CHANNEL |
modifyScheduledEvent | Modify scheduled event | MANAGE_EVENTS |
deleteScheduledEvent | Delete scheduled event | MANAGE_EVENTS |
getScheduledEventUsers | Get scheduled event subscribers | VIEW_CHANNEL |
| Operation | What it does | Permission |
|---|
getCurrentUser | Get my bot user | (none — any valid bot token) |
getUser | Get user | (none — any valid bot token) |
createDM | Open DM channel | (none — any valid bot token) |
| Operation | What it does | Permission |
|---|
createWebhook | Create webhook | MANAGE_WEBHOOKS |
getChannelWebhooks | Get channel webhooks | MANAGE_WEBHOOKS |
getGuildWebhooks | Get server webhooks | MANAGE_WEBHOOKS |
getWebhook | Get webhook | MANAGE_WEBHOOKS |
modifyWebhook | Modify webhook | MANAGE_WEBHOOKS |
deleteWebhook | Delete webhook | MANAGE_WEBHOOKS |
Post a build-failure alert into a team channel as the bot
A CI webhook trigger fires when a build fails. The node posts into the engineering channel with a coloured embed linking straight to the failing build, so the alert is readable at a glance instead of a wall of text. This is a bot-token operation, so it needs a Discord bot credential - not a pasted webhook URL.
Set Operation to sendChannelMessage, then fill in:
| Field | Value | Notes |
|---|
channelId | 123456789012345678 | Enable Developer Mode in Discord, then right-click the channel -> Copy Channel ID |
content | Build failed on {{ci.branch}} | Plain message text; Discord caps it at 2000 characters |
embedTitle | Build #{{ci.buildNumber}} failed | Embed heading |
embedDescription | {{ci.errorSummary}} | Embed body |
embedUrl | {{ci.buildUrl}} | Makes the embed title a link to the build |
embedColor | #ED4245 | Hex colour for the embed's left border; converted to Discord's decimal int |
Sets {{alert.messageId}} and {{alert.channelId}}, the whole message at {{alert.message}}, and the resolved text at {{alert.messageContent}}. A later Discord node can pin or edit it by passing {{alert.messageId}} as its messageId.