Slack (Bot) node reference - all 47 operations, the credential it needs, and a worked example.
Calls the Slack Web API with a bot token across 47 operations, grouped by resource: messages (post, ephemeral, update, delete, schedule, list/delete scheduled, thread replies, permalink, channel history), reactions (add, remove, read), channels (create, list, info, join, leave, invite, remove user, list members, set topic/purpose, rename, archive, unarchive, open DM), users (look up by email, get info, list), pins and bookmarks, files (upload from URL, upload snippet, info, list, delete), user groups, and workspace info (team info, custom emoji, credential test).
Credential: Slack bot token - see Credentials.
Each operation below lists the scope it needs. Scopes are granted by the workspace admin when the Slack app is installed, on the app's OAuth & Permissions page. If a run fails with a permission error, the node names the missing scope in the error - grant it and re-run; you do not need to rebuild the workflow.
| Operation | What it does | Scope |
|---|
postMessage | Post message | chat:write |
postEphemeralMessage | Post ephemeral message | chat:write |
updateMessage | Update message | chat:write |
deleteMessage | Delete message | chat:write |
scheduleMessage | Schedule message | chat:write |
listScheduledMessages | List scheduled messages | (none — the chat:write app's own token) |
deleteScheduledMessage | Delete scheduled message | chat:write |
getThreadReplies | Get thread replies | channels:history (+ groups:history, im:history, mpim:history) |
getMessagePermalink | Get message permalink | (any valid token) |
getChannelHistory | Get channel history | channels:history (+ groups:history, im:history, mpim:history) |
| Operation | What it does | Scope |
|---|
addReaction | Add reaction | reactions:write |
removeReaction | Remove reaction | reactions:write |
getReactions | Get reactions on a message | reactions:read |
| Operation | What it does | Scope |
|---|
createChannel | Create channel | channels:manage (+ groups:write for private channels) |
listChannels | List channels | channels:read (+ groups:read, im:read, mpim:read) |
getChannelInfo | Get channel info | channels:read (+ groups:read, im:read, mpim:read) |
joinChannel | Join channel | channels:join |
leaveChannel | Leave channel | channels:write (+ groups:write, im:write, mpim:write) |
inviteUsers | Invite users to channel | channels:manage (+ groups:write, im:write, mpim:write) |
removeUserFromChannel | Remove user from channel | channels:manage (+ groups:write, im:write, mpim:write) |
listChannelMembers | List channel members | channels:read (+ groups:read, im:read, mpim:read) |
setTopic | Set channel topic | channels:manage (+ groups:write, im:write, mpim:write) |
setChannelPurpose | Set channel purpose | channels:manage (+ groups:write, im:write, mpim:write) |
renameChannel | Rename channel | channels:manage (+ groups:write, im:write, mpim:write) |
archiveChannel | Archive channel | channels:manage (+ groups:write, im:write, mpim:write) |
unarchiveChannel | Unarchive channel | channels:manage (+ groups:write, im:write, mpim:write) |
openDirectMessage | Open direct message | im:write (+ mpim:write for group DMs) |
| Operation | What it does | Scope |
|---|
findUserByEmail | Find user by email | users:read.email |
getUserInfo | Get user info | users:read |
listUsers | List users | users:read |
| Operation | What it does | Scope |
|---|
addPin | Pin a message | pins:write |
removePin | Unpin a message | pins:write |
listPins | List pinned items | pins:read |
addBookmark | Add bookmark | bookmarks:write |
listBookmarks | List bookmarks | bookmarks:read |
removeBookmark | Remove bookmark | bookmarks:write |
| Operation | What it does | Scope |
|---|
uploadFile | Upload file (from URL) | files:write |
uploadSnippet | Upload snippet | files:write |
getFileInfo | Get file info | files:read |
listFiles | List files | files:read |
deleteFile | Delete file | files:write |
| Operation | What it does | Scope |
|---|
listUserGroups | List user groups | usergroups:read |
createUserGroup | Create user group | usergroups:write |
updateUserGroupMembers | Update user group members | usergroups:write |
| Operation | What it does | Scope |
|---|
getTeamInfo | Get workspace info | team:read |
listCustomEmoji | List custom emoji | emoji:read |
testAuth | Test credential (auth.test) | (any valid token) |
Drop a failed run's log into #ops-alerts as a snippet
A monitoring workflow catches a failed job and needs to share the log without flooding the channel with a 200-line message. Uploading it as a snippet keeps the channel readable and gives the team a permalink to reference.
Set Operation to uploadSnippet, then fill in:
| Field | Value | Notes |
|---|
channel | C01ABCD2EFG | Channel ID or name the snippet is shared into - required for this operation |
content | {{job.logTail}} | The snippet body; Handlebars resolves against the run context |
filename | job-{{job.id}}.log | Defaults to snippet.txt when blank |
title | Failed run {{job.id}} | Defaults to the filename when blank |
Sets {{snippet.fileId}} and {{snippet.permalink}}, plus {{snippet.operation}}. A following Slack node can post the link with {{snippet.permalink}}. Note this operation returns no message ts and no channel key.