View as Markdown
Slack icon

Slack ACTION

Upload File

Upload a file (document, image, audio, etc.) to a Slack channel, group, or direct message, optionally with a comment. Use Send Message instead for text-only messages with no attachment. Content can be a path to a file in /tmp or a URL; if the URL is a signed/presigned link whose path ends in an opaque ID or token rather than the real file name (e.g. a Google Cloud Storage or S3 URL with a ?X-Goog-Signature=... query string), Slack can't infer the file type from it and will show the upload as an unreadable binary — set File Name explicitly in that case. See the documentation
  • Action
  • Writes data
  • OAuth
  • SDK
  • MCP

IMPLEMENTATION

Call this tool

Connect a user's Slack account once, then configure and run Upload File from your backend or agent.

import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "slack_v2-upload-file",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    slack_v2: { authProvisionId: "apn_xxxxxxx" },
    conversation: "Channel",
    content: "File Path or URL",
  },
})

console.log(result)

SCHEMA

Inputs

Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.

Upload File inputs
Property Type Description
conversation Channel string
Prefer a channel ID (e.g. C1234567890) — use List Channels to look it up; it resolves instantly. A channel NAME (e.g. general or #general) is also accepted, but resolving it scans up to 5 conversations.list pages (~5,000 channels), which is slow and, on large workspaces, can be rate-limited or fail with a ConfigurationError if the channel is beyond that bound — pass the ID whenever you have it. Depending on the action, this may also accept a user ID (opens a direct message) or a group DM ID — use Find User by Email / Find User by ID to resolve a user ID, or List Group Conversations for group DM IDs.
Required
content File Path or URL string
The file to upload. Provide either a file URL or a path to a file in the /tmp directory (for example, /tmp/myFile.txt). If the URL is a signed/presigned link (e.g. from Google Cloud Storage or S3), also set File Name — see this action's description for why.
Required
filename File Name string
The name to give the uploaded file, including its extension (e.g. myFile.pdf). Defaults to the source file's name. Set this when Content is a signed/presigned URL whose path doesn't end in the real file name — otherwise Slack stores the file under whatever opaque ID or token is in the URL and can't tell its type.
Optional
initialComment Initial Comment string
Message text to post alongside the file, introducing or describing it (e.g. Weekly sales report attached.).
Optional
syncDir SyncDir dir
Optional

REFERENCE

Tool details

Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.

Registry key
slack_v2-upload-file
Version
0.2.1
App
Slack
Authentication
OAuth
Read-only
No
Destructive
No
Open world
Yes