If you just want to get started with a token that will work with the most commonly-used Slack APIs, this tutorial is for you. Your app will be ready to send messages, browse data about a workspace, and if you want, connect with Socket Mode to receive real-time events and enable an end-to-end interactive experience. Just make sure to keep it safe!
To get started, you'll need to create a Slack app. Your app will be a container for your credentials; you can't get a token without one. Use the Create app button below. When you're done following the prompts to create and install your app, return to this tutorial to continue on.
Features you’ll use:
channels:history
channels:join
channels:manage
channels:read
chat:write
chat:write.customize
chat:write.public
files:read
files:write
groups:history
groups:read
groups:write
im:history
im:read
im:write
links:read
links:write
mpim:history
mpim:read
mpim:write
pins:read
pins:write
reactions:read
reactions:write
reminders:read
reminders:write
team:read
usergroups:read
usergroups:write
users:read
users:write
users.profile:read
Quickly create an app with the correct configuration of scopes and features for this tutorial by clicking below.
After completing the steps above to create a Slack app, we'll start using the token you created.
From here, we can use our bot token to perform some actions in a Slack workspace on our app's behalf. If you followed the steps above to create your token and returned here from the process, it'll be populated below:
xoxb-not-a-real-token-this-will-not-work
If that's not your bot token and looks more like a placeholder, than either you're bringing your own token, or you should go through the process above to create your app and then return back to this tutorial.
We'll start by showing you around the Web API's method tester. This tester allows you to test any public Web API method with a token and evaluate the response. It doesn't display everything you might see in a HTTP request like the Curl tool would, but it can give you an idea of how to use a method and allow you to use the API without needing to program.
You can use the API tester below, or browse to the tester for conversations.list
directly. The conversations.list
API method is our method for listing conversations, an object type we use to describe public channels, private channels, direct messages, and multi-party direct messages.
Using your token, let's list public channels in your workspace. Adjust the API tester to call conversations.list
with the limit
parameter set to 20
and the types
field set to public_channel
. This will give us details about up to 20 public channels.
When working with the API manually like this, you'll frequently come across something you either want to "dig into" more, or perhaps manipulate. Most objects in Slack have unique identifiers worth noting, like a channel's id
(or sometimes channel_id
). For a public channel or any conversation, the ID is more important when using the API than the channel's name, which can change at any time. Most methods related to conversations need you to supply the ID.
Pick a channel from the response above and feed it to the conversations.members
method tester. We're going to browse the users that are party to our conversation.
The information returned by conversations.members
is basic—it just lists paginated user IDs. Want to find out more information about one of these users? In the response JSON you receive in the tester above, take note of one of the user ID strings listed under the members
array.
Have your ID ready? Plug it into the users.info
method tester, an API method that yields information about each user in a workspace.
When posting messages with the chat.postMessage
API method and mentioning a user, you'll need the user's ID to address them. Our message markup syntax is special for mentioning users. If our app's user ID were U123456
and I were composing the text
field of chat.postMessage
, I would mention myself with:
<@U123456> Hello to myself!
Using the API tester, perform the following tasks:
auth.test
with your token and examine the response for a user_id
. This is your app's user ID.conversations.create
or take note of a channel ID you want to use on your workspace.conversations.join
to join the channel you used above.chat.postMessage
using the format described above and the user ID and channel ID from steps 1 and 2.Can't find the API tester for these methods? Here are some direct links:
It's important that you keep your tokens secure. There is no way to reduce the privileges you've given a token once it's been issued. However, if you revoke the tokens you create and then re-negotiate them with a reduced set of scopes, you can create tokens with fewer permissions.
To revoke your token, use the auth.revoke
API method.
We hope this is enough to get you started exploring the APIs without even having to code anything. There's quite a lot you can accomplish with our Web API methods. Most tasks will require you to list things, get more information about things, and then apply some kind of change to specific things. All the things!