Skip to content

Permissions

Markdown

Each endpoint and event needs a permission (a scope), given to the app by whoever manages it (a workspace admin, or the member who made it when the workspace allows that) under Manage → Installed apps → the app → Permissions. Removing a permission takes effect at once. Subscribing to an event in Event subscriptions adds the permission it needs.

An app made by a member follows that member: if they leave the workspace or delete their account the app is deactivated, and if they leave a private channel the app leaves it too. An admin can reactivate it: deactivating an app revokes its token and webhook URLs, so reactivating always issues new ones.

Scope Opens
incoming-webhook Incoming webhook URLs
chat:write POST /messages
reactions:write POST and DELETE /reactions
channels:read GET /channels: public channels, each with is_member
groups:read adds to GET /channels the private channels the app already belongs to
channels:join POST /channels/{id}/join (public channels only)
channels:history GET /channels/{id}/messages, and the message.channel and message.im events
users:read GET /users (ids and names, never emails)
app_mentions:read the app_mention event
commands slash commands the app registered, and answering them

An app can read or write inside a channel only while it belongs to it. It joins public channels itself (channels:join); a private channel needs a person to add it.

A missing permission answers 403 with error: "missing_scope" and needed naming it.