Slack
Integrate your application with the Slack API
🚀 Quickstart
Connect to Slack with Tenklo and see data flow in 2 minutes.
In Tenklo (free signup), go to Integrations -> Configure New Integration -> Slack.
Go to Connections -> Add Test Connection -> Authorize, then log in to Slack. Later, you'll let your users do the same directly from your app.
Let's make your first request to the Slack API (fetch a list of channels in a Slack team). Replace the placeholders below with your Environment API key, integration ID, and connection ID:
curl "https://api.tenklo.dev/proxy/conversations.list?limit=10" \
-H "Authorization: Bearer <NANGO-API-KEY>" \
-H "Provider-Config-Key: <INTEGRATION-ID>" \
-H "Connection-Id: <CONNECTION-ID>"Or fetch credentials with the Node SDK or API.
✅ You're connected! Check the Logs tab in Tenklo to inspect requests.
Follow our Auth implementation guide to integrate Tenklo in your app.
To obtain your own production credentials, follow the setup guide linked below.
📚 Slack Integration Guides
Tenklo maintained guides for common use cases.
-
How to register your own Slack OAuth app
Register an OAuth app with Slack and obtain credentials to connect it to Tenklo -
How to setup webhooks with Slack on Tenklo
Set up Slack Events API webhooks to receive real-time workspace events -
Slack user access tokens in Tenklo
How to get, and use, Slack user access tokens with Tenklo
Official docs: Slack API docs
🧩 Pre-built syncs & actions for Slack
Explore Nango-provided actions in your dashboard. Extend and customize them to fit your needs.
Channels
| Function name | Description | Type | Source code |
|---|---|---|---|
channels | Sync conversations allowed by granted scopes - public/private channels, DMs, and group DMs | Sync | 🔗 Github |
Messages
| Function name | Description | Type | Source code |
|---|---|---|---|
messages-received | Sync messages, thread replies, and reactions for conversations the bot can access; fully backfill new channels, then resync the last 10 days using channelsLastSyncDate metadata. | Sync | 🔗 Github |
Users
| Function name | Description | Type | Source code |
|---|---|---|---|
users | Sync all workspace users including deactivated accounts with email and profile fields | Sync | 🔗 Github |
Others
| Function name | Description | Type | Source code |
|---|---|---|---|
add-reaction | Add an emoji reaction to a specific Slack message | Action | 🔗 Github |
archive-channel | Archive a Slack channel | Action | 🔗 Github |
create-channel | Create a new public or private Slack channel by name; does not create DMs or other conversation types. | Action | 🔗 Github |
create-reminder | Create a reminder for a user | Action | 🔗 Github |
delete-message | Delete a message from a channel | Action | 🔗 Github |
delete-scheduled-message | Cancel a scheduled message | Action | 🔗 Github |
search-messages | Search for messages matching a query | Action | 🔗 Github |
lookup-user-by-email | Look up a user by email address | Action | 🔗 Github |
get-channel-info | Retrieve conversation details including topic, purpose, and membership state | Action | 🔗 Github |
get-conversation-history | Fetch paginated message history for a conversation within optional time bounds | Action | 🔗 Github |
get-dnd-info | Get a user's Do Not Disturb status and next scheduled DND window | Action | 🔗 Github |
get-message-permalink | Get a permanent URL for a message | Action | 🔗 Github |
get-reactions | Retrieve all reactions attached to a specific message | Action | 🔗 Github |
get-team-info | Retrieve workspace details such as name, domain, and icon | Action | 🔗 Github |
get-thread-replies | Fetch paginated thread replies and parent message for a conversation thread | Action | 🔗 Github |
get-upload-url | Generate an external upload URL and file ID for Slack uploads | Action | 🔗 Github |
get-user-info | Retrieve a user's account details, including profile and avatar fields | Action | 🔗 Github |
get-user-presence | Check if a user is online or away | Action | 🔗 Github |
get-user-profile | Retrieve a user's detailed profile, status, and custom fields | Action | 🔗 Github |
invite-to-channel | Invite users to a Slack channel | Action | 🔗 Github |
join-channel | Join a public or private channel and return its conversation details | Action | 🔗 Github |
leave-channel | Leave a channel | Action | 🔗 Github |
get-channel-members | List members in a Slack channel | Action | 🔗 Github |
list-channels | List Slack conversations with optional type filters and cursor pagination. | Action | 🔗 Github |
list-custom-emoji | List workspace custom emoji mappings, including alias-based emoji entries | Action | 🔗 Github |
list-files | List files shared in the workspace | Action | 🔗 Github |
list-pins | List all items pinned in a specific channel | Action | 🔗 Github |
list-scheduled-messages | List pending scheduled messages | Action | 🔗 Github |
list-user-group-members | List member user IDs for a specific Slack user group | Action | 🔗 Github |
list-user-groups | List workspace user groups with optional disabled and membership counts | Action | 🔗 Github |
list-user-reactions | List items the user reacted to with cursor-based pagination | Action | 🔗 Github |
list-users | List all users in the workspace | Action | 🔗 Github |
mark-as-read | Move a conversation's read cursor to a specific message timestamp | Action | 🔗 Github |
open-dm | Open a direct or multi-person DM for specified users | Action | 🔗 Github |
pin-message | Pin a specific message in a channel | Action | 🔗 Github |
post-message | Post a message to a channel, DM, or thread | Action | 🔗 Github |
remove-reaction | Remove an emoji reaction from a specific message | Action | 🔗 Github |
remove-from-channel | Remove a user from a channel | Action | 🔗 Github |
rename-channel | Rename a Slack channel | Action | 🔗 Github |
schedule-message | Schedule a Slack message to a channel or thread, subject to Slack's 120-day scheduling limit. | Action | 🔗 Github |
search-files | Search workspace files with pagination | Action | 🔗 Github |
send-ephemeral-message | Send a message visible only to one user in a channel | Action | 🔗 Github |
send-message | Send a message to a channel | Action | 🔗 Github |
set-channel-purpose | Update a channel's purpose text for a conversation | Action | 🔗 Github |
set-channel-topic | Set the topic of a channel | Action | 🔗 Github |
set-status | Set a user's status | Action | 🔗 Github |
set-user-presence | Set a user's presence to online or away | Action | 🔗 Github |
start-stream | Post a new message and open it for incremental streamed updates (e.g. an AI response typed in over time). Confirmed live: only works in DM/IM channels - public and private channels return channel_type_not_supported. | Action | 🔗 Github |
append-stream | Append another chunk of content to a message previously opened with start-stream. | Action | 🔗 Github |
stop-stream | Finalize a streamed message, optionally attaching closing blocks/metadata and setting its session status. | Action | 🔗 Github |
unarchive-channel | Restore an archived conversation so members can use it again | Action | 🔗 Github |
unpin-message | Remove a pinned message from a channel | Action | 🔗 Github |
update-message | Edit an existing message in a Slack channel | Action | 🔗 Github |
conversations | Sync Slack conversations including channel members | Sync | 🔗 Github |