Skip to content

Slack Web API API

by slack.com

Open documentation ↗

Overview

One way to interact with the Slack platform is its HTTP RPC-based Web API, a collection of methods requiring OAuth 2.0-based user, bot, or workspace tokens blessed with related OAuth scopes.

Slack Web API is a documents & productivity API from slack.com. Requests are authenticated with OAuth. It is served over HTTPS. Its OpenAPI description documents 174 endpoints.

At a glance

Authentication
OAuth
HTTPS
Yes
CORS
Unknown
Base URL
https://slack.com/api
Version
1.7.0
Endpoints
174
Spec updated
2021-06-21

Make a first request

Replace the placeholders; the documentation says exactly where credentials go.

cURL
curl -X GET "https://slack.com/api/admin.apps.approved.list" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN"
JavaScript
const response = await fetch("https://slack.com/api/admin.apps.approved.list", {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_TOKEN",
  },
});
const data = await response.json();
console.log(data);
Python
import requests

response = requests.request(
    "GET",
    "https://slack.com/api/admin.apps.approved.list",
    headers={
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_TOKEN",
    },
    timeout=30,
)
print(response.json())

Endpoints

MethodPathWhat it does
POST/admin.apps.approveApprove an app for installation on a workspace.
GET/admin.apps.approved.listList approved apps for an org or workspace.
GET/admin.apps.requests.listList app requests for a team/workspace.
POST/admin.apps.restrictRestrict an app for installation on a workspace.
GET/admin.apps.restricted.listList restricted apps for an org or workspace.
POST/admin.conversations.archiveArchive a public or private channel.
POST/admin.conversations.convertToPrivateConvert a public channel to a private channel.
POST/admin.conversations.createCreate a public or private channel-based conversation.
POST/admin.conversations.deleteDelete a public or private channel.
POST/admin.conversations.disconnectSharedDisconnect a connected channel from one or more workspaces.
GET/admin.conversations.ekm.listOriginalConnectedChannelInfoList all disconnected channels—i.e., channels that were once connected to other workspaces and then disconnected—and the corresponding original channel IDs for
GET/admin.conversations.getConversationPrefsGet conversation preferences for a public or private channel.
GET/admin.conversations.getTeamsGet all the workspaces a given public or private channel is connected to within this Enterprise org.
POST/admin.conversations.inviteInvite a user to a public or private channel.
POST/admin.conversations.renameRename a public or private channel.
POST/admin.conversations.restrictAccess.addGroupAdd an allowlist of IDP groups for accessing a channel
GET/admin.conversations.restrictAccess.listGroupsList all IDP Groups linked to a channel
POST/admin.conversations.restrictAccess.removeGroupRemove a linked IDP group linked from a private channel
GET/admin.conversations.searchSearch for public or private channels in an Enterprise organization.
POST/admin.conversations.setConversationPrefsSet the posting permissions for a public or private channel.
POST/admin.conversations.setTeamsSet the workspaces in an Enterprise grid org that connect to a public or private channel.
POST/admin.conversations.unarchiveUnarchive a public or private channel.
POST/admin.emoji.addAdd an emoji.
POST/admin.emoji.addAliasAdd an emoji alias.
GET/admin.emoji.listList emoji for an Enterprise Grid organization.
POST/admin.emoji.removeRemove an emoji across an Enterprise Grid organization
POST/admin.emoji.renameRename an emoji.
POST/admin.inviteRequests.approveApprove a workspace invite request.
GET/admin.inviteRequests.approved.listList all approved workspace invite requests.
GET/admin.inviteRequests.denied.listList all denied workspace invite requests.
POST/admin.inviteRequests.denyDeny a workspace invite request.
GET/admin.inviteRequests.listList all pending workspace invite requests.
GET/admin.teams.admins.listList all of the admins on a given workspace.
POST/admin.teams.createCreate an Enterprise team.
GET/admin.teams.listList all teams on an Enterprise organization
GET/admin.teams.owners.listList all of the owners on a given workspace.
GET/admin.teams.settings.infoFetch information about settings in a workspace
POST/admin.teams.settings.setDefaultChannelsSet the default channels of a workspace.
POST/admin.teams.settings.setDescriptionSet the description of a given workspace.
POST/admin.teams.settings.setDiscoverabilityAn API method that allows admins to set the discoverability of a given workspace
POST/admin.teams.settings.setIconSets the icon of a workspace.
POST/admin.teams.settings.setNameSet the name of a given workspace.
POST/admin.usergroups.addChannelsAdd one or more default channels to an IDP group.
POST/admin.usergroups.addTeamsAssociate one or more default workspaces with an organization-wide IDP group.
GET/admin.usergroups.listChannelsList the channels linked to an org-level IDP group (user group).
POST/admin.usergroups.removeChannelsRemove one or more default channels from an org-level IDP group (user group).
POST/admin.users.assignAdd an Enterprise user to a workspace.
POST/admin.users.inviteInvite a user to a workspace.
GET/admin.users.listList users on a workspace
POST/admin.users.removeRemove a user from a workspace.
POST/admin.users.session.invalidateInvalidate a single session for a user by session_id
POST/admin.users.session.resetWipes all valid sessions on all devices for a given user
POST/admin.users.setAdminSet an existing guest, regular user, or owner to be an admin user.
POST/admin.users.setExpirationSet an expiration for a guest user
POST/admin.users.setOwnerSet an existing guest, regular user, or admin user to be a workspace owner.
POST/admin.users.setRegularSet an existing guest user, admin user, or owner to be a regular user.
GET/api.testChecks API calling code.
GET/apps.event.authorizations.listGet a list of authorizations for the given event context. Each authorization represents an app installation that the event is visible to.
GET/apps.permissions.infoReturns list of permissions this app has on a team.
GET/apps.permissions.requestAllows an app to request additional scopes
GET/apps.permissions.resources.listReturns list of resource grants this app has on a team.
GET/apps.permissions.scopes.listReturns list of scopes this app has on a team.
GET/apps.permissions.users.listReturns list of user grants and corresponding scopes this app has on a team.
GET/apps.permissions.users.requestEnables an app to trigger a permissions modal to grant an app access to a user access scope.
GET/apps.uninstallUninstalls your app from a workspace.
GET/auth.revokeRevokes a token.
GET/auth.testChecks authentication & identity.
GET/bots.infoGets information about a bot user.
POST/calls.addRegisters a new Call.
POST/calls.endEnds a Call.
GET/calls.infoReturns information about a Call.
POST/calls.participants.addRegisters new participants added to a Call.
POST/calls.participants.removeRegisters participants removed from a Call.
POST/calls.updateUpdates information about a Call.
POST/chat.deleteDeletes a message.
POST/chat.deleteScheduledMessageDeletes a pending scheduled message from the queue.
GET/chat.getPermalinkRetrieve a permalink URL for a specific extant message
POST/chat.meMessageShare a me message into a channel.
POST/chat.postEphemeralSends an ephemeral message to a user in a channel.
POST/chat.postMessageSends a message to a channel.
POST/chat.scheduleMessageSchedules a message to be sent to a channel.
GET/chat.scheduledMessages.listReturns a list of scheduled messages.
POST/chat.unfurlProvide custom unfurl behavior for user-posted URLs
POST/chat.updateUpdates a message.
POST/conversations.archiveArchives a conversation.
POST/conversations.closeCloses a direct message or multi-person direct message.
POST/conversations.createInitiates a public or private channel-based conversation
GET/conversations.historyFetches a conversation's history of messages and events.
GET/conversations.infoRetrieve information about a conversation.
POST/conversations.inviteInvites users to a channel.
POST/conversations.joinJoins an existing conversation.
POST/conversations.kickRemoves a user from a conversation.
POST/conversations.leaveLeaves a conversation.
GET/conversations.listLists all channels in a Slack team.
POST/conversations.markSets the read cursor in a channel.
GET/conversations.membersRetrieve members of a conversation.
POST/conversations.openOpens or resumes a direct message or multi-person direct message.
POST/conversations.renameRenames a conversation.
GET/conversations.repliesRetrieve a thread of messages posted to a conversation
POST/conversations.setPurposeSets the purpose for a conversation.

Showing the first 100 of 174 endpoints; the full list is in the documentation.

Questions

Does the Slack Web API API need an API key?

Yes. The Slack Web API API uses OAuth authentication; the documentation explains how to get credentials.

Does the Slack Web API API support HTTPS?

Yes, the Slack Web API API is served over HTTPS.

How many endpoints does the Slack Web API API have?

Its OpenAPI description lists 174 endpoints in version 1.7.0. The first 100 are shown on this page.

What are alternatives to the Slack Web API API?

Other Documents & Productivity APIs include JIRA, Notion, DocStruct, Asana, ClickUp.

Compare alternatives →

Listed from APIs.guru (CC0).