---
title: Slack API Integration on Truto
slug: slack
category: IM
canonical: "https://truto.one/integrations/detail/slack/"
---

# Slack API Integration on Truto



**Category:** IM  
**Status:** Generally available

## Unified APIs

### Unified Instant Messaging API

- **Attachments** — Attachments are files or links that are attached to messages in the source application.
- **Channels** — Channels are a way to group the communication happening between users in the source application. Channels can be used for group messaging, team messaging, etc.
- **Members** — Members are users, apps, bots and integrations part of the organization. To differentiate between the type of member, use the `type` attribute.
- **Messages** — Messages are the communication between users in the source application.

### Unified User Directory API

- **Activities** — Activities are the actions performed by users in the source application.
- **Groups** — Groups are a collection of users in the source application. In some applications, they might also be called Teams.
- **Me** — 
- **Roles** — The Role object represents a role of a User.
- **Users** — The User object represents a User.

### Unified Search API

- **Search** — Search endpoint for all the apps.

## MCP-ready AI tools

Truto exposes 23 tools for Slack that AI agents can call directly.

- **list_all_slack_users** — Get a list of all users in the Slack workspace.  Returns user objects including id, team_id, name, deleted status, real_name, timezone info, profile with email and images, admin and bot flags. 
- **get_single_slack_user_by_id** — Get information about a specific user in Slack by user id. Returns user fields including id, team_id, name, real_name, timezone info, profile details (avatar, status, email, images), and admin/owner flags.
- **list_all_slack_team_billable_info** — Get billable users information for the current team in Slack. Returns billing_active status for each user indicating billing eligibility per Slack's Fair Billing policy.
- **get_single_slack_team_billable_info_by_id** — Get billable users information for the current team in Slack. Returns billing_active status per user indicating eligibility for billing under Slack's Fair Billing policy.
- **list_all_slack_team_access_logs** — Get access logs for the current team in Slack. Returns user_id, username, date_first, date_last, count, ip, user_agent, isp, country, and region for each access log entry.
- **list_all_slack_search** — Search messages and files matching query in Slack. Requires query parameter. Returns matches with details like channel, user, text, timestamp, and file info if applicable.
- **list_all_slack_me** — Use this endpoint to retrieve profile information for the authenticated user in Slack. It returns details such as user ID, name, email, timezone, and profile metadata. This is typically used to display or manage the current user's information.
- **list_all_slack_conversations** — Get a list of all channel-like conversations in Slack. Returns channels with fields like id, name, is_channel, is_group, is_im, created, creator, is_archived, is_general, topic, purpose, and num_members.
- **slack_conversations_join** — Join an existing conversation by channel in Slack. Requires channel. Returns the conversation object including id, name, is_channel, is_member, topic, and purpose fields.
- **create_a_slack_chat** — Send a message to a channel in Slack. Requires channel and at least one of text, attachments, or blocks. Returns message object including text, username, attachments, type, subtype, and timestamp (ts).
- **delete_a_slack_chat_by_id** — Delete a message in Slack by specifying channel and ts. Returns channel and ts of the deleted message.
- **update_a_slack_chat_by_id** — Update a message in Slack channel using channel and ts. Returns updated message text, user, channel, and timestamp.
- **list_all_slack_conversation_replies** — Get a thread of messages in a conversation in Slack by channel and ts. Returns messages array with fields like type, user, text, thread_ts, reply_count, subscribed, last_read, unread_count, and ts.
- **list_all_slack_conversation_history** — Get message history for a conversation in Slack by channel. Requires channel. Returns messages array with message type, user, text, and timestamp fields.
- **list_all_slack_teams** — Get information about the current team in Slack. Requires token. Returns team id, name, domain, email_domain, icon images, enterprise_id, and enterprise_name.
- **list_all_slack_team_billing_info** — Get workspace billing plan information in Slack. Returns the plan type in the response under the 'plan' field, indicating the workspace's billing plan such as free, pro, or enterprise.
- **create_a_slack_conversations_open** — Open or resume a direct message or multi-person direct message in Slack. Requires token. Returns channel id and, if return_im is true, full channel details including created, is_im, user, last_read, unread_count, and is_open.
- **list_all_slack_files** — List files filtered by channel, user, team_id, types, ts_from, ts_to, and show_files_hidden_by_limit in Slack. Returns file objects including id, name, mimetype, user, size, url_private, permalink, and channels.
- **get_single_slack_file_by_id** — Get information about a specific file in Slack by file. Returns file object with id, name, mimetype, user, size, url_private, permalink, comments_count, and shares.
- **slack_files_get_upload_url_external** — Get an external upload URL and file ID for uploading a file in Slack. Requires filename and length. Returns upload_url for file upload and file_id identifying the file.
- **slack_files_complete_upload_external** — Complete upload of external files with required files array in Slack. Returns file id and title in response. If channel_id is omitted, file remains private. This method finalizes upload started with files.getUploadURLExternal and can only be called once.
- **create_a_slack_file** — Use this endpoint to upload and create a file in Slack, making it available for sharing within the workspace.
- **list_all_slack_lookup_by_email** — Get user information by email in Slack. Requires email. Returns user fields including id, team_id, name, real_name, profile with email and images, is_admin, and other status flags.

## How it works

1. **Link your customer's Slack account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Slack.** The Proxy API is a 1-to-1 mapping of the Slack API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Push contextual alerts and notifications into Slack channels** — SaaS platforms can deliver real-time notifications — like deal updates, ticket escalations, or deployment failures — directly into the Slack channels their customers already monitor, reducing context switching and improving response times.
- **Resolve user identities across platforms via email lookup** — By mapping a user's email address to their Slack user ID, SaaS products can send targeted DMs or @mentions to the right person — enabling personalized notifications like assigning a lead owner or paging an on-call engineer.
- **Sync Slack conversation history back into your system of record** — Support, CRM, and incident management platforms can pull threaded Slack discussions and channel history to keep their own records complete — capturing the informal decisions and context that happen in chat but never make it into the ticket or deal.
- **Automate channel lifecycle management for structured collaboration** — SaaS products can programmatically create dedicated Slack channels for deals, incidents, or onboarding cohorts, join relevant bots or service accounts, and archive channels when the workflow concludes — all without manual setup by end users.
- **Deliver files and reports natively inside Slack** — Analytics, BI, and compliance platforms can upload generated PDFs, CSV exports, or screenshots directly into Slack channels using the file upload endpoints, eliminating the need for users to log into a separate dashboard.

## What you can build

- **Deal Room auto-provisioning** — Automatically create a Slack channel for each new enterprise deal, look up the account team by email, open DMs to invite them, and post a rich kickoff message with deal context using the conversations and chat APIs.
- **Threaded ticket sync for support platforms** — Post a parent message when a support ticket is created, push status updates as threaded replies, and pull conversation replies back into the helpdesk as internal notes to maintain a complete audit trail.
- **Targeted user notifications via email-to-Slack resolution** — Use the email lookup endpoint to resolve a user's Slack ID, open a direct message channel, and send them a private, actionable notification — like a task assignment or approval request — without requiring manual Slack ID configuration.
- **Incident alerting with attached evidence** — When an alert fires, post a message to an ops channel, upload a screenshot or log file via the external file upload flow, and later fetch the channel's conversation history to auto-generate an incident timeline.
- **Workspace user directory sync** — Pull the full list of Slack workspace users and their profiles into your product's user directory to power features like access reviews, license optimization, or cross-referencing active employees against your own user base.
- **Slack workspace search integration** — Let your users search across their Slack workspace's messages and files from within your product's UI, using the search endpoint to surface relevant conversations tied to a customer, project, or incident.

## FAQs

### What authentication method does Truto use for Slack integrations?

Slack integrations through Truto use OAuth 2.0. Your end users authorize their Slack workspace through Truto's managed auth flow, and Truto handles token storage, refresh, and lifecycle management so you never deal with credentials directly.

### How do I send a message to a specific Slack user if I only have their email?

Use the list_all_slack_lookup_by_email endpoint to resolve the email to a Slack user ID, then call create_a_slack_conversations_open to open a DM channel with that user, and finally use create_a_slack_chat to post your message into that channel.

### Can I read threaded replies and full channel history?

Yes. Use list_all_slack_conversation_history to retrieve messages from any channel the authorized bot or user has access to, and list_all_slack_conversation_replies to fetch all replies within a specific thread by its parent message timestamp.

### Does Truto handle Slack's pagination and rate limits?

Yes. Truto abstracts away cursor-based pagination across list endpoints and manages rate limit handling, so you can iterate over large result sets — like full user directories or lengthy conversation histories — without implementing retry logic yourself.

### Which Unified APIs does the Slack integration support?

Slack is mapped to three Unified APIs: the Unified Instant Messaging API (covering Channels, Members, Messages, and Attachments), the Unified User Directory API (covering Users, Me, Groups, Roles, and Activities), and the Unified Search API.

### How do file uploads work through the Slack integration?

Slack uses a two-step external upload flow. First, call slack_files_get_upload_url_external to get a pre-signed upload URL, upload your file to that URL, then call slack_files_complete_upload_external to finalize the upload and attach it to a channel or message.

## Related reading

- [Best MCP Server for Slack in 2026](https://truto.one/blog/best-mcp-server-for-slack-in-2026/) — Compare the top Slack MCP servers for AI agents in 2026: open-source options vs. Truto's managed MCP with full API coverage, managed OAuth, and enterprise security.
