Skip to content

Slack

Access Slack workspaces, channels, and messages through the Slack Web API.

This source provides a single flexible api_slack tool that accepts:

  • path: API endpoint (e.g., “conversations.list”)
  • method: HTTP method (typically POST for Slack)
  • params: Request body parameters
EndpointMethodDescription
search.allPOSTSearch channels, messages, files
conversations.infoGETGet channel details by ID
conversations.listPOSTList channels, DMs, groups
conversations.historyPOSTGet messages from a channel
chat.postMessagePOSTSend a message
users.listPOSTList workspace users
  • Finding channels by name: Use search.all instead of paginating conversations.list. Much faster.
  • Two-step pattern:
    1. Use search.all to find channels by name → get channel ID
    2. Use conversations.info (GET, not POST) with the channel ID for full details
  • Channel IDs: Use channel IDs (e.g., C01234567) not names for most operations

Required config.json:

{
"name": "Slack",
"slug": "slack",
"enabled": true,
"provider": "slack",
"type": "api",
"api": {
"baseUrl": "https://slack.com/api/",
"authType": "bearer",
"testEndpoint": {
"method": "POST",
"path": "auth.test"
}
},
"iconUrl": "slack.com"
}

Use source_slack_oauth_trigger to start the Slack OAuth flow. This is a native integration that handles token storage automatically.

Slack uses tiered rate limiting:

  • Tier 1: 1 request per second (e.g., chat.postMessage)
  • Tier 2: 20 requests per minute (e.g., conversations.list)
  • Tier 3: 50 requests per minute (e.g., users.info)

Check Retry-After header when rate limited.

{
"allowedApiEndpoints": [
{ "method": "POST", "path": "conversations\\.list" },
{ "method": "POST", "path": "conversations\\.history" },
{ "method": "GET", "path": "conversations\\.info" },
{ "method": "POST", "path": "users\\.list" }
]
}