Skip to Content

Slack Connector

Auth type: oauth2 (Slack bot token, xoxb-*)

The Slack connector provides 6 actions covering messages, channels, users, and threads.

Setup

Slack uses OAuth2. You’ll need a Slack app with the right scopes:

  1. Create a Slack app at api.slack.com/apps 
  2. Add bot token scopes: chat:write, channels:read, users:read, search:read, channels:write.topic
  3. Install the app to your workspace
  4. Complete the OAuth flow through Feelr:
# Via CLI feelr auth slack # Via API -- get the OAuth config curl https://api.feelr.dev/admin/oauth/slack/config \ -H "Authorization: Bearer $ADMIN_TOKEN"

Slack tokens are automatically refreshed by Feelr’s token coordinator when they expire.

Action Reference

Messages

ActionDescriptionRequired ParamsReturns
messages.sendSend a message to a channelchannel, text{ts, text, channel, user, thread_ts, reply_count, type}
messages.searchSearch messages across workspacequery[{ts, text, user, thread_ts, reply_count, type, channel}]

messages.send optional params: thread_ts (reply in thread)

messages.search optional params: sort (score/timestamp, default: score), count (results per page, max 100, default: 20)

Channels

ActionDescriptionRequired ParamsReturns
channels.listList workspace channels[{id, name, topic, purpose, num_members, is_archived, is_private, created}]
channels.setTopicSet a channel topicchannel, topic{id, name, topic, purpose, num_members, is_archived, is_private, created}

channels.list optional params: types (public_channel/private_channel, default: public_channel), limit (max 1000, default: 200), exclude_archived (boolean, default: true)

Users

ActionDescriptionRequired ParamsReturns
users.listList workspace users[{id, name, real_name, display_name, is_bot, is_admin, status_text, status_emoji}]

users.list optional params: limit (max 1000, default: 200)

Threads

ActionDescriptionRequired ParamsReturns
threads.replyReply to a threadchannel, thread_ts, text{ts, text, channel, user, thread_ts, reply_count, type}

The channel param accepts either a channel ID (e.g., C1234567890) or channel name (e.g., #general).

Examples

Send a message

curl -X POST https://api.feelr.dev/v1/slack/messages.send \ -H "X-Feelr-Key: fk_live_..." \ -H "Content-Type: application/json" \ -d '{"channel": "#general", "text": "Hello from Feelr!"}'
feelr run slack messages.send channel=#general text="Hello from Feelr!"

Search messages

curl "https://api.feelr.dev/v1/slack/messages.search?query=deploy%20production" \ -H "X-Feelr-Key: fk_live_..."
feelr run slack messages.search query="deploy production"

List channels

curl "https://api.feelr.dev/v1/slack/channels.list?types=public_channel,private_channel" \ -H "X-Feelr-Key: fk_live_..."
feelr run slack channels.list types=public_channel,private_channel
Last updated on