# Update Message — Slack

> Update a message. See the documentation

- Key: `slack_v2-update-message`
- Type: Action (Write)
- Version: 0.2.11
- App: Slack (`slack_v2`) — https://pipedream.com/apps/slack-v2.md
- This page (HTML): https://pipedream.com/apps/slack-v2/actions/update-message
- Hints: destructive · open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/slack_v2/actions/update-message/update-message.mjs

## Description

Update a message. [See the documentation](https://api.slack.com/methods/chat.update)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `conversation` | `string` | Yes | 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. |
| `timestamp` | `string` | Yes | Timestamp of a message. e.g. 1403051575.000407. |
| `text` | `string` | Yes | Text of the message to send (see Slack's formatting docs). This field is usually necessary, unless you're providing only attachments instead. To mention a user, use <@U123> with their user ID. Do NOT append a display name after a pipe: Slack renders <@U123\|Name> as literal text, not a mention. |
| `as_user` | `boolean` | No | Pass true to update the message as the authenticated user (bot users are treated as the authed user here too). Pass false (default) to update using the bot token instead. Slack only allows editing a message posted by the same identity now attempting the edit — check the message's user/bot_id via Get Channel History first if unsure. |
| `attachments` | `string` | No | A JSON-based array of structured attachments, presented as a URL-encoded string (e.g., [{"pretext": "pre-hello", "text": "text-world"}]). |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
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 accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "slack_v2",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "slack_v2-update-message",
  arguments: {
    conversation: "Channel",
    timestamp: "Message Timestamp",
  },
})
```

**TypeScript**

```ts
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-update-message",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    slack_v2: { authProvisionId: "apn_xxxxxxx" },
    conversation: "Channel",
    timestamp: "Message Timestamp",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "slack_v2-update-message",
    "configured_props": {
      "slack_v2": { "authProvisionId": "apn_xxxxxxx" },
      "conversation": "Channel",
      "timestamp": "Message Timestamp"
    }
  }'
```

---

- App: https://pipedream.com/apps/slack-v2.md · All apps: https://pipedream.com/apps
