Skip to content

Slack

Slack

Slack is a channel-based messaging platform that connects teams and tools in a single environment. With the Slack integration in SquadOS, your agents can send and read messages, create and archive channels, search conversations, upload files, and manage users — all programmatically, without manual intervention.

This tool uses OAuth 2.0 (OAUTH2) to connect.

Authentication is managed by Composio via a hosted OAuth flow. You authorize access to your Slack workspace on the Composio secure connection page — no manual API key required.

FieldRequiredDescription
oauth_tokenYesOAuth token automatically generated by the Slack authorization flow. Managed by Composio.
  1. Go to Tools in the side menu (/admin/tools), open the Available tab, and click the Slack card.
  2. Click Connect — you will be redirected to the Composio secure authorization page.
  3. Click Allow to authorize Composio’s access to your Slack workspace.
  4. After authorization, you are returned to SquadOS with the Slack account connected.
  1. Go to Tools in the side menu (/admin/tools).
  2. Open the Available tab and search for Slack.
  3. Click the card to open the details modal and hit Connect.
  4. You’re taken to the secure connection page hosted by Composio, where you authorize access (OAuth) to your Slack workspace.
  5. Once done, you’re sent back to SquadOS with the account connected and the tool available to agents. (Connection-flow details in Organization Tools.)

What does the Composio + Slack integration do?

Section titled “What does the Composio + Slack integration do?”

Composio turns Slack’s API into ready-to-use tools that AI agents and automations can call. With the integration you can send and read messages, manage channels, upload files, react to events, search conversations, and more. Composio supports two toolkits: Slack (authenticate as a user for workspace-level actions) and Slackbot (authenticate as a bot for in-channel messaging, app mentions, and slash commands).

Do I have to be a Workspace Owner to install the app?

Section titled “Do I have to be a Workspace Owner to install the app?”

In some cases — yes. When installing non-Marketplace apps, you’ll need to be an owner to install directly. As a member, you’d need to request approval or ask the owner to disable the approved apps requirement.

Why am I being asked to submit a request during auth?

Section titled “Why am I being asked to submit a request during auth?”

Because Require approved apps is enabled in the workspace’s App Management Settings. Slack is asking for admin/owner approval before completing the install. See the Composio guide for using your own OAuth credentials as an alternative.

What is the difference between Slack and Slackbot toolkits?

Section titled “What is the difference between Slack and Slackbot toolkits?”

The Slack toolkit provides workspace-level API access (channels, files, users) and can post as the app. The Slackbot toolkit is bot-centric (messaging, interactivity) and posts as the bot user. Slack triggers cover workspace events; Slackbot covers bot entry points like app mentions, DMs, and slash commands.

What does the as_user parameter do in Slack tools?

Section titled “What does the as_user parameter do in Slack tools?”

For the Slack toolkit, set as_user=true to post as the authenticated user. For Slackbot, leave it blank (defaults to false). A missing_charset error usually means invalid as_user, wrong channel ID, or missing required fields.

SLACK_SEND_MESSAGE

Posts a message to a Slack channel, DM, or private group. Provide exactly one visible content mode: markdown_text for normal Markdown content, or blocks for raw Slack Block Kit layouts. Use fallback_text only with blocks. Not idempotent — duplicate calls post duplicate messages.

NameTypeRequiredDescription
channelstringYesID or name of the channel, private group, or IM channel to send the message to. Do NOT include the ’#’ prefix. For DMs, use the channel ID returned by SLACK_OPEN_DM.
markdown_textstringNoUse for normal LLM-written message content. Pass standard Markdown; supports headings, bold, italic, links, lists, code, quotes, dividers, and tables.
blocksarrayNoUse only when you need Slack Block Kit capabilities that Markdown cannot express: buttons, select menus, checkboxes, date/time pickers, etc. Do not use together with markdown_text.
thread_tsstringNoTimestamp (ts) of an existing message to make this a threaded reply.
fallback_textstringNoRequired only when using blocks. Plain text for notifications and clients that cannot render blocks.
unfurl_linksbooleanNoEnable unfurling of text-based URLs.
unfurl_mediabooleanNoEnable media previews from URLs.
reply_broadcastbooleanNoIf true for a threaded reply, also posts to main channel.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_CHAT_POST_MESSAGE

(DEPRECATED: use SLACK_SEND_MESSAGE) Posts a message to a Slack channel, DM, or private group. Requires at least one content field (markdown_text, text, blocks, or attachments). Body limit ~4000 characters. Rate-limited at ~1 req/sec.

NameTypeRequiredDescription
channelstringYesID or name of the channel, private group, or IM channel.
markdown_textstringNoPREFERRED: Write your message in markdown for nicely formatted display.
textstringNoDEPRECATED: This sends raw text only; use the markdown_text field.
blocksstringNoDEPRECATED: Use markdown_text instead. Block Kit layout blocks as JSON string.
thread_tsstringNoTimestamp of an existing message for threaded reply.
link_namesbooleanNoAutomatically hyperlink channel names and usernames in the text.
unfurl_linksbooleanNoEnable unfurling of URLs.
unfurl_mediabooleanNoEnable media previews.
reply_broadcastbooleanNoIf true for a threaded reply, also posts to main channel.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_SCHEDULE_MESSAGE

Schedules a message to a Slack channel, DM, or private group for a future time (post_at). Scheduling is limited to 120 days in advance.

NameTypeRequiredDescription
channelstringNoChannel, private group, or DM channel ID (e.g., C1234567890) or name. Bot must be a member of the target channel.
post_atstringNoUnix EPOCH timestamp (integer seconds since 1970-01-01 00:00:00 UTC) for the future message send time.
markdown_textstringNoPREFERRED: Write your scheduled message in markdown for nicely formatted display.
textstringNoPrimary text of the message; use markdown_text for formatting.
thread_tsstringNoTimestamp of the parent message for the scheduled message to be a thread reply.
unfurl_linksbooleanNoPass false to disable automatic link unfurling.
unfurl_mediabooleanNoPass false to disable automatic media unfurling.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_SEND_EPHEMERAL_MESSAGE

Sends an ephemeral message visible only to the specified user in a channel; other channel members cannot see it. Both the bot and the target user must be members of the specified channel.

NameTypeRequiredDescription
userstringYesUser ID of the user to send the ephemeral message to.
channelstringYesChannel, private group, or DM channel to send message to.
markdown_textstringNoPREFERRED: Write your ephemeral message in markdown. Maximum 12,000 characters.
textstringNoThe message text to display. Required unless ‘blocks’ or ‘attachments’ is provided.
thread_tsstringNoProvide another message’s ts value to make this message a reply.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_CREATE_CHANNEL

Initiates a public or private channel-based conversation in a Slack workspace. Immediately creates the channel; invoke only after explicit user confirmation.

NameTypeRequiredDescription
namestringYesName of the public or private channel to create. Must be lowercase, unique, and contain no spaces or periods; max 80 characters.
is_privatebooleanNoCreate a private channel instead of a public one.
team_idstringNoEncoded team id to create the channel in, required if org token is used.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_DELETE_CHANNEL

Permanently and irreversibly deletes a specified public or private channel, including all its messages and files, within a Slack Enterprise Grid organization.

NameTypeRequiredDescription
channel_idstringYesID of the channel to be permanently deleted.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_ARCHIVE_CONVERSATION

Archives a Slack conversation by its ID, rendering it read-only and hidden while retaining history. Ideal for cleaning up inactive channels; be aware that some channels (like #general or certain DMs) cannot be archived.

NameTypeRequiredDescription
channelstringNoID of the Slack conversation to archive.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_UNARCHIVE_CHANNEL

Reverses conversation archival.

NameTypeRequiredDescription
channelstringYesID of conversation to unarchive.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_RENAME_CONVERSATION

Renames a Slack channel, automatically adjusting the new name to meet naming conventions (e.g., converting to lowercase), which may affect integrations using the old name.

NameTypeRequiredDescription
channelstringNoID of the conversation (channel) to rename.
namestringNoNew name for the conversation. Must be 80 characters or less and contain only lowercase letters, numbers, hyphens, and underscores.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_LIST_ALL_CHANNELS

Lists conversations available to the user with various filters and search options. Always use resolved channel_id (not display names) for downstream operations, as names may be non-unique.

NameTypeRequiredDescription
limitintegerNoMaximum number of channels to return per page (1 to 1000).
typesstringNoComma-separated list of conversation types: public_channel, private_channel, im, mpim. Defaults to public_channel.
cursorstringNoPagination cursor (from next_cursor of a previous response).
team_idstringNoEncoded team id to list channels in. Required with org token.
exclude_archivedbooleanNoExcludes archived channels if true.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_LIST_CONVERSATIONS

Lists conversations (channels/DMs) accessible to a specified user (or the authenticated user if no user ID is provided). Returns conversation IDs (C* for channels, G* for group DMs), not display names.

NameTypeRequiredDescription
userstringNoThe ID of the user whose conversations will be listed. If not provided, conversations for the authenticated user are returned.
limitintegerNoThe maximum number of items to return per page.
typesstringNoComma-separated list of conversation types to include: public_channel, private_channel, im, mpim.
cursorstringNoPagination cursor for retrieving the next set of results.
team_idstringNoThe team (workspace) ID to filter conversations by.
exclude_archivedbooleanNoSet to true to exclude archived channels from the list.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_FETCH_CONVERSATION_HISTORY

Fetches a chronological list of messages and events from a specified Slack conversation. IMPORTANT LIMITATION: This action only returns messages from the main channel timeline. Threaded replies are NOT returned — use SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION for that.

NameTypeRequiredDescription
channelstringYesThe ID of the public channel, private channel, direct message, or multi-person direct message to fetch history from.
limitintegerNoMaximum number of messages to request in this single Slack API call (1-1000). Defaults to 100.
cursorstringNoPagination cursor from response_metadata.next_cursor of a previous response.
oldeststringNoStart of the time range of messages to include in results. Accepts a Unix timestamp or a Slack timestamp.
lateststringNoEnd of the time range of messages to include in results.
inclusivebooleanNoWhen true, includes messages at the exact ‘oldest’ or ‘latest’ boundary timestamps in results.
include_all_metadatabooleanNoReturn all metadata associated with messages in the conversation history.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION

Retrieves replies to a specific parent message in a Slack conversation, using the channel ID and the parent message’s timestamp (ts).

NameTypeRequiredDescription
channelstringNoID of the conversation (channel, direct message, etc.) to fetch the thread from. Must be a channel ID, not a channel name.
tsstringNoTimestamp of the parent message in the thread. Must be the exact full timestamp string of the root/parent message.
limitintegerNoMaximum number of messages to return.
cursorstringNoPagination cursor from response_metadata.next_cursor of a previous response.
oldeststringNoOldest message timestamp in the time range to include results.
lateststringNoLatest message timestamp in the time range to include results.
inclusivebooleanNoWhether to include messages with latest or oldest timestamps in results.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_ADD_REACTION_TO_AN_ITEM

Adds a specified emoji reaction to an existing message in a Slack channel, identified by its timestamp; does not remove or retrieve reactions.

NameTypeRequiredDescription
namestringYesName of the emoji to add as a reaction (e.g., ‘thumbsup’). This is the emoji name without colons. For emojis with skin tone modifiers, append ‘::skin-tone-X’ where X is a number from 2 to 6.
channelstringYesID of the channel where the message to add the reaction to was posted.
timestampstringYesTimestamp of the message to which the reaction will be added (e.g., ‘1234567890.123456’).
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_REMOVE_REACTION_FROM_ITEM

Removes an emoji reaction from a message, file, or file comment in Slack. Provide exactly one targeting method: channel+timestamp together, file, or file_comment.

NameTypeRequiredDescription
namestringYesName of the emoji reaction to remove (e.g., ‘thumbsup’), without colons.
channelstringNoChannel ID of the message. Required if timestamp is provided.
timestampstringNoTimestamp of the message. Required if channel is provided.
filestringNoID of the file to remove the reaction from.
file_commentstringNoID of the file comment to remove the reaction from.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_UPLOAD_OR_CREATE_A_FILE_IN_SLACK

Upload files, images, screenshots, documents, or any media to Slack channels or threads. Supports all file types including images (PNG, JPG, JPEG, GIF), documents (PDF, DOCX, TXT), code files, and more.

NameTypeRequiredDescription
filestringNoFile(s) to upload. At least one of ‘content’ or ‘file’ must be provided.
contentstringNoText content of the file; use for text-based files. At least one of ‘content’ or ‘file’ must be provided.
channelsstringNoChannel ID where the file will be shared. Use channel ID (e.g., C1234567890) not channel name.
titlestringNoTitle of the file, displayed in Slack.
filenamestringNoFilename to be displayed in Slack. Required when using ‘content’ parameter.
thread_tsstringNoTimestamp of a parent message to upload this file as a reply.
initial_commentstringNoOptional message to introduce the file in specified ‘channels’.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_LIST_FILES_WITH_FILTERS_IN_SLACK

Lists files and their metadata within a Slack workspace, filterable by user, channel, timestamp, or type; returns metadata only, not file content.

NameTypeRequiredDescription
channelstringNoFilter files appearing in a specific channel, indicated by its Slack Channel ID.
userstringNoFilter files created by a single user. Provide the Slack User ID.
typesstringNoFilter by file type (comma-separated): all, spaces, snippets, images, pdfs, gdocs, zips. Defaults to ‘all’.
ts_fromintegerNoFilter files created after this Unix timestamp (inclusive).
ts_tointegerNoFilter files created before this Unix timestamp (inclusive).
countstringNoNumber of files to return per page. Default is 100, maximum is 1000.
pagestringNoPage number of results to retrieve when paginating. Default is 1.
team_idstringNoThe team/workspace ID to list files from. Required for Enterprise Grid workspaces.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_LIST_ALL_USERS

Retrieves a paginated list of all users with profile details, status, and team memberships in a Slack workspace. Filter is_bot, is_app_user, and deleted fields to build human-only rosters.

NameTypeRequiredDescription
limitintegerNoMaximum number of items to return per page. Recommended to set a value (e.g., 100).
cursorstringNoPagination cursor for fetching subsequent pages.
team_idstringNoThe workspace/team ID to list users from. Required when using an org-level token (Enterprise Grid).
include_localebooleanNoInclude the locale field for each user. Defaults to false.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_FIND_USERS

Find users in a Slack workspace by any criteria — email, name, display name, or other text. Includes optimized email lookup for exact email matches.

NameTypeRequiredDescription
search_querystringNoSearch query to find users. Can be a Slack user ID, email address, or name. Required if email is not provided.
emailstringNoEmail address to search for. Convenience parameter for email-based search.
limitintegerNoMaximum number of users to return (1 to 1000). Defaults to 50.
exact_matchbooleanNoWhen true, only returns users with exact matches (case-insensitive).
include_botsbooleanNoInclude bot users in search results. Defaults to false.
team_idstringNoThe ID of the Slack workspace. Required when using an org-level token.
include_deletedbooleanNoInclude deleted/deactivated users in search results. Defaults to false.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_FIND_USER_BY_EMAIL_ADDRESS

Retrieves the Slack user object for an active user by their registered email address; requires the users:read.email OAuth scope. Fails with ‘users_not_found’ if the email is unregistered or the user is inactive.

NameTypeRequiredDescription
emailstringYesThe email address of the user to look up.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_INVITE_USERS_TO_A_SLACK_CHANNEL

Invites users to an existing Slack channel using their valid Slack User IDs. Response is always HTTP 200; inspect ok, error, and errors fields to confirm users were added.

NameTypeRequiredDescription
channelstringNoID of the public or private Slack channel to invite users to; must be an existing channel.
usersstringNoComma-separated string of valid Slack User IDs to invite. Up to 1000 user IDs can be included.
forcebooleanNoWhen set to true and multiple user IDs are provided, continue inviting the valid ones while disregarding invalid IDs.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_REMOVE_USER_FROM_CONVERSATION

Removes a specified user from a Slack conversation (channel); the caller must have permissions to remove users and cannot remove themselves using this action.

NameTypeRequiredDescription
channelstringNoID of the conversation (channel) to remove the user from.
userstringNoThe ID of the user to be removed from the conversation.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_UPDATES_A_SLACK_MESSAGE

Updates a Slack message by timestamp. Provide exactly one visible content mode: markdown_text for normal Markdown content, or blocks for raw Slack Block Kit layouts.

NameTypeRequiredDescription
tsstringYesTimestamp of the message to update (e.g., '1234567890.123456').
channelstringYesID or name of the channel containing the message to update. Do NOT include the ’#’ prefix.
markdown_textstringNoUse for normal LLM-written updated message content. Supports standard Markdown.
blocksarrayNoUse when you need Slack Block Kit capabilities. Do not use together with markdown_text.
fallback_textstringNoRequired only when using blocks. Plain text for notifications.
as_userbooleanNoPass true to update the message as the authenticated user.
reply_broadcastbooleanNoIf true and the message is a thread reply, broadcast the updated message to the channel.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_DELETES_A_MESSAGE_FROM_A_CHAT

Deletes a message, identified by its channel ID and timestamp, from a Slack channel, private group, or direct message conversation; the authenticated user or bot must be the original poster.

NameTypeRequiredDescription
channelstringNoThe ID of the channel, private group, or direct message conversation containing the message to be deleted.
tsstringNoTimestamp of the message to be deleted. Must be the exact Slack message timestamp string with fractional precision (e.g., ‘1234567890.123456’).
as_userbooleanNoLegacy parameter. Pass true to delete the message as the authed user.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.

SLACK_SEARCH_MESSAGES

Workspace-wide Slack message search with date ranges and filters. Use query modifiers (e.g., in:#channel, from:@user, before/after:YYYY-MM-DD), sorting (score/timestamp), and pagination.

NameTypeRequiredDescription
querystringYesSearch query supporting various modifiers: in:#channel-name, from:@username, "exact phrase", before:YYYY-MM-DD, after:YYYY-MM-DD, has:link, has:file.
sortstringNoSort results by score (relevance) or timestamp (chronological).
sort_dirstringNoSort direction: asc (ascending) or desc (descending).
countintegerNoNumber of messages per page (max 100). With auto_paginate, total messages desired.
pageintegerNoPage number for manual pagination control.
cursorstringNoCursor for cursor-mark pagination. Use * for the first call.
highlightbooleanNoEnable highlighting of search terms in results.
auto_paginatebooleanNoWhen enabled, count becomes the total messages desired and the system handles pagination automatically.
team_idstringNoThe ID of the workspace to search in. Only relevant when using an org-level token.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if the execution failed.
successfulbooleanYesWhether the action execution was successful.