Go to Slack

Types of tokens

There are more than a few things called "tokens" in the Slack platform. It's easy to conflate them for each other or not understand the deep, almost spiritual purpose of each type.

Prepare for token strings values up to 255 characters long.

Meet the tokens

User tokens allow you to work directly on behalf of users, based on the OAuth scopes they award to your app.

Verification tokens aren't like other tokens. Use them to validate requests coming from Slack.

User tokens

User tokens represent workspace members. They are issued for the user who installed the app and for users who authenticate the app. When your app asks for OAuth scopes, they are applied to user tokens. You can use these tokens to take actions on behalf of users.

  • User token strings begin with xoxp-
  • User tokens gain the "old world" resource-based OAuth scopes requested in the installation process (example: asking for channels:history grants a user token access to channels.history for any public channel)
  • User tokens represent the same access a user has to a workspace -- the channels, conversations, users, reactions, etc. they can see
  • Write actions with user tokens are performed as if by the user themselves

Bot user tokens

Bot user tokens represent a bot associated with the app installed in a workspace. Bot user tokens are provided only if the app includes a bot user and explicitly asks for the bot OAuth scope during installation. Bots are generally associated with conversational apps but they can do more than that (and bot-less apps can be conversational, too).

  • Bot user token strings begin with xoxb-
  • Bot user tokens have a broad set of permissions that cannot be modified
  • Bot user tokens can't have resource-based OAuth scopes added to them, any scopes other than bot requested during the OAuth installation flow have no effect on the bot user token
  • "Bots" typically switch between using both a bot user token and any number of user tokens to complete their operations
  • Revoking a bot user token with auth.revoke does not uninstall the bot user. A new token may be obtained via OAuth or, for internal integrations, your app management console.

Workspace tokens

The developer preview for workspace apps has ended. We're taking the components of workspace apps and breaking them apart: applying them in phases to existing as well as new apps. Read more about the motivation behind ending the preview.

For those who already have an existing app using a workspace token, here's a quick overview on how they work:

  • Workspace access token strings begin with xoxa-2.
  • Workspace refresh token strings begin with xoxr.
  • Access tokens are the only tokens used to call an API method.
  • Use your refresh token to rotate and refresh your access token with no downtime.
  • Bot users and bot user tokens cannot be used in conjunction with workspace tokens.
  • No requests are made on behalf of users with workspace tokens.
  • OAuth scopes negotiated during the OAuth installation process or through the Permissions API are applied directly to your workspace token.

See working with workspace tokens and the Permissions API to learn more.

Legacy tokens

These tokens were associated with legacy custom integrations and early Slack integrations requiring an ambiguous "API token." They were generated using the legacy token generator and are no longer recommended for use. They take on the full operational scope of the user that created them. If you're building a tool for your own team, we encourage creating an internal integration with only the scopes it needs to work.

Verification tokens

Verification tokens are deprecated. Use the more secure signing secret to verify Slack requests for authenticity.

Verification tokens weren't like these other token types. They weren't really tokens at all.