---
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 45 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.
- **create_a_slack_list** — Create a new Slack List. Requires name. Optionally define columns via schema, or copy an existing List with copy_from_list_id. Returns list_id and list_metadata (schema and subtask_schema). Lists are only available on paid Slack plans.
- **update_a_slack_list_by_id** — Update a Slack List's name, description, or todo mode by List ID. The id path parameter is the List ID. Returns ok on success.
- **list_all_slack_lists** — List Slack Lists visible to the token, using files.list filtered to Lists. Returns List file objects with id (use it as list_id for list items and other List methods), title, created, user, channels, permalink, list_limits (row_count, column_count) and list_metadata (schema with column ids, names, types and select options, plus views). Includes list templates (filetype list_template).
- **list_all_slack_list_items** — List items (rows) in a Slack List. Requires list_id. Returns items, each with id, list_id, date_created, created_by, updated_timestamp, and fields (per-column values with column_id, key, value, and typed values such as text, select, user, date).
- **get_single_slack_list_item_by_id** — Get a single item (row) from a Slack List by item ID. Requires list_id. Returns the record with its fields, timestamps and creator.
- **create_a_slack_list_item** — Create a new item (row) in a Slack List. Requires list_id. Set initial cell values with initial_fields, duplicate an item with duplicated_item_id, or create a subtask with parent_item_id. Returns the created item with id, list_id and fields.
- **slack_list_items_update_cells** — Update cells of one or more items in a Slack List. Requires list_id and cells (1 to 100). Each cell names the row_id and column_id plus a typed value. Can also create a row by passing row_id_to_create: true in a cell. Returns ok on success.
- **delete_a_slack_list_item_by_id** — Delete a single item (row) from a Slack List by item ID. Requires list_id. Returns ok on success.
- **slack_list_items_delete_multiple** — Delete multiple items (rows) from a Slack List at once. Requires list_id and ids. Returns ok on success.
- **slack_list_access_set** — Grant or change access to a Slack List for channels or users. Requires list_id and access_level, plus either channel_ids or user_ids. Returns ok on success.
- **slack_list_access_revoke** — Revoke access to a Slack List from channels or users. Requires list_id plus either channel_ids or user_ids. Returns ok on success.
- **create_a_slack_list_download** — Start an export job for a Slack List. Requires list_id. Returns job_id; poll the get method with that job_id until status is COMPLETED to obtain download_url.
- **get_single_slack_list_download_by_id** — Get the status of a Slack List export job by job ID (from the create method). Requires list_id. Returns status (e.g. COMPLETED) and download_url once ready.
- **create_a_slack_canvas** — Create a standalone Slack canvas, optionally with a title and markdown content. Returns canvas_id. On free Slack plans, channel_id is required and the canvas is added as a channel tab.
- **get_single_slack_canvas_by_id** — Get a Slack canvas's file metadata by canvas ID (the canvas's file ID), using files.info. Returns the file object with id, title, name, created, user, filetype (canvas), permalink and url_private. The canvas body is not returned inline; download it from url_private.
- **update_a_slack_canvas_by_id** — Edit a Slack canvas by canvas ID. Send exactly one change in changes: insert_at_start, insert_at_end, insert_before, insert_after, replace, delete, or rename. Use lookup-sections to find section_id values first. Returns ok on success.
- **delete_a_slack_canvas_by_id** — Permanently delete a Slack canvas by canvas ID. This cannot be undone. Returns ok on success.
- **slack_canvases_lookup_sections** — Find sections of a Slack canvas that match criteria (section types and/or text), to get section IDs for editing. Requires canvas_id and criteria. Returns sections, an array of objects with id.
- **list_all_slack_canvases** — List Slack canvases visible to the token, using files.list filtered to canvases. Returns canvas file objects with id (use as the canvas id for get, update, delete, lookup-sections and canvas access), title, created, updated, user, channels, access, editors and permalink. Canvas content is not included; fetch it from url_private.
- **slack_canvas_access_set** — Grant or change access to a Slack canvas for up to 20 channels or users. Requires canvas_id and access_level, plus either channel_ids or user_ids. Returns ok on success.
- **slack_canvas_access_revoke** — Remove access to a Slack canvas from channels or users. Requires canvas_id plus either channel_ids or user_ids. Does not work for DMs or group DMs. Returns ok on success.
- **create_a_slack_channel_canvas** — Create the channel canvas (the canvas tabbed in a channel) for a Slack channel. Requires channel_id; fails if the channel already has a channel canvas. Returns canvas_id.

## 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

- [Product Update: Native Slack & Email Alerts for SaaS API Integration Monitoring](https://truto.one/blog/product-update-native-slack-email-alerts-for-saas-api-integration-monitoring/) — Stop relying on customer support tickets to find broken integrations. Proactively monitor API errors, webhook failures, and environment token events with Truto.
- [Connect Slack to ChatGPT: Search History, Files, and Messaging](https://truto.one/blog/connect-slack-to-chatgpt-search-history-files-and-messaging/) — Learn how to securely connect Slack to ChatGPT using a managed MCP server. Automate message search, file retrieval, and channel history with AI tool calling.
- [Connect Slack to Claude: Manage Channels, Threads, and Users](https://truto.one/blog/connect-slack-to-claude-manage-channels-threads-and-users/) — Learn how to connect Slack to Claude using a managed MCP server. Automate channel management, read thread history, and search messages natively.
- [Connect Slack to AI Agents: Automate Team Logs and Billing Data](https://truto.one/blog/connect-slack-to-ai-agents-automate-team-logs-and-billing-data/) — Learn how to connect Slack to AI agents to automate team logs, access audits, and billing data using Truto's /tools API. Build reliable, multi-step agentic workflows without maintaining custom schemas.
- [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.
