# Update Topic — Hedy

> Updates properties of an existing Hedy topic. All fields are optional — only the fields you provide will be changed. To clear the custom AI context, pass an empty string or null for topicContext. Use Get Many Topics to find the topic ID…

- Key: `hedy-update-topic`
- Type: Action (Write)
- Version: 0.0.2
- App: Hedy (`hedy`) — https://pipedream.com/apps/hedy.md
- This page (HTML): https://pipedream.com/apps/hedy/actions/update-topic
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/hedy/actions/update-topic/update-topic.mjs

## Description

Updates properties of an existing Hedy topic. All fields are optional — only the fields you provide will be changed. To clear the custom AI context, pass an empty string or `null` for `topicContext`. Use **Get Many Topics** to find the topic ID. [See the documentation](https://app.swaggerhub.com/apis-docs/HedyAI/hedy-api/1.5.2#/Topics/patch_topics__topicId_)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `topicId` | `string` | Yes | The unique identifier of the topic (e.g., topic_5f8e9a). Use Get Many Topics to list available topic IDs. |
| `name` | `string` | No | New topic name (maximum 100 characters). |
| `description` | `string` | No | New topic description (maximum 500 characters). |
| `color` | `string` | No | New hex color code (e.g. #FF5722). |
| `iconName` | `string` | No | New icon identifier. |
| `topicContext` | `string` | No | New custom AI analysis instructions (maximum 20,000 characters). Pass an empty string to clear the existing context. |

## 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": "hedy",
      },
    },
  },
)

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: "hedy-update-topic",
  arguments: {
    topicId: "Topic ID",
    name: "Name",
  },
})
```

**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: "hedy-update-topic",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    hedy: { authProvisionId: "apn_xxxxxxx" },
    topicId: "Topic ID",
    name: "Name",
  },
})

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": "hedy-update-topic",
    "configured_props": {
      "hedy": { "authProvisionId": "apn_xxxxxxx" },
      "topicId": "Topic ID",
      "name": "Name"
    }
  }'
```

---

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