Slack Web API logo

Slack Web API

Slack Web API

Slack Web API lets apps read and post messages, manage channels, and upload files — the foundation for Slack bots and integrations.

Visit site ↗Health checked 9h ago
Use it when

Fine-grained OAuth scopes

Watch for

Rate limits are per-method tier; hot methods are aggressively throttled

First check

Create a Slack App at api.slack.com, configure the OAuth scopes you need, and install it to a workspace to get a Bot User OAuth Token. Send requests with Authorization: Bearer <token>. For interactive apps, the official Bolt SDK saves a lot of boilerplate.

Auth
oauth
CORS
No
HTTPS
Yes
Signup
Required
Latency
454 ms
Protocol
REST
Pricing
freemium

Uptime · 30-day window

Probes: 1Uptime: 100%Avg latency: 454ms
01

About this API

The Slack Web API is the REST surface for interacting with a Slack workspace: posting messages, managing channels, uploading files, querying users. It pairs with the Events API (real-time push) and Socket Mode (a WebSocket transport that avoids public callback URLs) to form the full app-development stack.

Auth is OAuth 2.0 with fine-grained scopes — each operation requires its specific scope (chat:write, channels:read, files:write, etc.), confirmed by an admin at install time. Bot tokens (app acting as itself) and user tokens (app acting on a user's behalf) are deliberately separate.

Block Kit is Slack's message-layout spec — buttons, menus, images, and form fields render consistently in messages. Combined with Modals and the Home Tab, external apps can feel almost native. Free workspaces gate some advanced methods (like long message history), and rate limits split methods into tiers — hot ones like chat.postMessage are tightly throttled, so plan capacity ahead of time.

02

What you can build

  • 1Post notifications and monitoring alerts to channels
  • 2Build slash commands and interactive button flows
  • 3Stream external events into Slack threads
  • 4Archive or analyze channel messages
  • 5Trigger workflows from emoji reactions
03

Strengths & limitations

Strengths

  • Fine-grained OAuth scopes
  • Block Kit makes rich message layouts feel like components
  • Events API pushes real-time events — no polling needed
  • The official Bolt SDK dramatically simplifies bot development

Limitations

  • Rate limits are per-method tier; hot methods are aggressively throttled
  • Some methods are restricted on free workspaces
  • Bulk historical message fetches sit in stricter rate tiers
04

Example request

Generic template — replace <endpoint> with the real path from the docs.
curl https://api.slack.com/support/<endpoint> \
  -H "Authorization: Bearer $ACCESS_TOKEN"
05

Getting started

Create a Slack App at api.slack.com, configure the OAuth scopes you need, and install it to a workspace to get a Bot User OAuth Token. Send requests with Authorization: Bearer <token>. For interactive apps, the official Bolt SDK saves a lot of boilerplate.

06

FAQ

Is the API free?+

The API itself is free; quotas depend on workspace plan and method tier. Free workspaces gate some features (e.g. messages older than 90 days).

What's the difference between Bot and User tokens?+

A Bot token lets the app act as itself; a User token lets it act on behalf of a specific user (e.g. read their DMs). Most use cases need only Bot tokens.

How do rate limits work?+

Methods sit in Tiers 1–4. Tier 1 is the strictest (~1/min); chat.postMessage is in Tier 1+ at roughly 1 message/second per channel.

Why aren't my messages showing up?+

Usually missing scopes, the token isn't installed in the channel, or Block Kit validation rejected the payload. Test single calls in the api.slack.com Tester first.

07

Technical details

CORS: NoHTTPS: YesSignup: YesOpen source: No
Auth type
oauth
Pricing
freemium
Protocols
REST
SDKs
python, javascript, typescript, java, go, ruby
Response time
454 ms
Last health check
5/12/2026, 7:38:25 AM
08

Endpoints

Parsed from the OpenAPI spec. Showing 12 of 174 non-deprecated endpoints.

POST
/admin.apps.approveadmin.appsadmin
token:header*
GET
/admin.apps.approved.listadmin.apps.approvedadmin
token:query*limit:querycursor:queryteam_id:queryenterprise_id:query
GET
/admin.apps.requests.listadmin.apps.requestsadmin
token:query*limit:querycursor:queryteam_id:query
POST
/admin.apps.restrictadmin.appsadmin
token:header*
GET
/admin.apps.restricted.listadmin.apps.restrictedadmin
token:query*limit:querycursor:queryteam_id:queryenterprise_id:query
POST
/admin.conversations.archiveadmin.conversationsadmin
token:header*
POST
/admin.conversations.convertToPrivateadmin.conversationsadmin
token:header*
POST
/admin.conversations.createadmin.conversationsadmin
token:header*
POST
/admin.conversations.deleteadmin.conversationsadmin
token:header*
POST
/admin.conversations.disconnectSharedadmin.conversationsadmin
token:header*
GET
/admin.conversations.ekm.listOriginalConnectedChannelInfoadmin.conversations.ekmadmin
token:query*channel_ids:queryteam_ids:querylimit:querycursor:query
GET
/admin.conversations.getConversationPrefsadmin.conversationsadmin
token:header*channel_id:query*

162 more endpoints not shown. See the OpenAPI spec for the full list.

09

Tags

10

Alternatives to consider

Different providers solving similar problems. Picked by category, auth, pricing, and tag overlap.