The Slack API offers programmatic control over a wide range of workspace and enterprise‑grid functions, including ending calls, adding remote files, and extensive admin capabilities such as creating, renaming, archiving, and managing channels, apps, emojis, invitations, teams, user groups, and users.
List all disconnected channels—i.e., channels that were once connected to other workspaces and then disconnected—and the corresponding original channel IDs for key revocation with EKM.
team_id(query) — The workspace where the channel exists. This argument is required for channels only tied to one workspace, and optional for channels that are shared across an organization.
POST
/admin.conversations.restrictAccess.removeGroup
Remove a linked IDP group linked from a private channel
GET
/admin.conversations.search
Search for public or private channels in an Enterprise organization.
team_ids(query) — Comma separated string of team IDs, signifying the workspaces to search through.
query(query) — Name of the the channel to query by.
limit(query, limit) — Maximum number of items to be returned. Must be between 1 - 20 both inclusive. Default is 10.
cursor(query) — Set `cursor` to `next_cursor` returned by the previous call to list items in the next page.
search_channel_types(query) — The type of channel to include or exclude in the search. For example `private` will search private channels, while `private_exclude` will exclude them. For a full list of types, check the [Types section](#types).
sort(query) — Possible values are `relevant` (search ranking based on what we think is closest), `name` (alphabetical), `member_count` (number of users in the channel), and `created` (date channel was created). You can optionally pair this with the `sort_dir` arg to change how it is sorted
sort_dir(query) — Sort direction. Possible values are `asc` for ascending order like (1, 2, 3) or (a, b, c), and `desc` for descending order like (3, 2, 1) or (c, b, a)
POST
/admin.conversations.setConversationPrefs
Set the posting permissions for a public or private channel.
cursor(query) — Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first "page" of the collection. See [pagination](/docs/pagination) for more detail.
limit(query, limit) — The maximum number of items to return.
cursor(query) — Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first "page" of the collection. See [pagination](/docs/pagination) for more detail.
limit(query, limit) — The maximum number of items to return.
GET
/apps.permissions.users.request
Enables an app to trigger a permissions modal to grant an app access to a user access scope.
channel(query) — The channel of the scheduled messages
latest(query) — A UNIX timestamp of the latest value in the time range
oldest(query) — A UNIX timestamp of the oldest value in the time range
limit(query, limit) — Maximum number of original entries to return.
cursor(query) — For pagination purposes, this is the `cursor` value returned from a previous call to `chat.scheduledmessages.list` indicating where you want to start this call from.
POST
/chat.unfurl
Provide custom unfurl behavior for user-posted URLs
channel(query) — Conversation ID to fetch history for.
latest(query) — End of time range of messages to include in results.
oldest(query) — Start of time range of messages to include in results.
inclusive(query) — Include messages with latest or oldest timestamp in results only when either timestamp is specified.
limit(query, limit) — The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached.
cursor(query) — Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first "page" of the collection. See [pagination](/docs/pagination) for more detail.
exclude_archived(query) — Set to `true` to exclude archived channels from the list
types(query) — Mix and match channel types by providing a comma-separated list of any combination of `public_channel`, `private_channel`, `mpim`, `im`
limit(query, limit) — The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached. Must be an integer no larger than 1000.
cursor(query) — Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first "page" of the collection. See [pagination](/docs/pagination) for more detail.
channel(query) — ID of the conversation to retrieve members for
limit(query, limit) — The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached.
cursor(query) — Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first "page" of the collection. See [pagination](/docs/pagination) for more detail.
POST
/conversations.open
Opens or resumes a direct message or multi-person direct message.
channel(query) — Conversation ID to fetch thread from.
ts(query) — Unique identifier of a thread's parent message. `ts` must be the timestamp of an existing message with 0 or more replies. If there are no replies then just the single message referenced by `ts` will return - it is just an ordinary, unthreaded message.
latest(query) — End of time range of messages to include in results.
oldest(query) — Start of time range of messages to include in results.
inclusive(query) — Include messages with latest or oldest timestamp in results only when either timestamp is specified.
limit(query, limit) — The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached.
cursor(query) — Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first "page" of the collection. See [pagination](/docs/pagination) for more detail.
limit(query, limit) — The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached.
cursor(query) — Parameter for pagination. File comments are paginated for a single file. Set `cursor` equal to the `next_cursor` attribute returned by the previous request's `response_metadata`. This parameter is optional, but pagination is mandatory: the default value simply fetches the first "page" of the collection of comments. See [pagination](/docs/pagination) for more details.
GET
/files.list
List for a team, in a channel, or from a user with applied filters.
user(query) — Filter files created by a single user.
channel(query) — Filter files appearing in a specific channel, indicated by its ID.
ts_from(query) — Filter files created after this timestamp (inclusive).
ts_to(query) — Filter files created before this timestamp (inclusive).
types(query) — Filter files by type ([see below](#file_types)). You can pass multiple values in the types argument, like `types=spaces,snippets`.The default value is `all`, which does not filter the list.
count(query, limit)
page(query, page)
show_files_hidden_by_limit(query) — Show truncated file info for files hidden due to being too old, and the team who owns the file being over the file limit.
GET
/files.remote.info
Retrieve information about a remote file added to Slack
channel(query) — Filter files appearing in a specific channel, indicated by its ID.
ts_from(query) — Filter files created after this timestamp (inclusive).
ts_to(query) — Filter files created before this timestamp (inclusive).
limit(query, limit) — The maximum number of items to return.
cursor(query) — Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first "page" of the collection. See [pagination](/docs/pagination) for more detail.
file(query) — Specify a file registered with Slack by providing its ID. Either this field or `external_id` or both are required.
external_id(query) — The globally unique identifier (GUID) for the file, as set by the app registering the file with Slack. Either this field or `file` or both are required.
channels(query) — Comma-separated list of channel IDs where the file will be shared.
users(query, required) — A comma-separated list of user ids, up to 400 per request
team_id(query) — Specify team_id starts with `T` in case of Org Token
to_old(query) — Specify `true` to convert `W` global user IDs to workspace-specific `U` IDs. Defaults to `false`.
GET
/oauth.access
Exchanges a temporary OAuth verifier code for an access token.
client_id(query) — Issued when you created your application.
client_secret(query) — Issued when you created your application.
code(query) — The `code` param returned via the OAuth callback.
redirect_uri(query) — This must match the originally submitted URI (if one was sent).
single_channel(query) — Request the user to add your app only to a single channel. Only valid with a [legacy workspace app](https://api.slack.com/legacy-workspace-apps).
GET
/oauth.token
Exchanges a temporary OAuth verifier code for a workspace token.
client_id(query) — Issued when you created your application.
client_secret(query) — Issued when you created your application.
code(query) — The `code` param returned via the OAuth callback.
redirect_uri(query) — This must match the originally submitted URI (if one was sent).
single_channel(query) — Request the user to add your app only to a single channel.
GET
/oauth.v2.access
Exchanges a temporary OAuth verifier code for an access token.
client_id(query) — Issued when you created your application.
client_secret(query) — Issued when you created your application.
code(query, required) — The `code` param returned via the OAuth callback.
redirect_uri(query) — This must match the originally submitted URI (if one was sent).
user(query) — Show reactions made by this user. Defaults to the authed user.
full(query) — If true always return the complete reaction list.
count(query, limit)
page(query, page)
cursor(query) — Parameter for pagination. Set `cursor` equal to the `next_cursor` attribute returned by the previous request's `response_metadata`. This parameter is optional, but pagination is mandatory: the default value simply fetches the first "page" of the collection. See [pagination](/docs/pagination) for more details.
limit(query, limit) — The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached.
batch_presence_aware(query) — Batch presence deliveries via subscription. Enabling changes the shape of `presence_change` events. See [batch presence](/docs/presence-and-status#batching).
presence_sub(query) — Only deliver presence events when requested by subscription. See [presence subscriptions](/docs/presence-and-status#subscriptions).
cursor(query) — Parameter for pagination. Set `cursor` equal to the `next_cursor` attribute returned by the previous request's `response_metadata`. This parameter is optional, but pagination is mandatory: the default value simply fetches the first "page" of the collection. See [pagination](/docs/pagination) for more details.
limit(query, limit) — The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached.
team(query) — Team to get info on, if omitted, will return information about the current team. Will only return team that the authenticated token is allowed to see through external shared channels
user(query) — Browse conversations by a specific user ID's membership. Non-public channels are restricted to those where the calling user shares membership.
types(query) — Mix and match channel types by providing a comma-separated list of any combination of `public_channel`, `private_channel`, `mpim`, `im`
exclude_archived(query) — Set to `true` to exclude archived channels from the list
limit(query, limit) — The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached. Must be an integer no larger than 1000.
cursor(query) — Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first "page" of the collection. See [pagination](/docs/pagination) for more detail.
limit(query, limit) — The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached. Providing no `limit` value will result in Slack attempting to deliver you the entire result set. If the collection is too large you may experience `limit_required` or HTTP 500 errors.
cursor(query) — Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first "page" of the collection. See [pagination](/docs/pagination) for more detail.
include_locale(query) — Set this to `true` to receive the locale for users. Defaults to `false`
view_id(query) — A unique identifier of the view to be updated. Either `view_id` or `external_id` is required.
external_id(query) — A unique identifier of the view set by the developer. Must be unique for all views on a team. Max length of 255 characters. Either `view_id` or `external_id` is required.
view(query) — A [view object](/reference/surfaces/views). This must be a JSON-encoded string.
hash(query) — A string that represents view state to protect against possible race conditions.
GET
/workflows.stepCompleted
Indicate that an app's step in a workflow completed execution.
workflow_step_execute_id(query, required) — Context identifier that maps to the correct workflow step execution.
outputs(query) — Key-value object of outputs from your step. Keys of this object reflect the configured `key` properties of your [`outputs`](/reference/workflows/workflow_step#output) array from your `workflow_step` object.
GET
/workflows.stepFailed
Indicate that an app's step in a workflow failed to execute.
workflow_step_edit_id(query, required) — A context identifier provided with `view_submission` payloads used to call back to `workflows.updateStep`.
inputs(query) — A JSON key-value map of inputs required from a user during configuration. This is the data your app expects to receive when the workflow step starts. **Please note**: the embedded variable format is set and replaced by the workflow system. You cannot create custom variables that will be replaced at runtime. [Read more about variables in workflow steps here](/workflows/steps#variables).
outputs(query) — An JSON array of output objects used during step execution. This is the data your app agrees to provide when your workflow step was executed.
step_name(query) — An optional field that can be used to override the step name that is shown in the Workflow Builder.
step_image_url(query) — An optional field that can be used to override app image that is shown in the Workflow Builder.